From 0b4381e42cc2d985ebc285ba8457cb6ea42c1942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Antonio=20Ram=C3=ADrez=20Galv=C3=A1n?= Date: Thu, 18 Jul 2024 15:38:21 -0600 Subject: [PATCH] se arreglo un error que no permitia crear los tickets con el tipo de ticket seleccionado --- .../gob/jumapacelaya/api/RedmineClient.java | 25 +++++++-------- .../mx/gob/jumapacelaya/models/JsonOrder.java | 4 ++- .../CrearnuevoTicketView.java | 31 +++++++++++-------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java b/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java index 64eb09a..88182c3 100644 --- a/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java +++ b/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java @@ -304,11 +304,6 @@ public class RedmineClient { } - - public String createIssue(Map issueDetails, String apiKey) { - return createIssue(issueDetails, null, null, null, apiKey); - } - public String createIssue(Map issueDetails, String fileUploadToken, String fileName, String contentType, String apiKey) { List uploads = new ArrayList<>(); if (fileUploadToken != null) { @@ -319,8 +314,9 @@ public class RedmineClient { issueDetails.get("project_id"), issueDetails.get("subject"), issueDetails.get("description"), - uploads - ); + uploads, + issueDetails.get("tracker_id") + ); JsonOrder order = new JsonOrder(issueDetail); @@ -347,9 +343,8 @@ public class RedmineClient { } - - public List getTicketTypes() { - List ticketTypes = new ArrayList<>(); + public Map getTicketTypes() { + Map ticketTypes = new HashMap<>(); HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(REDMINE_URL + "/trackers.json")) @@ -371,14 +366,16 @@ public class RedmineClient { } - private List parseTicketTypes(String json) { - List names = new ArrayList<>(); + private Map parseTicketTypes(String json) { + Map ticketMap = new HashMap<>(); JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject(); jsonObject.getAsJsonArray("trackers").forEach(trackerElement -> { JsonObject tracker = trackerElement.getAsJsonObject(); - names.add(tracker.get("name").getAsString()); + String name = tracker.get("name").getAsString(); + String id = tracker.get("id").getAsString(); + ticketMap.put(name, id); }); - return names; + return ticketMap; } diff --git a/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java b/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java index 8f6e104..68e1376 100644 --- a/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java +++ b/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java @@ -21,12 +21,14 @@ public class JsonOrder { private String description; @SerializedName("uploads") private List uploads; + private String tracker_id; - public IssueDetails(String projectId, String subject, String description, List uploads) { + public IssueDetails(String projectId, String subject, String description, List uploads, String tracker_id) { this.projectId = projectId; this.subject = subject; this.description = description; this.uploads = uploads; + this.tracker_id = tracker_id; } } diff --git a/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java b/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java index 9f3a95d..c60a24a 100644 --- a/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java +++ b/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java @@ -26,7 +26,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; -import java.util.List; import java.util.Map; import static org.atmosphere.annotation.AnnotationUtil.logger; @@ -36,27 +35,27 @@ import static org.atmosphere.annotation.AnnotationUtil.logger; @PageTitle("Nuevo ticket") public class CrearnuevoTicketView extends VerticalLayout { - private final RedmineClient api; // Definir el campo final para el RedmineClient + private final RedmineClient api; private final UserService userService; private MemoryBuffer buffer; private Upload uploadFile; private String fileUploadToken; + private String selectedTrackerId; - // Inyectar el RedmineClient a través del constructor public CrearnuevoTicketView(RedmineClient api, UserService service) { - this.api = api; // Asignar el RedmineClient inyectado al campo de la clase + this.api = api; this.userService = service; - // Obtener la URL de Redmine, apiKey y username desde las propiedades del servidor RedmineUser user = userService.getRedmineUser(); - //String apiKey = (String) VaadinService.getCurrentRequest().getWrappedSession().getAttribute("apiKey"); - //String username = (String) VaadinService.getCurrentRequest().getWrappedSession().getAttribute("username"); - - // Combo de los tipos de tickets + // ComboBox para los tipos de tickets ComboBox tipoTickets = new ComboBox<>("Tipo de ticket"); - List types = api.getTicketTypes(); // Llamar al método sin pasar apiKey - tipoTickets.setItems(types); + Map ticketTypesMap = api.getTicketTypes(); + tipoTickets.setItems(ticketTypesMap.keySet()); + tipoTickets.addValueChangeListener(event -> { + String selectedName = event.getValue(); + selectedTrackerId = ticketTypesMap.get(selectedName); + }); // Campo de texto para el asunto TextField asunto = new TextField("Asunto"); @@ -80,7 +79,6 @@ public class CrearnuevoTicketView extends VerticalLayout { if (fileName != null && inputStream != null) { try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - // Lee los bytes del archivo byte[] bufferArray = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(bufferArray)) != -1) { @@ -112,10 +110,18 @@ public class CrearnuevoTicketView extends VerticalLayout { return; } + // Obtener el tipo de ticket seleccionado + if (selectedTrackerId == null) { + Notification.show("Por favor seleccione un tipo de ticket.", 3000, Notification.Position.MIDDLE) + .addThemeVariants(NotificationVariant.LUMO_WARNING); + return; + } + Map issueDetails = new HashMap<>(); issueDetails.put("project_id", "soporte-tecnico-t-i"); issueDetails.put("subject", asunto.getValue()); issueDetails.put("description", descripcion.getValue()); + issueDetails.put("tracker_id", selectedTrackerId); // Añadir el tracker_id String fileUploadToken = null; String fileName = null; @@ -146,7 +152,6 @@ public class CrearnuevoTicketView extends VerticalLayout { buttonLayout.setMargin(true); add(new H2("Crear nuevo ticket"), firstFields, fieldsLayout, buttonLayout); - //this.userService = userService; } private void handleResponse(String response, TextField asunto, TextArea descripcion, ComboBox tipoTickets) {