package com.ejie.ad74a.model;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;

import com.ejie.ad74a.util.comun.UtilidadesFecha;
import com.ejie.ad74a.util.constantes.EstadoInformesEnum;
import com.ejie.ad74a.util.constantes.TipoInformesEnum;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.ejie.x38.serialization.JsonDateTimeDeserializer;
import com.ejie.x38.serialization.JsonDateTimeSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * Informes generated by UDA, 19-abr-2023 16:38:33.
 * 
 * @author UDA
 */

public class Informes implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idInforme16;
	private DocumentosInforme documentosInforme;
	private Usuarios usuario;
//	private MaestroTrSociales maestroTrSociales;
	private String tipoInforme16;
	private String tipoInformeDesc;
	private String observaciones16;
	private String estado16;
	private Long idBeneficiario16;
	private Solicitantes solicitantes;
	private Long idExpediente16;
	private Expedientes expedientes;
	private Date fInicio16;
	private Date fFin16;
	private Date fEnvioAdmon16;
	private Integer oculto16;
	private Integer origen16;
	private Integer urgente16;
	private String usuAlta16;
	private String usuModif16;
	private Date fAlta16;
	private Date fModif16;
	private String direccion;
	private String cp;
	private String letra;
	private String piso;
	private String portal;
	private String localidad;
	private String nombreApellidosBeneficiario;
	private String dninombreApellidosBeneficiario;
//	private String nombreApellidosMaestroTrSociales;
	private String nombreApellidosUsuario;
	private String documento;
	private InformeSocial informeSocial;
	private String mostrarOcultos;
	private String identificadorFilter;

	private String ayuntamiento16;
	private Ayuntamientos ayuntamiento;
	private String unidadBase16;
	private Long idUnidadBase16;
	private String telefono16;
	private String email16;

	private Direcciones direcciones;

	private Boolean match;

	@Autowired
	EstadoInformesEnum estadoInformesEnum;

	/**
	 * Method 'Informes'.
	 */
	public Informes() {
	}

	/**
	 * Method 'Informes'.
	 * 
	 * @param idInforme16 Long
	 */
	public Informes(Long idInforme16) {
		this.idInforme16 = idInforme16;
	}

	/**
	 * Method 'Informes'.
	 * 
	 * @param idInforme16       Long
	 * @param tipoInforme16     String
	 * @param observaciones16   String
	 * @param estado16          String
	 * @param idBeneficiario16  Long
	 * @param idExpediente16    Long
	 * @param fInicio16         Date
	 * @param fFin16            Date
	 * @param fEnvioAdmon16     Date
	 * @param oculto16          Integer
	 * @param origen16          Integer
	 * @param urgente16         Integer
	 * @param usuAlta16         String
	 * @param usuModif16        String
	 * @param fAlta16           Date
	 * @param fModif16          Date
	 * @param documentosInforme DocumentosInforme
	 * @param usuario           Usuarios
	 */
	public Informes(Long idInforme16, String tipoInforme16, String observaciones16, String estado16,
			Long idBeneficiario16, Long idExpediente16, Date fInicio16, Date fFin16, Date fEnvioAdmon16,
			Integer oculto16, Integer origen16, Integer urgente16, String usuAlta16, String usuModif16, Date fAlta16,
			Date fModif16, DocumentosInforme documentosInforme, Usuarios usuario) {

		this.idInforme16 = idInforme16;
		this.documentosInforme = documentosInforme;
		this.usuario = usuario;
//		this.maestroTrSociales = maestroTrSociales;
		this.tipoInforme16 = tipoInforme16;
		this.observaciones16 = observaciones16;
		this.estado16 = estado16;
		this.idBeneficiario16 = idBeneficiario16;
		this.idExpediente16 = idExpediente16;
		this.fInicio16 = fInicio16;
		this.fFin16 = fFin16;
		this.fEnvioAdmon16 = fEnvioAdmon16;
		this.oculto16 = oculto16;
		this.origen16 = origen16;
		this.urgente16 = urgente16;
		this.usuAlta16 = usuAlta16;
		this.usuModif16 = usuModif16;
		this.fAlta16 = fAlta16;
		this.fModif16 = fModif16;
	}

	/**
	 * Method 'getIdInforme16'.
	 *
	 * @return Long
	 */

	public Long getIdInforme16() {
		return this.idInforme16;
	}

	/**
	 * Method 'setIdInforme16'.
	 *
	 * @param idInforme16 Long
	 * @return
	 */

	public void setIdInforme16(Long idInforme16) {
		this.idInforme16 = idInforme16;
	}

	/**
	 * Method 'getDocumentosInforme'.
	 *
	 * @return DocumentosInforme
	 */

	public DocumentosInforme getDocumentosInforme() {
		return this.documentosInforme;
	}

	/**
	 * Method 'setDocumentosInforme'.
	 *
	 * @param documentosInforme DocumentosInforme
	 * @return
	 */

	public void setDocumentosInforme(DocumentosInforme documentosInforme) {
		this.documentosInforme = documentosInforme;
	}

