package com.ejie.ad74a.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.context.i18n.LocaleContextHolder;

import com.ejie.ad74a.constantes.Constantes;
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.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * Valoraciones generated by UDA, 21-mar-2023 11:41:04.
 * 
 * @author UDA
 */

public class Valoraciones implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idValoracion08;
	private Date fValoracion08;
	private Integer tipoValoracion08;
	private String contratoActuacion08;
	private MaestroNivSoporte maestroNivSoporte;
	private Integer altoRiesgo08;
	private Integer nivelMaltrato08;
	private Integer nivelSuicidio08;
	private Long periodicidadPropuesta08;
	private Long periodicidadAcordada08;
	private Integer propuestaAceptada08;
	private Integer motivoRetraso08;
	private Integer modoValoracion08;
	private Direcciones direcciones;

	private Long idSolicitante08;
	private Date fHistorico08;
	private String usuHistorico08;
	private Solicitantes solicitantes;

	private Date fAlta08;
	private String usuAlta08;
	private List<DispValoraciones> dispValoracioneses = new ArrayList<DispValoraciones>();

	/* Campos auxiliares */
	private Date fValoracionDesde;
	private Date fValoracionHasta;

	private Date fHistoricoDesde;
	private Date fHistoricoHasta;

	// private String nombreApellidosBeneficiario;

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

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

	/**
	 * Method 'Valoraciones'.
	 * 
	 * @param idValoracion08          Long
	 * @param fValoracion08           Date
	 * @param tipoValoracion08        Integer
	 * @param contratoActuacion08     String
	 * @param idNivelSoporte08        Long
	 * @param altoRiesgo08            Integer
	 * @param nivelMaltrato08         Integer
	 * @param nivelSuicidio08         Integer
	 * @param periodicidadPropuesta08 Long
	 * @param periodicidadAcordada08  Long
	 * @param propuestaAceptada08     Integer
	 * @param idSolicitante08         Long
	 * @param usuHistorico08          String
	 * @param fHistorico08            Date
	 * @param fAlta08                 Date
	 * @param usuAlta08               String
	 */
	public Valoraciones(Long idValoracion08, Date fValoracion08, Integer tipoValoracion08, String contratoActuacion08,
			Long idNivelSoporte08, Integer altoRiesgo08, Integer nivelMaltrato08, Integer nivelSuicidio08,
			Long periodicidadPropuesta08, Long periodicidadAcordada08, Integer propuestaAceptada08,
			Long idSolicitante08, String usuHistorico08, Date fHistorico08, Integer motivoRetraso08, Date fAlta08,
			String usuAlta08, Integer modoValoracion08) {
		this.idValoracion08 = idValoracion08;
		this.fValoracion08 = fValoracion08;
		this.tipoValoracion08 = tipoValoracion08;
		this.contratoActuacion08 = contratoActuacion08;
		this.setIdNivelSoporte08(idNivelSoporte08);
		this.altoRiesgo08 = altoRiesgo08;
		this.nivelMaltrato08 = nivelMaltrato08;
		this.nivelSuicidio08 = nivelSuicidio08;
		this.periodicidadPropuesta08 = periodicidadPropuesta08;
		this.periodicidadAcordada08 = periodicidadAcordada08;
		this.propuestaAceptada08 = propuestaAceptada08;
		this.idSolicitante08 = idSolicitante08;
		this.usuHistorico08 = usuHistorico08;
		this.fHistorico08 = fHistorico08;
		this.fAlta08 = fAlta08;
		this.usuAlta08 = usuAlta08;
		this.motivoRetraso08 = motivoRetraso08;
		this.modoValoracion08 = modoValoracion08;
	}

	/**
	 * Method 'Valoraciones'.
	 * 
	 * @param idValoracion08          Long
	 * @param fValoracion08           Date
	 * @param tipoValoracion08        Integer
	 * @param contratoActuacion08     String
	 * @param idNivelSoporte08        Long
	 * @param altoRiesgo08            Integer
	 * @param nivelMaltrato08         Integer
	 * @param nivelSuicidio08         Integer
	 * @param periodicidadPropuesta08 Long
	 * @param periodicidadAcordada08  Long
	 * @param propuestaAceptada08     Integer
	 * @param idSolicitante08         Long
	 * @param usuHistorico08          String
	 * @param fHistorico08            Date
	 * @param fAlta08                 Date
	 * @param usuAlta08               String
	 * @param dispValoracioneses      List<DispValoraciones>
	 */
	public Valoraciones(Long idValoracion08, Date fValoracion08, Integer tipoValoracion08, String contratoActuacion08,
			Long idNivelSoporte08, Integer altoRiesgo08, Integer nivelMaltrato08, Integer nivelSuicidio08,
			Long periodicidadPropuesta08, Long periodicidadAcordada08, Integer propuestaAceptada08,
			Long idSolicitante08, String usuHistorico08, Date fHistorico08, Integer motivoRetraso08, Date fAlta08,
			String usuAlta08, List<DispValoraciones> dispValoracioneses, Integer modoValoracion08) {

		this.idValoracion08 = idValoracion08;
		this.fValoracion08 = fValoracion08;
		this.tipoValoracion08 = tipoValoracion08;
		this.contratoActuacion08 = contratoActuacion08;
		this.setIdNivelSoporte08(idNivelSoporte08);
		this.altoRiesgo08 = altoRiesgo08;
		this.nivelMaltrato08 = nivelMaltrato08;
		this.nivelSuicidio08 = nivelSuicidio08;
		this.periodicidadPropuesta08 = periodicidadPropuesta08;
		this.periodicidadAcordada08 = periodicidadAcordada08;
		this.propuestaAceptada08 = propuestaAceptada08;
		this.idSolicitante08 = idSolicitante08;
		this.usuHistorico08 = usuHistorico08;
		this.fHistorico08 = fHistorico08;
		this.fAlta08 = fAlta08;
		this.usuAlta08 = usuAlta08;
		this.dispValoracioneses = dispValoracioneses;
		this.motivoRetraso08 = motivoRetraso08;
		this.modoValoracion08 = modoValoracion08;
	}

	/**
	 * Method 'Valoraciones'.
	 * 
	 * @param idValoracion08 Long
	 * @param fValoracion08  Date
	 * @param nivelSoporte08 Integer
	 * @param usuHistorico08 String
	 * @param fHistorico08   Date
	 */
	public Valoraciones(Long idValoracion08, Date fValoracion08, Long idNivelSoporte08, String usuHistorico08,
			Date fHistorico08) {
		this.idValoracion08 = idValoracion08;
		this.fValoracion08 = fValoracion08;
		this.setIdNivelSoporte08(idNivelSoporte08);
		this.usuHistorico08 = usuHistorico08;
		this.fHistorico08 = fHistorico08;
	}

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

	public Long getIdValoracion08() {
		return this.idValoracion08;
	}

	/**
	 * Method 'setIdValoracion08'.
	 *
	 * @param idValoracion08 Long
	 * @return
	 */

	public void setIdValoracion08(Long idValoracion08) {
		this.idValoracion08 = idValoracion08;
	}

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

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

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

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

	public Integer getTipoValoracion08() {
		return this.tipoValoracion08;
	}

	/**
	 * Method 'setTipoValoracion08'.
	 *
	 * @param tipoValoracion08 Integer
	 * @return
	 */

	public void setTipoValoracion08(Integer tipoValoracion08) {
		this.tipoValoracion08 = tipoValoracion08;
	}

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

	public String getContratoActuacion08() {
		return this.contratoActuacion08;
	}

	/**
	 * Method 'setContratoActuacion08'.
	 *
	 * @param contratoActuacion08 String
	 * @return
	 */

	public void setContratoActuacion08(String contratoActuacion08) {
		this.contratoActuacion08 = contratoActuacion08;
	}

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

	public Integer getAltoRiesgo08() {
		return this.altoRiesgo08;
	}

	/**
	 * Method 'setAltoRiesgo08'.
	 *
	 * @param altoRiesgo08 Integer
	 * @return
	 */

	public void setAltoRiesgo08(Integer altoRiesgo08) {
		this.altoRiesgo08 = altoRiesgo08;
	}

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

	public Integer getNivelMaltrato08() {
		return this.nivelMaltrato08;
	}

	/**
	 * Method 'setNivelMaltrato08'.
	 *
	 * @param nivelMaltrato08 Integer
	 * @return
	 */

	public void setNivelMaltrato08(Integer nivelMaltrato08) {
		this.nivelMaltrato08 = nivelMaltrato08;
	}

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

	public Integer getNivelSuicidio08() {
		return this.nivelSuicidio08;
	}

	/**
	 * Method 'setNivelSuicidio08'.
	 *
	 * @param nivelSuicidio08 Integer
	 * @return
	 */

	public void setNivelSuicidio08(Integer nivelSuicidio08) {
		this.nivelSuicidio08 = nivelSuicidio08;
	}

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

	public Long getPeriodicidadPropuesta08() {
		return this.periodicidadPropuesta08;
	}

	/**
	 * Method 'setPeriodicidadPropuesta08'.
	 *
	 * @param periodicidadPropuesta08 Long
	 * @return
	 */

	public void setPeriodicidadPropuesta08(Long periodicidadPropuesta08) {
		this.periodicidadPropuesta08 = periodicidadPropuesta08;
	}

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

	public Long getPeriodicidadAcordada08() {
		return this.periodicidadAcordada08;
	}

	/**
	 * Method 'setPeriodicidadAcordada08'.
	 *
	 * @param periodicidadAcordada08 Long
	 * @return
	 */

	public void setPeriodicidadAcordada08(Long periodicidadAcordada08) {
		this.periodicidadAcordada08 = periodicidadAcordada08;
	}

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

	public Integer getPropuestaAceptada08() {
		return this.propuestaAceptada08;
	}

	/**
	 * Method 'setPropuestaAceptada08'.
	 *
	 * @param propuestaAceptada08 Integer
	 * @return
	 */

	public void setPropuestaAceptada08(Integer propuestaAceptada08) {
		this.propuestaAceptada08 = propuestaAceptada08;
	}

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

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

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

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

	public String getUsuAlta08() {
		return this.usuAlta08;
	}

	/**
	 * Method 'setUsuAlta08'.
	 *
	 * @param usuAlta08 String
	 * @return
	 */

	public void setUsuAlta08(String usuAlta08) {
		this.usuAlta08 = usuAlta08;
	}

	/**
	 * Method 'getDispValoracioneses'.
	 *
	 * @return List
	 */
	@JsonIgnore
	public List<DispValoraciones> getDispValoracioneses() {
		return this.dispValoracioneses;
	}

	/**
	 * Method 'setDispValoracioneses'.
	 *
	 * @param dispValoracioneses List
	 * @return
	 */
	public void setDispValoracioneses(List<DispValoraciones> dispValoracioneses) {
		this.dispValoracioneses = dispValoracioneses;
	}

	/**
	 * 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(" [ idValoracion08: ").append(this.idValoracion08).append(" ]");
		result.append(", [ FValoracion08: ").append(this.fValoracion08).append(" ]");
		result.append(", [ tipoValoracion08: ").append(this.tipoValoracion08).append(" ]");
		result.append(", [ contratoActuacion08: ").append(this.contratoActuacion08).append(" ]");
		result.append(", [ idNivelSoporte08: ").append(this.getIdNivelSoporte08()).append(" ]");
		result.append(", [ altoRiesgo08: ").append(this.altoRiesgo08).append(" ]");
		result.append(", [ nivelMaltrato08: ").append(this.nivelMaltrato08).append(" ]");
		result.append(", [ nivelSuicidio08: ").append(this.nivelSuicidio08).append(" ]");
		result.append(", [ periodicidadPropuesta08: ").append(this.periodicidadPropuesta08).append(" ]");
		result.append(", [ periodicidadAcordada08: ").append(this.periodicidadAcordada08).append(" ]");
		result.append(", [ propuestaAceptada08: ").append(this.propuestaAceptada08).append(" ]");
		result.append(", [ FAlta08: ").append(this.fAlta08).append(" ]");
		result.append(", [ usuAlta08: ").append(this.usuAlta08).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getIdSolicitante08'.
	 *
	 * @return Long
	 */
	public Long getIdSolicitante08() {
		return idSolicitante08;
	}

	/**
	 * Method 'setIdSolicitante08'.
	 *
	 * @param idSolicitante08 Long
	 * @return
	 */
	public void setIdSolicitante08(Long idSolicitante08) {
		this.idSolicitante08 = idSolicitante08;
	}

	/**
	 * Method 'getfHistorico08'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateTimeSerializer.class)
	public Date getfHistorico08() {
		return fHistorico08;
	}

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

	/**
	 * Method 'getUsuHistorico08'.
	 *
	 * @return String
	 */
	public String getUsuHistorico08() {
		return usuHistorico08;
	}

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

	/**
	 * Method 'getfValoracionDesde'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfValoracionDesde() {
		return fValoracionDesde;
	}

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

	/**
	 * Method 'getfValoracionHasta'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfValoracionHasta() {
		return fValoracionHasta;
	}

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

	/**
	 * Method 'getfHistoricoDesde'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfHistoricoDesde() {
		return fHistoricoDesde;
	}

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

	/**
	 * Method 'getfHistoricoHasta'.
	 *
	 * @return java.util.Date
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfHistoricoHasta() {
		return fHistoricoHasta;
	}

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

	/**
	 * Method 'getMotivoRetraso08'.
	 *
	 * @return Integer
	 */
	public Integer getMotivoRetraso08() {
		return motivoRetraso08;
	}

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

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

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

	public Direcciones getDirecciones() {
		return direcciones;
	}

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

	public Long getIdNivelSoporte08() {
		if (this.getMaestroNivSoporte() != null) {
			return this.getMaestroNivSoporte().getIdNivelSoporte58();
		} else {
			return null;
		}
	}

	public void setIdNivelSoporte08(Long idNivelSoporte08) {
		if (this.getMaestroNivSoporte() != null) {
			this.getMaestroNivSoporte().setIdNivelSoporte58(idNivelSoporte08);
		} else {
			this.setMaestroNivSoporte(new MaestroNivSoporte(idNivelSoporte08));
		}
	}

	public MaestroNivSoporte getMaestroNivSoporte() {
		return maestroNivSoporte;
	}

	public void setMaestroNivSoporte(MaestroNivSoporte maestroNivSoporte) {
		this.maestroNivSoporte = maestroNivSoporte;
	}

	/**
	 * Method 'getDesc'.
	 *
	 * @return String
	 */
	public String getNivelSoporteDesc() {
		if (this.getMaestroNivSoporte() != null) {
			if (LocaleContextHolder.getLocale().getLanguage().equalsIgnoreCase(Constantes.LOCALE_ES.getLanguage())) {
				return this.getMaestroNivSoporte().getDescEs58();
			} else if (LocaleContextHolder.getLocale().getLanguage()
					.equalsIgnoreCase(Constantes.LOCALE_EU.getLanguage())) {
				return this.getMaestroNivSoporte().getDescEu58();
			}
		}

		return "";
	}

	public Integer getModoValoracion08() {
		return modoValoracion08;
	}

	public void setModoValoracion08(Integer modoValoracion08) {
		this.modoValoracion08 = modoValoracion08;
	}

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