diff --git a/pom.xml b/pom.xml index 18d76a9..3ffc548 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.example.application soportet.iv1.2 soportet.iv1.2 - 1.0-SNAPSHOT + 2.5-SNAPSHOT jar diff --git a/src/main/bundles/prod.bundle b/src/main/bundles/prod.bundle index 76c1473..e8c7455 100644 Binary files a/src/main/bundles/prod.bundle and b/src/main/bundles/prod.bundle differ 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 e036dd2..56fbf64 100644 --- a/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java +++ b/src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java @@ -60,18 +60,21 @@ public class CrearnuevoTicketView extends VerticalLayout { //Componentes principales de la UI ComboBox tipoTickets = createTicketTypeComboBox(); - TextField asunto = createTextField("Asunto", "1000px"); - RichTextEditor descripcion = createTextArea("Descripcion", "1000px", "250px"); + TextField asunto = createTextField("Asunto"); + TextField area = createTextField("Area"); + RichTextEditor descripcion = createTextArea("Descripcion"); // Marcar campos como obligatorios tipoTickets.setRequiredIndicatorVisible(true); asunto.setRequiredIndicatorVisible(true); + area.setRequiredIndicatorVisible(true); + area.setPlaceholder("Dinos a que área perteneces para poder ubicarte más pronto!!"); descripcion.setRequiredIndicatorVisible(true); uploadFile.addSucceededListener(event -> handleFileUpload(event.getFileName())); //Configuracion del Boton - Button createButton = new Button("Enviar ticket", event -> handleCreateButton(user, tipoTickets, asunto, descripcion)); + Button createButton = new Button("Enviar ticket", event -> handleCreateButton(user, tipoTickets, asunto, area, descripcion)); createButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY, ButtonVariant.LUMO_LARGE); uploadFile.addSucceededListener(event -> { @@ -95,9 +98,12 @@ public class CrearnuevoTicketView extends VerticalLayout { //Alineacion de los componentes ComboBox Tipos de tickets y Descripcion del tipo de ticket HorizontalLayout firstFields = new HorizontalLayout(tipoTickets, ticketTypeDesc); + // Alineacion de los campos para el asunto y el autor + HorizontalLayout secondFields = new HorizontalLayout(asunto, area); + secondFields.setSizeFull(); - //Alineacion de los componentes de asunto y descripcion - VerticalLayout fieldsLayout = new VerticalLayout(asunto, descripcion); + //Alineacion de los componentes de descripcion + VerticalLayout fieldsLayout = new VerticalLayout(descripcion); fieldsLayout.setAlignItems(Alignment.START); @@ -115,7 +121,8 @@ public class CrearnuevoTicketView extends VerticalLayout { - add(new H2("Crear nuevo ticket"), firstFields, fieldsLayout, buttonLayout); + // Agregar layouts a la interfaz de usuario + add(new H2("Crear nuevo ticket"), firstFields, secondFields, fieldsLayout, buttonLayout); } private Upload createUploadComponent() { @@ -169,13 +176,13 @@ public class CrearnuevoTicketView extends VerticalLayout { return tipoTickets; } - private TextField createTextField(String label, String width) { + private TextField createTextField(String label) { TextField textField = new TextField(label); textField.setSizeFull(); return textField; } - private RichTextEditor createTextArea(String label, String width, String height) { + private RichTextEditor createTextArea(String label) { RichTextEditor textArea = new RichTextEditor(); textArea.setSizeFull(); textArea.setMaxHeight("200px"); @@ -198,7 +205,7 @@ public class CrearnuevoTicketView extends VerticalLayout { } } - private void handleCreateButton(RedmineUser user, ComboBox tipoTickets, TextField asunto, RichTextEditor descripcion) { + private void handleCreateButton(RedmineUser user, ComboBox tipoTickets, TextField asunto, TextField area, RichTextEditor descripcion) { if (user.getKey() == null || user.getKey().isEmpty()) { Notification.show("No se encontró la API key en la sesión.", 5000, Notification.Position.MIDDLE) .addThemeVariants(NotificationVariant.LUMO_ERROR); @@ -223,10 +230,18 @@ public class CrearnuevoTicketView extends VerticalLayout { return; } + if (area.isEmpty()) { + Notification.show("Especifica tu área, por favor!!", 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()); + String areaValue = area.getValue().trim(); + String descriptionCompleta = descripcion.getValue() + ("Area: " + areaValue + "\n\n"); // Concatenamos el valor del campo Area a la descripcion del ticket + issueDetails.put("description", descriptionCompleta); issueDetails.put("tracker_id", selectedTrackerId); JsonArray uploadsJsonArray = new JsonArray(); @@ -248,24 +263,25 @@ public class CrearnuevoTicketView extends VerticalLayout { } String response = api.createIssue(issueDetails, uploadsJsonArray, user.getKey()); - handleResponse(response, asunto, descripcion, tipoTickets); + handleResponse(response, asunto, area, descripcion, tipoTickets); } - private void handleResponse(String response, TextField asunto, RichTextEditor descripcion, ComboBox tipoTickets) { + private void handleResponse(String response, TextField asunto, TextField area, RichTextEditor descripcion, ComboBox tipoTickets) { if (response.startsWith("{\"issue\":")) { JsonObject jsonResponse = JsonParser.parseString(response).getAsJsonObject(); int issueNumber = jsonResponse.getAsJsonObject("issue").get("id").getAsInt(); Notification.show("Su ticket se ha enviado correctamente! Numero de ticket: #" + issueNumber, 5000, Notification.Position.MIDDLE) .addThemeVariants(NotificationVariant.LUMO_SUCCESS); - resetForm(asunto, descripcion, tipoTickets); + resetForm(asunto, area, descripcion, tipoTickets); } else { Notification.show("Error al crear el ticket: " + response, 5000, Notification.Position.MIDDLE) .addThemeVariants(NotificationVariant.LUMO_ERROR); } } - private void resetForm(TextField asunto, RichTextEditor descripcion, ComboBox tipoTickets) { + private void resetForm(TextField asunto, TextField area, RichTextEditor descripcion, ComboBox tipoTickets) { asunto.clear(); + area.clear(); descripcion.clear(); tipoTickets.clear(); ticketTypeDesc.setText(""); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e701bb6..641cdb6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -23,8 +23,8 @@ redmine.api_key=98158784609a110b3f9e837ac961d73b9ec58271 ########LOCAL###################################### -#redmine.url=http://localhost:10083 -#redmine.api_key=69b347fdfbf01bb60a10ea6daa92eb86acd10e3b +#redmine.url=http://localhost:8200 +#redmine.api_key=66f15c8ee2c8d587966e1836fede5f1eec35a605 ###CONFIGURACION DEL TAMANO MAXIMO PERMITIDO PARA ARCHIVOS###