package com.sc.sicanet.migracion_sicanet.DTO;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.*;

import java.sql.Date;
import java.time.LocalDate;

public class DomicilioDTO {

    @NotNull(message = "El Campo 'zona residencia' Es Requerido")
    @Size(max = 100, message = "El Campo 'zona residencia' Debe Tener Un Máximo De 100 Caracteres")
    private String zona_residencia;

    @Size(max = 40, message = "El Campo 'tipo vivienda' Debe Tener Un Máximo De 40 Caracteres")
    private String tipo_vivienda;

    @NotNull(message = "El Campo 'tipo vialidad' Es Requerido")
    @Size(max = 40, message = "El Campo 'tipo vialidad' Debe Tener Un Máximo De 40 Caracteres")
    private String tipo_vialidad;

    @NotNull(message = "El Campo 'nombre vialidad' Es Requerido")
    @Size(max = 100, message = "El Campo 'nombre vialidad' Debe Tener Un Máximo De 100 Caracteres")
    @Pattern(regexp = ".*\\S.*", message = "El Campo 'nombre vialidad' No Debe Estar Vacío")
    private String nombre_vialidad;

    @NotNull(message = "El Campo 'numero exterior' Es Requerido")
    @Size(max = 25, message = "El Campo 'numero exterior' Debe Tener Un Máximo De 25 Caracteres")
    @Pattern(regexp = ".*\\S.*", message = "El Campo 'numero exterior' No Debe Estar Vacío")
    private String num_exterior;

    @NotNull(message = "El Campo 'numero interior' Es Requerido")
    @Size(max = 25, message = "El Campo 'numero interior' Debe Tener Un Máximo De 25 Caracteres")
    private String num_interior;

    @Size(max = 25, message = "El Campo 'tipo de casa' Debe Tener Un Máximo De 25 Caracteres")
    private String tipo_casa;

    @NotNull(message = "La Fecha De Antiguedad De Domicilio Es Obligatoria")
    @PastOrPresent(message = "La Fecha No Puede Ser Futura")
    //@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private LocalDate antiguedad_domicilio;

    @NotNull(message = "El Campo 'codigo postal' Es Requerido")
    @Size(max = 5, message = "El Campo 'codigo postal' Debe Tener Un Máximo De 5 Caracteres")
    private String cp;

    @NotNull(message = "El Campo 'tipo asentamiento' Es Requerido")
    @Size(max = 40, message = "El Campo 'tipo asentamiento' Debe Tener Un Máximo De 40 Caracteres")
    private String tipo_asentamiento;

    @NotNull(message = "El Campo 'nombre asentamiento' Es Requerido")
    @Size(max = 100, message = "El Campo 'nombre asentamiento' Debe Tener Un Máximo De 100 Caracteres")
    private String nombre_asentamiento;

    @NotNull(message = "El Campo 'pais' Es Requerido")
    @Size(max = 100, message = "El Campo 'pais' Debe Tener Un Máximo De 100 Caracteres")
    private String pais;

    @NotNull(message = "El Campo 'entidad' Es Requerido")
    @Size(max = 255, message = "El Campo 'entidad' Debe Tener Un Máximo De 255 Caracteres")
    private String entidad;

    @NotNull(message = "El Campo 'municipio' Es Requerido")
    @Size(max = 255, message = "El Campo 'municipio' Debe Tener Un Máximo De 255 Caracteres")
    private String municipio;

    @NotNull(message = "El Campo 'localidad' Es Requerido")
    @Size(max = 255, message = "El Campo 'localidad' Debe Tener Un Máximo De 255 Caracteres")
    private String localidad;

    private String uuid;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getZona_residencia() {
        return zona_residencia;
    }

    public void setZona_residencia(String zona_residencia) {
        this.zona_residencia = zona_residencia;
    }

    public String getTipo_vivienda() {
        return tipo_vivienda;
    }

    public void setTipo_vivienda(String tipo_vivienda) {
        this.tipo_vivienda = tipo_vivienda;
    }

    public String getTipo_vialidad() {
        return tipo_vialidad;
    }

    public void setTipo_vialidad(String tipo_vialidad) {
        this.tipo_vialidad = tipo_vialidad;
    }

    public String getNombre_vialidad() {
        return nombre_vialidad;
    }

    public void setNombre_vialidad(String nombre_vialidad) {
        this.nombre_vialidad = nombre_vialidad;
    }

    public String getNum_exterior() {
        return num_exterior;
    }

    public void setNum_exterior(String num_exterior) {
        this.num_exterior = num_exterior;
    }

    public String getNum_interior() {
        return num_interior;
    }

    public void setNum_interior(String num_interior) {
        this.num_interior = num_interior;
    }

    public String getTipo_casa() {
        return tipo_casa;
    }

    public void setTipo_casa(String tipo_casa) {
        this.tipo_casa = tipo_casa;
    }

    public LocalDate getAntiguedad_domicilio() {
        return antiguedad_domicilio;
    }

    public void setAntiguedad_domicilio(LocalDate  antiguedad_domicilio) {
        this.antiguedad_domicilio = antiguedad_domicilio;
    }

    public String getCp() {
        return cp;
    }

    public void setCp(String cp) {
        this.cp = cp;
    }

    public String getTipo_asentamiento() {
        return tipo_asentamiento;
    }

    public void setTipo_asentamiento(String tipo_asentamiento) {
        this.tipo_asentamiento = tipo_asentamiento;
    }

    public String getNombre_asentamiento() {
        return nombre_asentamiento;
    }

    public void setNombre_asentamiento(String nombre_asentamiento) {
        this.nombre_asentamiento = nombre_asentamiento;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getEntidad() {
        return entidad;
    }

    public void setEntidad(String entidad) {
        this.entidad = entidad;
    }

    public String getMunicipio() {
        return municipio;
    }

    public void setMunicipio(String municipio) {
        this.municipio = municipio;
    }

    public String getLocalidad() {
        return localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }
}
