Browse Source

Se corrigio un error que impedia que se mostraran los tickets en las vista de mis tickets y de todos los tickets

pull/1/head
parent
commit
9143f3f71c
2 changed files with 47 additions and 24 deletions
  1. +30
    -10
      src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java
  2. +17
    -14
      src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java

+ 30
- 10
src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java View File

@ -109,7 +109,7 @@ public class RedmineClient {
return tickets;
}
//Aqui se parsean todos los tickets que existen y se les da un formato con los campos a mostrarse
// Aquí se parsean todos los tickets que existen y se les da un formato con los campos a mostrarse
private List<Ticket> parseTickets(String json) {
List<Ticket> tickets = new ArrayList<>();
try {
@ -118,12 +118,27 @@ public class RedmineClient {
if (issues != null) {
for (JsonElement issueElement : issues) {
JsonObject issue = issueElement.getAsJsonObject();
int id = issue.has("id") ? issue.get("id").getAsInt() : 0;
String subject = issue.has("subject") ? issue.get("subject").getAsString() : "";
String description = issue.has("description") ? issue.get("description").getAsString() : "";
String status = issue.has("status") ? issue.getAsJsonObject("status").get("name").getAsString() : "Unknown";
String dateString = issue.has("created_on") ? issue.get("created_on").getAsString() : "";
// Verifica y obtiene el ID
int id = issue.has("id") && !issue.get("id").isJsonNull() ? issue.get("id").getAsInt() : 0;
// Verifica y obtiene el subject
String subject = issue.has("subject") && !issue.get("subject").isJsonNull() ? issue.get("subject").getAsString() : "";
// Verifica y obtiene la descripción
String description = issue.has("description") && !issue.get("description").isJsonNull() ? issue.get("description").getAsString() : "";
// Verifica y obtiene el status
String status = "Unknown";
if (issue.has("status") && !issue.get("status").isJsonNull()) {
JsonObject statusObject = issue.getAsJsonObject("status");
if (statusObject.has("name") && !statusObject.get("name").isJsonNull()) {
status = statusObject.get("name").getAsString();
}
}
// Verifica y obtiene la fecha de creación
String dateString = issue.has("created_on") && !issue.get("created_on").isJsonNull() ? issue.get("created_on").getAsString() : "";
LocalDate date = null;
if (!dateString.isEmpty()) {
try {
@ -135,13 +150,17 @@ public class RedmineClient {
}
}
JsonObject authorJson = issue.has("author") ? issue.getAsJsonObject("author") : null;
// Verifica y obtiene el autor
Ticket.User author = null;
if (authorJson != null) {
String username = authorJson.has("name") ? authorJson.get("name").getAsString() : "Unknown";
author = new Ticket.User(username);
if (issue.has("author") && !issue.get("author").isJsonNull()) {
JsonObject authorJson = issue.getAsJsonObject("author");
if (authorJson.has("name") && !authorJson.get("name").isJsonNull()) {
String username = authorJson.get("name").getAsString();
author = new Ticket.User(username);
}
}
// Agrega el ticket a la lista
tickets.add(new Ticket(id, subject, description, status, date != null ? date.toString() : "", author));
}
} else {
@ -156,6 +175,7 @@ public class RedmineClient {
private static class TicketResponse {
private List<Ticket> issues;


+ 17
- 14
src/main/java/mx/gob/jumapacelaya/views/tickets/MisTicketsView.java View File

@ -32,7 +32,6 @@ public class MisTicketsView extends VerticalLayout {
public MisTicketsView(ServerPrpperties prpperties, RedmineClient redmineClient, UserService userService) {
this.userService = userService;
this.redmineClient = redmineClient;
//this.redmineClient = new RedmineClient(prpperties.REDMINE_URL, prpperties.API_KEY);
this.grid = new Grid<>(Ticket.class, false);
// Configuración de columnas del grid
@ -44,21 +43,12 @@ public class MisTicketsView extends VerticalLayout {
grid.addColumn(createStatusRender()).setHeader("Estado");
grid.addColumn(ticket -> {
Date date = ticket.getDateCreate();
if (date != null) {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
return formatter.format(date);
} else {
return "";
}
}).setHeader("Fecha creacion");
grid.addColumn(ticket -> formatDate(ticket.getDateCreate())).setHeader("Fecha creación");
grid.addColumn(Ticket::getDescription).setHeader("Descripcion").setWidth("25em");
grid.addColumn(Ticket::getDescription).setHeader("Descripción").setWidth("25em");
grid.addThemeVariants(GridVariant.LUMO_WRAP_CELL_CONTENT);
// Ajustar tamaño del Grid y Layout
grid.setSizeFull();
setSizeFull();
@ -73,8 +63,21 @@ public class MisTicketsView extends VerticalLayout {
}
private void loadTickets() {
List<Ticket> tickets = redmineClient.getTicketsAuthor(userService.getRedmineUser());
grid.setItems(tickets);
try {
List<Ticket> tickets = redmineClient.getTicketsAuthor(userService.getRedmineUser());
grid.setItems(tickets);
} catch (Exception e) {
e.printStackTrace();
// Manejo de error al cargar los tickets
}
}
private String formatDate(Date date) {
if (date != null) {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
return formatter.format(date);
}
return "";
}
private ComponentRenderer<Span, Ticket> createStatusRender() {


Loading…
Cancel
Save