diff --git a/src/main/bundles/dev.bundle b/src/main/bundles/dev.bundle index 1c0b2fe..4d9b9ce 100644 Binary files a/src/main/bundles/dev.bundle and b/src/main/bundles/dev.bundle differ diff --git a/src/main/bundles/prod.bundle b/src/main/bundles/prod.bundle deleted file mode 100644 index d795b1a..0000000 Binary files a/src/main/bundles/prod.bundle and /dev/null differ diff --git a/src/main/frontend/themes/sistema-mantenimiento/styles.css b/src/main/frontend/themes/sistema-mantenimiento/styles.css index be12313..69e96c4 100644 --- a/src/main/frontend/themes/sistema-mantenimiento/styles.css +++ b/src/main/frontend/themes/sistema-mantenimiento/styles.css @@ -115,6 +115,29 @@ vaadin-month-calendar::part(date) { color: #691b31; /* Color para los dias del calendario */ } +vaadin-button { + border-radius: 10px; + overflow: hidden; + box-shadow: 0 4px 8px rgba(105, 27, 49, 0.28), 0 2px 8px rgba(0, 0, 0, 0.13); + transition: box-shadow 0.2s, border 0.2s; +} + +vaadin-button::after { + content: ""; + position: absolute; + inset: 0; + background: rgba(240,223,223,0.2); + opacity: 0; + transition: opacity 0.2s; + pointer-events: none; +} + +vaadin-button:hover::after { + box-shadow: 0 16px 36px rgba(105,27,49,0.35), 0 4px 16px rgba(0,0,0,0.18); + border-color: #BC955B; + opacity: 1; +} + vaadin-month-calendar::part(date):hover /* Estilos para cuando se posiciona el puntero sobre el dia */{ background-color: #a02142; opacity: 50%; diff --git a/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java b/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java index 0e9736e..269869d 100644 --- a/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java +++ b/src/main/java/mx/gob/jumapacelaya/models/PlanAnual.java @@ -21,13 +21,15 @@ public class PlanAnual { private String smt; private String estado; private String situacion; + private String encuesta; // Constructor public PlanAnual(int numero, String nomEquipo, String departamento, boolean monitor, boolean teclado, boolean mouse, boolean regulador, boolean cpu, boolean impresora, boolean miniPrint, boolean laptop, boolean escaner, LocalDate fechaProgramada, - LocalDate fechaMantenimiento, String mesplaneado, String smt, String estado, String situacion) { + LocalDate fechaMantenimiento, String mesplaneado, String smt, String estado, String situacion, + String encuesta) { this.numero = numero; this.nomEquipo = nomEquipo; @@ -47,6 +49,7 @@ public class PlanAnual { this.smt = smt; this.estado = estado; this.situacion = situacion; + this.encuesta = encuesta; } // Getters @@ -142,4 +145,12 @@ public class PlanAnual { public void setSituacion(String situacion) { this.situacion = situacion; } + + public String getEncuesta() { + return encuesta; + } + + public void setEncuesta(String encuesta) { + this.encuesta = encuesta; + } } diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index 5227ef6..09574d9 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -162,17 +162,20 @@ public class DatabaseService { /* ----------------Obtener el Plan Anual de Mantenimiento ---------------- */ public List getPlanAnual() { List planAnualList = new ArrayList<>(); - String query = "SELECT p.plananualid, p.nomEquipo, p.area,\n" + - " p.monitor, p.teclado, p.mouse, p.regulador,\n" + - " p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner,\n" + - " p.fechaprog, m.fecha AS fechaMantenimiento,\n" + - " me.NOMBRE AS MESPLANEADO, p.tecnicosmt, p.estado,\n" + - " COALESCE(v.SITUACION, 'NO REALIZADO') AS SITUACION\n" + - " FROM PLANANUAL p\n" + - " LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid\n" + - " LEFT JOIN MESES me ON p.MESID = me.MESID\n" + - " LEFT JOIN VW_SITUACION_MANTENIMIENTO v ON v.PLANANUALID = p.PLANANUALID\n" + - " ORDER BY p.FECHAPROG ASC"; + String query = """ + SELECT p.plananualid, p.nomEquipo, p.area, + p.monitor, p.teclado, p.mouse, p.regulador, + p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner, + p.fechaprog, m.fecha AS fechaMantenimiento, + me.NOMBRE AS MESPLANEADO, p.tecnicosmt, p.estado, + COALESCE(v.SITUACION, 'NO REALIZADO') AS SITUACION, + m.ENCUESTA\s + FROM PLANANUAL p + LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid + LEFT JOIN MESES me ON p.MESID = me.MESID + LEFT JOIN VW_SITUACION_MANTENIMIENTO v ON v.PLANANUALID = p.PLANANUALID + ORDER BY p.FECHAPROG ASC + """; try (Connection connection = getMysqlConnection(); Statement statement = connection.createStatement(); @@ -197,7 +200,8 @@ public class DatabaseService { resultSet.getString("mesplaneado"), resultSet.getString("tecnicosmt"), resultSet.getString("estado"), - resultSet.getString("SITUACION") + resultSet.getString("SITUACION"), + resultSet.getString("ENCUESTA") == null ? "N/A" : resultSet.getString("ENCUESTA") ); planAnualList.add(planAnual); } @@ -211,17 +215,20 @@ public class DatabaseService { /* ----------------Obtener el Plan Anual de Mantenimiento por ID ---------------- */ public PlanAnual getPlanAnualPorId(int id) { - String query = "SELECT p.plananualid, p.nomEquipo, p.area,\n" + - " p.monitor, p.teclado, p.mouse, p.regulador,\n" + - " p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner,\n" + - " p.fechaprog, m.fecha AS fechaMantenimiento,\n" + - " me.NOMBRE AS MESPLANEADO, p.tecnicosmt, p.estado,\n" + - " COALESCE(v.SITUACION, 'NO REALIZADO') AS SITUACION\n" + - " FROM PLANANUAL p\n" + - " LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid\n" + - " LEFT JOIN MESES me ON p.MESID = me.MESID\n" + - " LEFT JOIN VW_SITUACION_MANTENIMIENTO v ON v.PLANANUALID = p.PLANANUALID\n" + - " where p.plananualid = ?"; + String query = """ + SELECT p.plananualid, p.nomEquipo, p.area, + p.monitor, p.teclado, p.mouse, p.regulador, + p.cpu, p.impresora, p.miniPrint, p.laptop, p.escaner, + p.fechaprog, m.fecha AS fechaMantenimiento, + me.NOMBRE AS MESPLANEADO, p.tecnicosmt, p.estado, + COALESCE(v.SITUACION, 'NO REALIZADO') AS SITUACION, + m.ENCUESTA + FROM PLANANUAL p + LEFT JOIN MANTENIMIENTOS m ON p.plananualid = m.plananualid + LEFT JOIN MESES me ON p.MESID = me.MESID + LEFT JOIN VW_SITUACION_MANTENIMIENTO v ON v.PLANANUALID = p.PLANANUALID + WHERE p.plananualid = ? + """; try (Connection connection = getMysqlConnection(); PreparedStatement statement = connection.prepareStatement(query)) { @@ -246,7 +253,8 @@ public class DatabaseService { resultSet.getString("mesplaneado"), resultSet.getString("tecnicosmt"), resultSet.getString("estado"), - resultSet.getString("SITUACION") + resultSet.getString("SITUACION"), + resultSet.getString("encuesta") ); } } diff --git a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java index 6d8f816..388662f 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java @@ -201,7 +201,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser HorizontalLayout botonesHeaderLyt = new HorizontalLayout(); botonesHeaderLyt.setWidthFull(); - botonesHeaderLyt.add(btnImprimirRepo,btnEnviarEncuesta); + botonesHeaderLyt.add(btnImprimirRepo); HorizontalLayout botonesLayout = new HorizontalLayout(); botonesLayout.setWidthFull(); diff --git a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java index b27b695..db78c42 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java @@ -82,6 +82,7 @@ public class PlanAnualView extends VerticalLayout { Button btnColumns; Button btnImprimirRpt; Button btnAddEquipo; + Button btnEnviarEncuestas; HorizontalLayout btnImprimirLayout; private Popover reportePopover; @@ -218,7 +219,8 @@ public class PlanAnualView extends VerticalLayout { this.setMargin(false); this.setSpacing(false); this.setSizeFull(); - add(filtrosLayout, gridLayout, uploadLayout); + add(filtrosLayout, uploadLayout); + add(gridLayout); } private void setupHeader() { @@ -318,6 +320,9 @@ public class PlanAnualView extends VerticalLayout { planAnualGrid.addColumn((ValueProvider) PlanAnual::getSituacion) .setHeader("Situación").setAutoWidth(true).setKey("situacion"); + planAnualGrid.addColumn((ValueProvider) PlanAnual::getEncuesta) + .setHeader("Encuesta").setAutoWidth(true).setKey("encuesta"); + /*planAnualGrid.addColumn((ValueProvider) PlanAnual::getSmt) .setHeader("S.M.T").setKey("smtColumnKey");*/ @@ -349,8 +354,17 @@ public class PlanAnualView extends VerticalLayout { btnAddEquipo.addClickListener(event -> addNuevoEquipo()); btnAddEquipo.setTooltipText("Agregar nuevo equipo"); - btnImprimirLayout = new HorizontalLayout(btnColumns, btnImprimirRpt, btnAddEquipo); - + btnEnviarEncuestas = new Button(VaadinIcon.ENVELOPE.create()); + ConfirmDialog enviarEncConfirm = new ConfirmDialog(); + enviarEncConfirm.setHeader("Enviar encuestas"); + enviarEncConfirm.setText("¿Deseas enviar las encuestas de satisfacción?, Esto enviara la encuesta solo a los mantenimientos realizados"); + enviarEncConfirm.setCancelable(true); + enviarEncConfirm.addCancelListener(e -> enviarEncConfirm.close()); + enviarEncConfirm.setConfirmText("Enviar"); + enviarEncConfirm.addConfirmListener(e -> {}); + btnEnviarEncuestas.addClickListener(e -> enviarEncConfirm.open()); + + btnImprimirLayout = new HorizontalLayout(btnColumns, btnImprimirRpt, btnAddEquipo, btnEnviarEncuestas); HorizontalLayout columnSelectorLayout = new HorizontalLayout(); columnSelectorLayout.setAlignItems(Alignment.END); @@ -388,7 +402,7 @@ public class PlanAnualView extends VerticalLayout { }); Set defaultColumns = Set.of("equipo", "departamento", "mesplaneado", - "fechaProgramada", "fechaMantenimiento", "estado", "situacion"); + "fechaProgramada", "fechaMantenimiento", "estado", "situacion", "encuesta"); chkColumns.setValue(defaultColumns); popover.add(heading, chkColumns);