Browse Source

Se agrego otro campo mas para especificar el area del creador del ticket y este valor se concatena en la descripcion del ticket

pull/1/head
mramirezg 6 months ago
parent
commit
e4d9242b56
4 changed files with 33 additions and 17 deletions
  1. +1
    -1
      pom.xml
  2. BIN
      src/main/bundles/prod.bundle
  3. +30
    -14
      src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java
  4. +2
    -2
      src/main/resources/application.properties

+ 1
- 1
pom.xml View File

@ -6,7 +6,7 @@
<groupId>com.example.application</groupId> <groupId>com.example.application</groupId>
<artifactId>soportet.iv1.2</artifactId> <artifactId>soportet.iv1.2</artifactId>
<name>soportet.iv1.2</name> <name>soportet.iv1.2</name>
<version>1.0-SNAPSHOT</version>
<version>2.5-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<properties> <properties>


BIN
src/main/bundles/prod.bundle View File


+ 30
- 14
src/main/java/mx/gob/jumapacelaya/views/crearnuevoticket/CrearnuevoTicketView.java View File

@ -60,18 +60,21 @@ public class CrearnuevoTicketView extends VerticalLayout {
//Componentes principales de la UI //Componentes principales de la UI
ComboBox<String> tipoTickets = createTicketTypeComboBox(); ComboBox<String> 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 // Marcar campos como obligatorios
tipoTickets.setRequiredIndicatorVisible(true); tipoTickets.setRequiredIndicatorVisible(true);
asunto.setRequiredIndicatorVisible(true); asunto.setRequiredIndicatorVisible(true);
area.setRequiredIndicatorVisible(true);
area.setPlaceholder("Dinos a que área perteneces para poder ubicarte más pronto!!");
descripcion.setRequiredIndicatorVisible(true); descripcion.setRequiredIndicatorVisible(true);
uploadFile.addSucceededListener(event -> handleFileUpload(event.getFileName())); uploadFile.addSucceededListener(event -> handleFileUpload(event.getFileName()));
//Configuracion del Boton //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); createButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY, ButtonVariant.LUMO_LARGE);
uploadFile.addSucceededListener(event -> { 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 //Alineacion de los componentes ComboBox Tipos de tickets y Descripcion del tipo de ticket
HorizontalLayout firstFields = new HorizontalLayout(tipoTickets, ticketTypeDesc); 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); 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() { private Upload createUploadComponent() {
@ -169,13 +176,13 @@ public class CrearnuevoTicketView extends VerticalLayout {
return tipoTickets; return tipoTickets;
} }
private TextField createTextField(String label, String width) {
private TextField createTextField(String label) {
TextField textField = new TextField(label); TextField textField = new TextField(label);
textField.setSizeFull(); textField.setSizeFull();
return textField; return textField;
} }
private RichTextEditor createTextArea(String label, String width, String height) {
private RichTextEditor createTextArea(String label) {
RichTextEditor textArea = new RichTextEditor(); RichTextEditor textArea = new RichTextEditor();
textArea.setSizeFull(); textArea.setSizeFull();
textArea.setMaxHeight("200px"); textArea.setMaxHeight("200px");
@ -198,7 +205,7 @@ public class CrearnuevoTicketView extends VerticalLayout {
} }
} }
private void handleCreateButton(RedmineUser user, ComboBox<String> tipoTickets, TextField asunto, RichTextEditor descripcion) {
private void handleCreateButton(RedmineUser user, ComboBox<String> tipoTickets, TextField asunto, TextField area, RichTextEditor descripcion) {
if (user.getKey() == null || user.getKey().isEmpty()) { if (user.getKey() == null || user.getKey().isEmpty()) {
Notification.show("No se encontró la API key en la sesión.", 5000, Notification.Position.MIDDLE) Notification.show("No se encontró la API key en la sesión.", 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR); .addThemeVariants(NotificationVariant.LUMO_ERROR);
@ -223,10 +230,18 @@ public class CrearnuevoTicketView extends VerticalLayout {
return; return;
} }
if (area.isEmpty()) {
Notification.show("Especifica tu área, por favor!!", 3000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_WARNING);
return;
}
Map<String, String> issueDetails = new HashMap<>(); Map<String, String> issueDetails = new HashMap<>();
issueDetails.put("project_id", "soporte-tecnico-t-i"); issueDetails.put("project_id", "soporte-tecnico-t-i");
issueDetails.put("subject", asunto.getValue()); 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); issueDetails.put("tracker_id", selectedTrackerId);
JsonArray uploadsJsonArray = new JsonArray(); JsonArray uploadsJsonArray = new JsonArray();
@ -248,24 +263,25 @@ public class CrearnuevoTicketView extends VerticalLayout {
} }
String response = api.createIssue(issueDetails, uploadsJsonArray, user.getKey()); 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<String> tipoTickets) {
private void handleResponse(String response, TextField asunto, TextField area, RichTextEditor descripcion, ComboBox<String> tipoTickets) {
if (response.startsWith("{\"issue\":")) { if (response.startsWith("{\"issue\":")) {
JsonObject jsonResponse = JsonParser.parseString(response).getAsJsonObject(); JsonObject jsonResponse = JsonParser.parseString(response).getAsJsonObject();
int issueNumber = jsonResponse.getAsJsonObject("issue").get("id").getAsInt(); int issueNumber = jsonResponse.getAsJsonObject("issue").get("id").getAsInt();
Notification.show("Su ticket se ha enviado correctamente! Numero de ticket: #" + issueNumber, 5000, Notification.Position.MIDDLE) Notification.show("Su ticket se ha enviado correctamente! Numero de ticket: #" + issueNumber, 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_SUCCESS); .addThemeVariants(NotificationVariant.LUMO_SUCCESS);
resetForm(asunto, descripcion, tipoTickets);
resetForm(asunto, area, descripcion, tipoTickets);
} else { } else {
Notification.show("Error al crear el ticket: " + response, 5000, Notification.Position.MIDDLE) Notification.show("Error al crear el ticket: " + response, 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR); .addThemeVariants(NotificationVariant.LUMO_ERROR);
} }
} }
private void resetForm(TextField asunto, RichTextEditor descripcion, ComboBox<String> tipoTickets) {
private void resetForm(TextField asunto, TextField area, RichTextEditor descripcion, ComboBox<String> tipoTickets) {
asunto.clear(); asunto.clear();
area.clear();
descripcion.clear(); descripcion.clear();
tipoTickets.clear(); tipoTickets.clear();
ticketTypeDesc.setText(""); ticketTypeDesc.setText("");


+ 2
- 2
src/main/resources/application.properties View File

@ -23,8 +23,8 @@ redmine.api_key=98158784609a110b3f9e837ac961d73b9ec58271
########LOCAL###################################### ########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### ###CONFIGURACION DEL TAMANO MAXIMO PERMITIDO PARA ARCHIVOS###


Loading…
Cancel
Save