package jumapacelaya.gob.mx.predios.dto;

import io.micronaut.core.annotation.Introspected;

@Introspected
public class PredioDTO {

    private Long predioId;
    private Long clienteId;
    private String contrato;
    private String nombreCliente;
    private String direccion;
    private String direccionMostrar;
    private String direccionCorta;
    private String telefono;
    private Double coordX;
    private Double coordY;
    private String zonaFactId;
    private String serialMedidor;
    private String marcaMedidor;
    private String modeloMedidor;
    private String estadoPredioId;
    private String estadoPredio;
    private String usoId;
    private String uso;
    private Integer actividadId;
    private String actividad;
    private Double adeudoCortes;
    private String tarifa;

    // ✅ Constructor general para todos los campos
    public PredioDTO(Long predioId, Long clienteId, String contrato, String nombreCliente,
                     String direccion, String direccionMostrar, String direccionCorta, String telefono,
                     Double coordX, Double coordY, String zonaFactId, String serialMedidor,
                     String marcaMedidor, String modeloMedidor, String estadoPredioId,
                     String estadoPredio, String usoId, String uso, Integer actividadId,
                     String actividad, Double adeudoCortes, String tarifa) {
        this.predioId = predioId;
        this.clienteId = clienteId;
        this.contrato = contrato;
        this.nombreCliente = nombreCliente;
        this.direccion = direccion;
        this.direccionMostrar = direccionMostrar;
        this.direccionCorta = direccionCorta;
        this.telefono = telefono;
        this.coordX = coordX;
        this.coordY = coordY;
        this.zonaFactId = zonaFactId;
        this.serialMedidor = serialMedidor;
        this.marcaMedidor = marcaMedidor;
        this.modeloMedidor = modeloMedidor;
        this.estadoPredioId = estadoPredioId;
        this.estadoPredio = estadoPredio;
        this.usoId = usoId;
        this.uso = uso;
        this.actividadId = actividadId;
        this.actividad = actividad;
        this.adeudoCortes = adeudoCortes;
        this.tarifa = tarifa;
    }

    // ✅ Constructor para obtenerPredio
    public PredioDTO(Long predioId, Long clienteId, String contrato, String nombreCliente,
                     String direccion, String direccionMostrar, String direccionCorta, String telefono,
                     Double coordX, Double coordY, String zonaFactId, String serialMedidor,
                     String marcaMedidor, String modeloMedidor, String estadoPredioId,
                     String estadoPredio, String usoId, String uso, Integer actividadId,
                     String actividad) {
        this(predioId, clienteId, contrato, nombreCliente, direccion, direccionMostrar, direccionCorta,
             telefono, coordX, coordY, zonaFactId, serialMedidor, marcaMedidor, modeloMedidor,
             estadoPredioId, estadoPredio, usoId, uso, actividadId, actividad, null, null);
    }

    // ✅ Constructor para obtenerPredioVar
    public PredioDTO(Long predioId, Long clienteId, String contrato, String nombreCliente,
                     String direccion, String direccionMostrar, String direccionCorta, String telefono,
                     Double coordX, Double coordY, String zonaFactId, String serialMedidor,
                     String marcaMedidor, String modeloMedidor, String estadoPredioId,
                     String estadoPredio, String usoId, String uso, Integer actividadId,
                     String actividad, Double adeudoCortes) {
        this(predioId, clienteId, contrato, nombreCliente, direccion, direccionMostrar, direccionCorta,
             telefono, coordX, coordY, zonaFactId, serialMedidor, marcaMedidor, modeloMedidor,
             estadoPredioId, estadoPredio, usoId, uso, actividadId, actividad, adeudoCortes, null);
    }

    // ✅ Constructor para obtenerPredioAppOTs
    public PredioDTO(Long predioId, Long clienteId, String contrato, String nombreCliente,
                     String direccion, String direccionMostrar, String direccionCorta, String telefono,
                     Double coordX, Double coordY, String zonaFactId, String serialMedidor,
                     String marcaMedidor, String modeloMedidor, String estadoPredioId,
                     String estadoPredio, String usoId, String uso, Integer actividadId,
                     String actividad, String tarifa) {
        this(predioId, clienteId, contrato, nombreCliente, direccion, direccionMostrar, direccionCorta,
             telefono, coordX, coordY, zonaFactId, serialMedidor, marcaMedidor, modeloMedidor,
             estadoPredioId, estadoPredio, usoId, uso, actividadId, actividad, null, tarifa);
    }

    // Getters y Setters
    public Long getPredioId() { return predioId; }
    public void setPredioId(Long predioId) { this.predioId = predioId; }

    public Long getClienteId() { return clienteId; }
    public void setClienteId(Long clienteId) { this.clienteId = clienteId; }

    public String getContrato() { return contrato; }
    public void setContrato(String contrato) { this.contrato = contrato; }

    public String getNombreCliente() { return nombreCliente; }
    public void setNombreCliente(String nombreCliente) { this.nombreCliente = nombreCliente; }

    public String getDireccion() { return direccion; }
    public void setDireccion(String direccion) { this.direccion = direccion; }

    public String getDireccionMostrar() { return direccionMostrar; }
    public void setDireccionMostrar(String direccionMostrar) { this.direccionMostrar = direccionMostrar; }

    public String getDireccionCorta() { return direccionCorta; }
    public void setDireccionCorta(String direccionCorta) { this.direccionCorta = direccionCorta; }

    public String getTelefono() { return telefono; }
    public void setTelefono(String telefono) { this.telefono = telefono; }

    public Double getCoordX() { return coordX; }
    public void setCoordX(Double coordX) { this.coordX = coordX; }

    public Double getCoordY() { return coordY; }
    public void setCoordY(Double coordY) { this.coordY = coordY; }

    public String getZonaFactId() { return zonaFactId; }
    public void setZonaFactId(String zonaFactId) { this.zonaFactId = zonaFactId; }

    public String getSerialMedidor() { return serialMedidor; }
    public void setSerialMedidor(String serialMedidor) { this.serialMedidor = serialMedidor; }

    public String getMarcaMedidor() { return marcaMedidor; }
    public void setMarcaMedidor(String marcaMedidor) { this.marcaMedidor = marcaMedidor; }

    public String getModeloMedidor() { return modeloMedidor; }
    public void setModeloMedidor(String modeloMedidor) { this.modeloMedidor = modeloMedidor; }

    public String getEstadoPredioId() { return estadoPredioId; }
    public void setEstadoPredioId(String estadoPredioId) { this.estadoPredioId = estadoPredioId; }

    public String getEstadoPredio() { return estadoPredio; }
    public void setEstadoPredio(String estadoPredio) { this.estadoPredio = estadoPredio; }

    public String getUsoId() { return usoId; }
    public void setUsoId(String usoId) { this.usoId = usoId; }

    public String getUso() { return uso; }
    public void setUso(String uso) { this.uso = uso; }

    public Integer getActividadId() { return actividadId; }
    public void setActividadId(Integer actividadId) { this.actividadId = actividadId; }

    public String getActividad() { return actividad; }
    public void setActividad(String actividad) { this.actividad = actividad; }

    public Double getAdeudoCortes() { return adeudoCortes; }
    public void setAdeudoCortes(Double adeudoCortes) { this.adeudoCortes = adeudoCortes; }

    public String getTarifa() { return tarifa; }
    public void setTarifa(String tarifa) { this.tarifa = tarifa; }
}
