diff --git a/src/main/bundles/prod.bundle b/src/main/bundles/prod.bundle index 6f55075..2a81869 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/models/encuestas/MantenimientosSinEncuesta.java b/src/main/java/mx/gob/jumapacelaya/models/encuestas/MantenimientosSinEncuesta.java index e6158bc..52226e9 100644 --- a/src/main/java/mx/gob/jumapacelaya/models/encuestas/MantenimientosSinEncuesta.java +++ b/src/main/java/mx/gob/jumapacelaya/models/encuestas/MantenimientosSinEncuesta.java @@ -12,10 +12,11 @@ public class MantenimientosSinEncuesta { private String nomUsuario; private String email; private String encuesta; + private boolean tieneToken; public MantenimientosSinEncuesta(int mantenimientoId, int planId, LocalDate fecha, String periodo, String tipomant, String departamento, - String nomUsuario, String email, String encuesta) { + String nomUsuario, String email, String encuesta, boolean tieneToken) { this.mantenimientoId = mantenimientoId; this.planId = planId; @@ -26,6 +27,7 @@ public class MantenimientosSinEncuesta { this.nomUsuario = nomUsuario; this.email = email; this.encuesta = encuesta; + this.tieneToken = tieneToken; } public int getMantenimientoId() { @@ -99,4 +101,12 @@ public class MantenimientosSinEncuesta { public void setEncuesta(String encuesta) { this.encuesta = encuesta; } + + public boolean isTieneToken() { + return tieneToken; + } + + public void setTieneToken(boolean tieneToken) { + this.tieneToken = tieneToken; + } } diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index 068d185..62f639b 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -319,7 +319,7 @@ public class DatabaseService { public List getEncuestPendientes(String mes, int anio) { List lista = new ArrayList<>(); String query = """ - SELECT + SELECT DISTINCT m.MANTENIMIENTOID MANTID, m.PLANANUALID PLANID, m.FECHA, @@ -328,7 +328,8 @@ public class DatabaseService { d.DESCRIPCION DEPTO, u.NOMBRE NOMUSUARIO, u.EMAIL, - m.ENCUESTA + m.ENCUESTA, + CASE WHEN e.TOKEN IS NOT NULL THEN 1 ELSE 0 END AS TIENE_TOKEN FROM MANTENIMIENTOS m JOIN TIPOMANT t ON t.TIPOMANTID = m.TIPOMANTID @@ -340,8 +341,10 @@ public class DatabaseService { ON p.PLANANUALID = m.PLANANUALID JOIN MESES ms ON ms.MESID = p.MESID - WHERE m.ENCUESTA = 'N' - AND m.TIPOMANTID = 1 + LEFT JOIN ENCUESTATOKENS e + ON e.MANTENIMIENTOID = m.MANTENIMIENTOID + WHERE + m.TIPOMANTID = 1 AND m.PLANANUALID IS NOT NULL AND UPPER(ms.NOMBRE) = UPPER(?) AND EXTRACT(YEAR FROM m.FECHA) = ? @@ -365,7 +368,8 @@ public class DatabaseService { rs.getString("DEPTO"), rs.getString("NOMUSUARIO"), rs.getString("EMAIL"), - rs.getString("ENCUESTA") + rs.getString("ENCUESTA"), + rs.getBoolean("TIENE_TOKEN") )); } } catch (SQLException e) { @@ -1098,8 +1102,8 @@ public class DatabaseService { String query = "SELECT * FROM VW_CONTEO_RESPUESTAS"; try (Connection conn = getMysqlConnection(); - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(query)) { + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(query)) { while (rs.next()) { ConteoRespuestas conteo = new ConteoRespuestas( diff --git a/src/main/java/mx/gob/jumapacelaya/ui/MainLayout.java b/src/main/java/mx/gob/jumapacelaya/ui/MainLayout.java index b6eb979..0663d18 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/MainLayout.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/MainLayout.java @@ -93,7 +93,7 @@ public class MainLayout extends AppLayout implements BeforeEnterObserver { nav.addItem(new SideNavItem("Plan Anual", PlanAnualView.class, VaadinIcon.CALENDAR.create())); nav.addItem(new SideNavItem("Listado de Actividades", ActDiariaView.class, VaadinIcon.EDIT.create())); nav.addItem(new SideNavItem("Mantenimiento Correctivo", MantCorrectivoView.class, VaadinIcon.WRENCH.create())); - nav.addItem(new SideNavItem("Resultados de Encuestas", ResultEncuestasView.class, VaadinIcon.CLIPBOARD_TEXT.create())); + nav.addItem(new SideNavItem("Resultados de Encuestas", ResultEncuestasView.class, VaadinIcon.BAR_CHART_H.create())); nav.addItem(new SideNavItem("Preferencias del Sistema", ConfiguracionView.class, VaadinIcon.COG.create())); nav.getStyle().set("border-radius", "5px"); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java index 0667bec..4eda038 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java @@ -1095,8 +1095,11 @@ public class PlanAnualView extends VerticalLayout { grid.addColumn(createStatusRender()) .setHeader("Encuesta"); - grid.addColumn(MantenimientosSinEncuesta::getDepartamento) - .setHeader("Departamento"); + grid.addColumn(createTokenRender()) + .setHeader("Token"); + + /*grid.addColumn(MantenimientosSinEncuesta::getDepartamento) + .setHeader("Departamento");*/ grid.addColumn(MantenimientosSinEncuesta::getNomUsuario) .setHeader("Usuario") @@ -1114,6 +1117,11 @@ public class PlanAnualView extends VerticalLayout { btnEnviar.addThemeVariants(ButtonVariant.LUMO_PRIMARY, ButtonVariant.LUMO_SUCCESS); + if (item.isTieneToken()) { + btnEnviar.setEnabled(false); + btnEnviar.setText("Enviado"); + } + btnEnviar.addClickListener(e -> { enviarEncuestaDesdeGrid(item); btnEnviar.setEnabled(false); @@ -1191,4 +1199,22 @@ public class PlanAnualView extends VerticalLayout { return span; }); } + + private ComponentRenderer createTokenRender() { + return new ComponentRenderer<>(token -> { + Span span = new Span(String.valueOf(token.isTieneToken())); + + if (token.isTieneToken()) { + span.setText("S"); + String theme2 = String.format("badge %s", "success"); + span.getElement().setAttribute("theme", theme2); + } else { + span.setText("N"); + String theme1 = String.format("badge %s", "error"); + span.getElement().setAttribute("theme", theme1); + } + + return span; + }); + } }