//	/**
//	 * Method 'getMaestroTrSociales'.
//	 *
//	 * @return MaestroTrSociales
//	 */
//
//	public MaestroTrSociales getMaestroTrSociales() {
//		return this.maestroTrSociales;
//	}
//
//	/**
//	 * Method 'setMaestroTrSociales'.
//	 *
//	 * @param maestroTrSociales MaestroTrSociales
//	 * @return
//	 */
//
//	public void setMaestroTrSociales(MaestroTrSociales maestroTrSociales) {
//		this.maestroTrSociales = maestroTrSociales;
//	}

	/**
	 * Method 'getUsuario'.
	 *
	 * @return Usuarios
	 */

	public Usuarios getUsuario() {
		return this.usuario;
	}

	/**
	 * Method 'setUsuario'.
	 *
	 * @param usuario Usuarios
	 * @return
	 */

	public void setUsuario(Usuarios usuario) {
		this.usuario = usuario;
	}

	/**
	 * Method 'getTipoInforme16'.
	 *
	 * @return String
	 */

	public String getTipoInforme16() {
		return this.tipoInforme16;
	}

	/**
	 * Method 'setTipoInforme16'.
	 *
	 * @param tipoInforme16 String
	 * @return
	 */

	public void setTipoInforme16(String tipoInforme16) {
		this.tipoInforme16 = tipoInforme16;
	}

	/**
	 * Method 'getObservaciones16'.
	 *
	 * @return String
	 */

	public String getObservaciones16() {
		return this.observaciones16;
	}

	/**
	 * Method 'setObservaciones16'.
	 *
	 * @param observaciones16 String
	 * @return
	 */

	public void setObservaciones16(String observaciones16) {
		this.observaciones16 = observaciones16;
	}

	/**
	 * Method 'getEstado16'.
	 *
	 * @return String
	 */

	public String getEstado16() {
		return this.estado16;
	}

	/**
	 * Method 'getEstado16Desc'.
	 *
	 * @return String
	 */
	public String getEstado16Desc() {
		return this.estado16;
	}

	/**
	 * Method 'setEstado16'.
	 *
	 * @param estado16 String
	 * @return
	 */

	public void setEstado16(String estado16) {
		this.estado16 = estado16;
	}

	/**
	 * Method 'getIdBeneficiario16'.
	 *
	 * @return Long
	 */

	public Long getIdBeneficiario16() {
		return this.idBeneficiario16;
	}

	/**
	 * Method 'setIdBeneficiario16'.
	 *
	 * @param idBeneficiario16 Long
	 * @return
	 */

	public void setIdBeneficiario16(Long idBeneficiario16) {
		this.idBeneficiario16 = idBeneficiario16;
	}

	/**
	 * Method 'getIdExpediente16'.
	 *
	 * @return Long
	 */

	public Long getIdExpediente16() {
		return this.idExpediente16;
	}

	/**
	 * Method 'setIdExpediente16'.
	 *
	 * @param idExpediente16 Long
	 * @return
	 */

	public void setIdExpediente16(Long idExpediente16) {
		this.idExpediente16 = idExpediente16;
	}

	/**
	 * Method 'getfInicio16'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfInicio16() {
		return this.fInicio16;
	}

	/**
	 * Method 'setfInicio16'.
	 *
	 * @param fInicio16 java.util.Date
	 * @return
	 */

	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfInicio16(Date fInicio16) {
		this.fInicio16 = fInicio16;
	}

	/**
	 * Method 'getfFin16'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfFin16() {
		return this.fFin16;
	}

	/**
	 * Method 'setfFin16'.
	 *
	 * @param fFin16 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfFin16(Date fFin16) {
		this.fFin16 = fFin16;
	}

	/**
	 * Method 'getfEnvioAdmon16'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateTimeSerializer.class)
	public Date getfEnvioAdmon16() {
		return this.fEnvioAdmon16;
	}

	/**
	 * Method 'setfEnvioAdmon16'.
	 *
	 * @param fEnvioAdmon16 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateTimeDeserializer.class)
	public void setfEnvioAdmon16(Date fEnvioAdmon16) {
		this.fEnvioAdmon16 = fEnvioAdmon16;
	}

	/**
	 * Method 'getOculto16'.
	 *
	 * @return Integer
	 */

	public Integer getOculto16() {
		return this.oculto16;
	}

	/**
	 * Method 'setOculto16'.
	 *
	 * @param oculto16 Integer
	 * @return
	 */

	public void setOculto16(Integer oculto16) {
		this.oculto16 = oculto16;
	}

	/**
	 * Method 'getOrigen16'.
	 *
	 * @return Integer
	 */

	public Integer getOrigen16() {
		return this.origen16;
	}

	/**
	 * Method 'setOrigen16'.
	 *
	 * @param origen16 Integer
	 * @return
	 */

	public void setOrigen16(Integer origen16) {
		this.origen16 = origen16;
	}

	/**
	 * Method 'getUsuAlta16'.
	 *
	 * @return String
	 */

	public String getUsuAlta16() {
		return this.usuAlta16;
	}

	/**
	 * Method 'setUsuAlta16'.
	 *
	 * @param usuAlta16 String
	 * @return
	 */

	public void setUsuAlta16(String usuAlta16) {
		this.usuAlta16 = usuAlta16;
	}

	/**
	 * Method 'getUsuModif16'.
	 *
	 * @return String
	 */

	public String getUsuModif16() {
		return this.usuModif16;
	}

	/**
	 * Method 'setUsuModif16'.
	 *
	 * @param usuModif16 String
	 * @return
	 */

	public void setUsuModif16(String usuModif16) {
		this.usuModif16 = usuModif16;
	}

	/**
	 * Method 'getfAlta16'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfAlta16() {
		return this.fAlta16;
	}

	/**
	 * Method 'setfAlta16'.
	 *
	 * @param fAlta16 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfAlta16(Date fAlta16) {
		this.fAlta16 = fAlta16;
	}

	/**
	 * Method 'getfModif16'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfModif16() {
		return this.fModif16;
	}

	/**
	 * Method 'setfModif16'.
	 *
	 * @param fModif16 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfModif16(Date fModif16) {
		this.fModif16 = fModif16;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ idInforme16: ").append(this.idInforme16).append(" ]");
		result.append(", [ tipoInforme16: ").append(this.tipoInforme16).append(" ]");
		result.append(", [ observaciones16: ").append(this.observaciones16).append(" ]");
		result.append(", [ estado16: ").append(this.estado16).append(" ]");
		result.append(", [ idBeneficiario16: ").append(this.idBeneficiario16).append(" ]");
		result.append(", [ idExpediente16: ").append(this.idExpediente16).append(" ]");
		result.append(", [ fInicio16: ").append(this.fInicio16).append(" ]");
		result.append(", [ fFin16: ").append(this.fFin16).append(" ]");
		result.append(", [ fEnvioAdmon16: ").append(this.fEnvioAdmon16).append(" ]");
		result.append(", [ oculto16: ").append(this.oculto16).append(" ]");
		result.append(", [ origen16: ").append(this.origen16).append(" ]");
		result.append(", [ urgente16: ").append(this.urgente16).append(" ]");
		result.append(", [ usuAlta16: ").append(this.usuAlta16).append(" ]");
		result.append(", [ usuModif16: ").append(this.usuModif16).append(" ]");
		result.append(", [ fAlta16: ").append(this.fAlta16).append(" ]");
		result.append(", [ fModif16: ").append(this.fModif16).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getSolicitantes'.
	 *
	 * @return Solicitantes
	 */
	public Solicitantes getSolicitantes() {
		return solicitantes;
	}

	/**
	 * Method 'setSolicitantes'.
	 *
	 * @param solicitantes Solicitantes
	 * @return
	 */
	public void setSolicitantes(Solicitantes solicitantes) {
		this.solicitantes = solicitantes;
	}

	/**
	 * Method 'getExpedientes'.
	 *
	 * @return Expedientes
	 */
	public Expedientes getExpedientes() {
		return expedientes;
	}

	/**
	 * Method 'setExpedientes'.
	 *
	 * @param expedientes Expedientes
	 * @return
	 */
	public void setExpedientes(Expedientes expedientes) {
		this.expedientes = expedientes;
	}

	/**
	 * Method 'getDescEstadoInforme'.
	 *
	 * @return String
	 */
	public String getDescEstadoInforme() {
		if (this.estado16 != null) {
			for (EstadoInformesEnum estado : EstadoInformesEnum.values()) {
				if (estado16 == estado.getId()) {
					return estado.getLabelDesc();
				}
			}
		}
		return "";
	}

	/**
	 * Method 'getNombreApellidosBeneficiario'.
	 *
	 * @return String
	 */
	public String getNombreApellidosBeneficiario() {
		return this.solicitantes.getNombre01() + " " + this.solicitantes.getApellido101() + " "
				+ this.solicitantes.getApellido201();
	}

	/**
	 * Method 'setNombreApellidosBeneficiario'.
	 *
	 * @param nombreApellidosBeneficiario String
	 * @return
	 */
	public void setNombreApellidosBeneficiario(String nombreApellidosBeneficiario) {
		this.nombreApellidosBeneficiario = nombreApellidosBeneficiario;
	}

