Browse Source

Se agrego la vista para la solicitud de recibo digital asi como el formulario para firmar

main
mramirezg 8 months ago
parent
commit
dfb816dbd3
2 changed files with 188 additions and 24 deletions
  1. +45
    -24
      src/main/java/mx/gob/jumapacelaya/views/ReciboDgtalView.java
  2. +143
    -0
      src/main/java/mx/gob/jumapacelaya/views/verificacionfirma/ReciboDgtalFirma.java

+ 45
- 24
src/main/java/mx/gob/jumapacelaya/views/ReciboDgtalView.java View File

@ -12,6 +12,7 @@ import com.vaadin.flow.component.html.Span;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.EmailField;
import com.vaadin.flow.component.textfield.NumberField;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.BeforeEnterEvent;
@ -93,11 +94,16 @@ public class ReciboDgtalView extends VerticalLayout implements BeforeEnterObserv
NumberField predioTxt = new NumberField("Predio:");
predioTxt.setRequired(true);
TextField solicitante = new TextField("Solicitante:");
solicitante.setWidth("30em");
solicitante.setRequired(true);
EmailField emailField = new EmailField("Email:");
emailField.setRequired(true);
emailField.setWidth("30em");
TextField txtParentesco = new TextField("Parentesco:");
HorizontalLayout identificacionLayout = new HorizontalLayout();
identificacionLayout.setWidthFull();
@ -119,41 +125,56 @@ public class ReciboDgtalView extends VerticalLayout implements BeforeEnterObserv
btnVerSolicitud.addClickListener(event -> {
String nombreSolicitante = solicitante.getValue();
String emailCliente = emailField.getValue();
if (predioTxt.getValue() != null) {
int predioId = predioTxt.getValue().intValue();
List<Predio> predios = predioService.getInfoPredio(predioId);
if (!predios.isEmpty()) {
Predio resultado = predios.get(0);
// Validar si el campo de número de predio tiene valor
if (predioTxt.getValue() == null) {
Notification.show("Por favor, ingresa un número de predio.", 3000, Notification.Position.MIDDLE);
return;
}
UI.getCurrent().getSession().setAttribute("predio", resultado);
// Validar si el campo de solicitante está vacío
if (nombreSolicitante == null || nombreSolicitante.isEmpty()) {
Notification.show("Por favor, ingresa el nombre del solicitante.", 3000, Notification.Position.MIDDLE);
return;
}
System.out.println(resultado.getPredioid());
System.out.println(resultado.getNomcliente());
System.out.println(resultado.getDireccorta());
System.out.println(resultado.getTelefono());
System.out.println(resultado.getUso());
System.out.println(resultado.getActividad());
System.out.println(resultado.getContrato());
// Validar si el campo de correo electrónico está vacío
if (emailCliente == null || emailCliente.isEmpty()) {
Notification.show("Por favor, ingresa el email del solicitante.", 3000, Notification.Position.MIDDLE);
return;
}
} else {
Notification.show("No se encontro informacion del predio", 3000, Notification.Position.MIDDLE);
}
} else {
Notification.show("Ingresa un numero de predio", 3000, Notification.Position.MIDDLE);
// Validar si el correo electrónico tiene un formato válido (opcional)
if (!emailCliente.contains("@") || !emailCliente.contains(".")) {
Notification.show("Por favor, ingresa un email válido.", 3000, Notification.Position.MIDDLE);
return;
}
if (nombreSolicitante != null) {
UI.getCurrent().navigate("verifirma?solicitante=" + nombreSolicitante);
// Obtener el valor de predioTxt y convertirlo a int
int predioId = predioTxt.getValue().intValue();
// Consultar el predio
List<Predio> predios = predioService.getInfoPredio(predioId);
if (predios.isEmpty()) {
Notification.show("No se encontró información del predio", 3000, Notification.Position.MIDDLE);
return;
}
Predio resultado = predios.get(0);
UI.getCurrent().getSession().setAttribute("predio", resultado);
// Navegar a la siguiente vista con los parámetros
UI.getCurrent().navigate("recibo?solicitante=" + nombreSolicitante + "&email=" + emailCliente);
});
identificacionLayout.add(cmbTipoIdentificacion, numIdentificacion);
formularioLayout.add(label, labelTexto, predioTxt,
solicitante, identificacionTexto,
identificacionLayout, txtParentesco);
solicitante, emailField, identificacionTexto,
identificacionLayout);
formularioLayout.setSpacing(false);
this.add(formularioLayout, btnVerSolicitud);
}