//	public String getNombreApellidosMaestroTrSociales() {
//		return this.maestroTrSociales.getNombre39() + " " + this.maestroTrSociales.getApe139() + " "
//				+ this.maestroTrSociales.getApe239();
//	}
//
//	public void setNombreApellidosMaestroTrSociales(String nombreApellidosMaestroTrSociales) {
//		this.nombreApellidosMaestroTrSociales = nombreApellidosMaestroTrSociales;
//	}

	/**
	 * Method 'getNombreApellidosUsuario'.
	 *
	 * @return String
	 */
	public String getNombreApellidosUsuario() {
		return this.usuario.getNombre80() + " " + this.usuario.getApellidos80();
	}

	/**
	 * Method 'setNombreApellidosUsuario'.
	 *
	 * @param nombreApellidosUsuario String
	 * @return
	 */
	public void setNombreApellidosUsuario(String nombreApellidosUsuario) {
		this.nombreApellidosUsuario = nombreApellidosUsuario;
	}

	/**
	 * Method 'getDireccion'.
	 *
	 * @return String
	 */
	public String getDireccion() {
		return direccion;
	}

	/**
	 * Method 'setDireccion'.
	 *
	 * @param direccion String
	 * @return
	 */
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	/**
	 * Method 'getDocumento'.
	 *
	 * @return String
	 */
	public String getDocumento() {
		return documento;
	}

	/**
	 * Method 'setDocumento'.
	 *
	 * @param documento String
	 * @return
	 */
	public void setDocumento(String documento) {
		this.documento = documento;
	}

	/**
	 * Method 'getInformeSocial'.
	 *
	 * @return InformeSocial
	 */
	public InformeSocial getInformeSocial() {
		return informeSocial;
	}

	/**
	 * Method 'setInformeSocial'.
	 *
	 * @param informeSocial InformeSocial
	 * @return
	 */
	public void setInformeSocial(InformeSocial informeSocial) {
		this.informeSocial = informeSocial;
	}

	/**
	 * Method 'getDninombreApellidosBeneficiario'.
	 *
	 * @return String
	 */
	public String getDninombreApellidosBeneficiario() {
		return this.solicitantes.getIdentificador01() + " " + this.solicitantes.getNombre01() + " "
				+ this.solicitantes.getApellido101() + " " + this.solicitantes.getApellido201();
	}

	/**
	 * Method 'setDninombreApellidosBeneficiario'.
	 *
	 * @param dninombreApellidosBeneficiario String
	 * @return
	 */
	public void setDninombreApellidosBeneficiario(String dninombreApellidosBeneficiario) {
		this.dninombreApellidosBeneficiario = dninombreApellidosBeneficiario;
	}

	/**
	 * Method 'getTipoInformeDesc'.
	 *
	 * @return String
	 */
	public String getTipoInformeDesc() {
		if (null != this.tipoInforme16) {
			return TipoInformesEnum.getById(this.tipoInforme16).getLabelDesc();
		}
		return "";

	}

	/**
	 * Method 'setTipoInformeDesc'.
	 *
	 * @param tipoInformeDesc String
	 * @return
	 */
	public void setTipoInformeDesc(String tipoInformeDesc) {
		this.tipoInformeDesc = tipoInformeDesc;
	}

	/**
	 * Method 'getUrgente16'.
	 *
	 * @return Integer
	 */
	public Integer getUrgente16() {
		return urgente16;
	}

	/**
	 * Method 'setUrgente16'.
	 *
	 * @param urgente16 Integer
	 * @return
	 */
	public void setUrgente16(Integer urgente16) {
		this.urgente16 = urgente16;
	}

	/**
	 * Method 'getEstadoDesc'.
	 *
	 * @return String
	 */
	public String getEstadoDesc() {
		EstadoInformesEnum estadoEnum = EstadoInformesEnum.getEnumByTaskId(this.estado16);
		if (estadoEnum != null) {
			return estadoEnum.getLabelDesc();
		}
		return null;
	}

	/**
	 * Method 'getMostrarOcultos'.
	 *
	 * @return String
	 */
	public String getMostrarOcultos() {
		return mostrarOcultos;
	}

	/**
	 * Method 'setMostrarOcultos'.
	 *
	 * @param mostrarOcultos String
	 * @return
	 */
	public void setMostrarOcultos(String mostrarOcultos) {
		this.mostrarOcultos = mostrarOcultos;
	}

	/**
	 * Method 'getMatch'.
	 *
	 * @return Boolean
	 */
	public Boolean getMatch() {
		return match;
	}

	/**
	 * Method 'setMatch'.
	 *
	 * @param match Boolean
	 * @return
	 */
	public void setMatch(Boolean match) {
		this.match = match;
	}

	/**
	 * Method 'getCp'.
	 *
	 * @return String
	 */
	public String getCp() {
		return cp;
	}

	/**
	 * Method 'setCp'.
	 *
	 * @param cp String
	 * @return
	 */
	public void setCp(String cp) {
		this.cp = cp;
	}

	/**
	 * Method 'getLetra'.
	 *
	 * @return String
	 */
	public String getLetra() {
		return letra;
	}

	/**
	 * Method 'setLetra'.
	 *
	 * @param letra String
	 * @return
	 */
	public void setLetra(String letra) {
		this.letra = letra;
	}

	/**
	 * Method 'getPiso'.
	 *
	 * @return String
	 */
	public String getPiso() {
		return piso;
	}

	/**
	 * Method 'setPiso'.
	 *
	 * @param piso String
	 * @return
	 */
	public void setPiso(String piso) {
		this.piso = piso;
	}

	/**
	 * Method 'getPortal'.
	 *
	 * @return String
	 */
	public String getPortal() {
		return portal;
	}

	/**
	 * Method 'setPortal'.
	 *
	 * @param portal String
	 * @return
	 */
	public void setPortal(String portal) {
		this.portal = portal;
	}

	/**
	 * Method 'getLocalidad'.
	 *
	 * @return String
	 */
	public String getLocalidad() {
		return localidad;
	}

	/**
	 * Method 'setLocalidad'.
	 *
	 * @param localidad String
	 * @return
	 */
	public void setLocalidad(String localidad) {
		this.localidad = localidad;
	}

	/**
	 * Method 'getIdentificadorFilter'.
	 *
	 * @return String
	 */
	public String getIdentificadorFilter() {
		return identificadorFilter;
	}

	/**
	 * Method 'setIdentificadorFilter'.
	 *
	 * @param identificadorFilter String
	 * @return
	 */
	public void setIdentificadorFilter(String identificadorFilter) {
		this.identificadorFilter = identificadorFilter;
	}

	/**
	 * Method 'getAyuntamiento16'.
	 *
	 * @return String
	 */
	public String getAyuntamiento16() {
		return ayuntamiento16;
	}

	/**
	 * Method 'setAyuntamiento16'.
	 *
	 * @param ayuntamiento16 String
	 * @return
	 */
	public void setAyuntamiento16(String ayuntamiento16) {
		this.ayuntamiento16 = ayuntamiento16;
	}

	/**
	 * Method 'getAyuntamiento'.
	 *
	 * @return Ayuntamientos
	 */
	public Ayuntamientos getAyuntamiento() {
		return ayuntamiento;
	}

	/**
	 * Method 'setAyuntamiento'.
	 *
	 * @param ayuntamiento Ayuntamientos
	 * @return
	 */
	public void setAyuntamiento(Ayuntamientos ayuntamiento) {
		this.ayuntamiento = ayuntamiento;
	}

	/**
	 * Method 'getUnidadBase16'.
	 *
	 * @return String
	 */
	public String getUnidadBase16() {
		return unidadBase16;
	}

	/**
	 * Method 'setUnidadBase16'.
	 *
	 * @param unidadBase16 String
	 * @return
	 */
	public void setUnidadBase16(String unidadBase16) {
		this.unidadBase16 = unidadBase16;
	}

	/**
	 * Method 'getTelefono16'.
	 *
	 * @return String
	 */
	public String getTelefono16() {
		return telefono16;
	}

	/**
	 * Method 'setTelefono16'.
	 *
	 * @param telefono16 String
	 * @return
	 */
	public void setTelefono16(String telefono16) {
		this.telefono16 = telefono16;
	}

	/**
	 * Method 'getEmail16'.
	 *
	 * @return String
	 */
	public String getEmail16() {
		return email16;
	}

	/**
	 * Method 'setEmail16'.
	 *
	 * @param email16 String
	 * @return
	 */
	public void setEmail16(String email16) {
		this.email16 = email16;
	}

	public Direcciones getDirecciones() {
		return direcciones;
	}

	public void setDirecciones(Direcciones direcciones) {
		this.direcciones = direcciones;
	}

	public String getfInicio16Formateada() {
		return this.fInicio16 == null ? "" : UtilidadesFecha.formatearDateToString(this.fInicio16);

	}

	public Long getIdUnidadBase16() {
		return idUnidadBase16;
	}

	public void setIdUnidadBase16(Long idUnidadBase16) {
		this.idUnidadBase16 = idUnidadBase16;
	}

}