+ 143
- 0
src/main/java/mx/gob/jumapacelaya/views/verificacionfirma/ReciboDgtalFirma.java View File

@ -0,0 +1,143 @@
package mx.gob.jumapacelaya.views.verificacionfirma;
import com.vaadin.flow.component.HtmlComponent;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.html.*;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import de.f0rce.signaturepad.SignaturePad;
import mx.gob.jumapacelaya.Services.PredioService;
import mx.gob.jumapacelaya.models.Predio;
import mx.gob.jumapacelaya.views.MainLayout;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@PageTitle("Recibo Digital Firma")
@Route(value = "recibo", layout = MainLayout.class)
public class ReciboDgtalFirma extends VerticalLayout implements BeforeEnterObserver {
private final PredioService predioService;
private Predio predio;
Span nombreCliente = new Span();
public ReciboDgtalFirma(PredioService predioService) {
this.predioService = predioService;
this.predio = (Predio) UI.getCurrent().getSession().getAttribute("predio");
if (predio == null) {
Notification.show("No se ha proporcionado un predio válido.", 3000, Notification.Position.MIDDLE);
UI.getCurrent().navigate("recibodigital");
}
cabezera();
titulo();
body();
sign();
}
private void cabezera() {
HorizontalLayout encabezadoLayout = new HorizontalLayout();
encabezadoLayout.setWidthFull();
encabezadoLayout.setPadding(true);
// Obtener la fecha actual del sistema
LocalDate fechaSistema = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE d 'de' MMMM 'del' yyyy");
String fechaFormateada = fechaSistema.format(formatter);
Span fecha = new Span();
fecha.setText("Celaya, Guanajuato a " + fechaFormateada);
H2 presolicitud = new H2();
presolicitud.setText("Firma Solicitud");
encabezadoLayout.add(fecha);
encabezadoLayout.addAndExpand(new HorizontalLayout());
encabezadoLayout.add(presolicitud);
this.add(encabezadoLayout);
}
private void titulo() {
VerticalLayout tituloLayout = new VerticalLayout();
H2 lblTitulo = new H2();
lblTitulo.setText("JUNTA MUNICIPAL DE AGUA POTABLE Y ALCANTARILLADO DE CELAYA, GTO");
tituloLayout.add(lblTitulo);
this.add(tituloLayout);
}
private void body() {
VerticalLayout bodyLayout = new VerticalLayout();
H4 lblPresente = new H4("Estimado usuario:");
H4 lblAtt = new H4("ATENTAMENTE");
Paragraph parrafo1 = new Paragraph();
parrafo1.setText(
"Con la finalidad de contribuir al cuidado del medio ambiente, así como facilitarle que conozca de manera oportuna " +
"su estado de cuenta con este organismo, lo invitamos a sumarse a este propósito y acepte el envío de " +
"su recibo de manera digital a su cuenta de correo electrónico: "
);
HtmlComponent parrafo3 = new HtmlComponent("p");
parrafo3.getElement().setProperty("innerHTML",
"Para el predio: " + predio.getPredioid() + " ubicado en " + predio.getDirecmostrar() + ", a nombre de " + predio.getNomcliente() + "."
);
bodyLayout.add(lblPresente, parrafo1, parrafo3, lblAtt);
this.add(bodyLayout);
}
private void sign() {
VerticalLayout signLayout = new VerticalLayout();
SignaturePad userPad = new SignaturePad();
userPad.setBackgroundColor("#FFFFFF");
userPad.setHeight("200px");
userPad.setPenColor("#000000");
userPad.getElement().getStyle().set("border", "1px solid black");
Span predioCliente = new Span("Predio: " + predio.getPredioid());
Span contratoCliente = new Span("Contrato: " + predio.getContrato());
signLayout.add(userPad, nombreCliente, predioCliente, contratoCliente);
signLayout.setSpacing(false);
signLayout.setAlignItems(Alignment.CENTER);
this.setSpacing(false);
this.add(signLayout);
}
@Override
public void beforeEnter(BeforeEnterEvent event) {
String solicitante = event.getLocation().getQueryParameters().getParameters().get("solicitante") != null
? event.getLocation().getQueryParameters().getParameters().get("solicitante").stream().findFirst().orElse(null)
: null;
if (solicitante != null && !solicitante.isEmpty()) {
nombreCliente.setText("Nombre del Solicitante: " + solicitante);
} else {
nombreCliente.setText("Sin solicitante");
}
}
}

Loading…
Cancel
Save