package com.ejie.ab39a.model;

import com.ejie.ab39a.utils.Utilidades;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.ejie.x38.util.Constants;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gfi.utils.Utilities;

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

import org.springframework.context.i18n.LocaleContextHolder;

/**
 * AccionesPg.
 * 
 *  
 */

public class AccionesPg extends ElementosArbol implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer codaccionpg;
	private Integer codelempg;
	private Integer numreceptores;
	private Long numreceph;
	private Long numrecepm;
	private Integer codsituacionfinal;
	private String situacionEs;
	private String situacionEu;
	private Long orden;
	private String nombre;
	private String nombrecas;
	private Date nuevafechaprev;
	private Integer idaccion;
	private String responsable;
	private Date fechaprev;
	private Long codtiporeceptor;
	private String tiporeceptorEs;
	private String tiporeceptorEu;
	private String razonAplaza;
	private String motivoCancela;
	private String descripcion;
	private String descripcioncas;
	private String motivoCancelacas;
	private String razonAplazacas;
	private String observaciones;
	private String observacionescas;
	private Long elemBase;
	private Long preguntaHecha;
	private String preguntaHechaEs;
	private String preguntaHechaEu;

	private List<AccionesPg> acciones = new ArrayList<AccionesPg>();

	/**
	 * Method 'AccionesPg'.
	 */
	public AccionesPg() {
		super();
	}

	/**
	 * Method 'AccionesPg'.
	 * 
	 * @param codaccionpg
	 *            Integer codaccionpg
	 */
	public AccionesPg(Integer codaccionpg) {
		super();
		this.codaccionpg = codaccionpg;
	}

	/**
	 * Method 'AccionesPg'.
	 * 
	 * @param codaccionpg
	 *            Integer codaccionpg
	 * @param codelempg
	 *            Integer codelempg
	 * @param numreceptores
	 *            Integer numreceptores
	 * @param numreceph
	 *            Long numreceph
	 * @param numrecepm
	 *            Long numrecepm
	 * @param codsituacionfinal
	 *            Integer codsituacionfinal
	 * @param orden
	 *            Long orden
	 * @param nombre
	 *            String nombre
	 * @param nombrecas
	 *            String nombrecas
	 * @param nuevafechaprev
	 *            Date nuevafechaprev
	 * @param idaccion
	 *            Integer idaccion
	 * @param responsable
	 *            String responsable
	 * @param fechaprev
	 *            Date fechaprev
	 * @param codtiporeceptor
	 *            Long codtiporeceptor
	 * @param razonAplaza
	 *            String razonAplaza
	 * @param motivoCancela
	 *            String motivoCancela
	 * @param descripcion
	 *            String descripcion
	 * @param descripcioncas
	 *            String descripcioncas
	 * @param motivoCancelacas
	 *            String motivoCancelacas
	 * @param razonAplazacas
	 *            String razonAplazacas
	 * @param observaciones
	 *            String observaciones
	 * @param observacionescas
	 *            String observacionescas
	 * @param elembase
	 *            Long elembase
	 * @param preguntaHecha
	 *            Long preguntaHecha
	 */
	public AccionesPg(Integer codaccionpg, Integer codelempg, Integer numreceptores, Long numreceph, Long numrecepm,
			Integer codsituacionfinal, Long orden, String nombre, String nombrecas, Date nuevafechaprev,
			Integer idaccion, String responsable, Date fechaprev, Long codtiporeceptor, String razonAplaza,
			String motivoCancela, String descripcion, String descripcioncas, String motivoCancelacas,
			String razonAplazacas, String observaciones, String observacionescas, Long elembase, Long preguntaHecha) {
		super();

		this.codaccionpg = codaccionpg;
		this.codelempg = codelempg;
		this.numreceptores = numreceptores;
		this.numreceph = numreceph;
		this.numrecepm = numrecepm;
		this.codsituacionfinal = codsituacionfinal;
		this.orden = orden;
		this.nombre = nombre;
		this.nombrecas = nombrecas;
		this.nuevafechaprev = nuevafechaprev;
		this.idaccion = idaccion;
		this.responsable = responsable;
		this.fechaprev = fechaprev;
		this.codtiporeceptor = codtiporeceptor;
		this.razonAplaza = razonAplaza;
		this.motivoCancela = motivoCancela;
		this.descripcion = descripcion;
		this.descripcioncas = descripcioncas;
		this.motivoCancelacas = motivoCancelacas;
		this.razonAplazacas = razonAplazacas;
		this.observaciones = observaciones;
		this.observacionescas = observacionescas;
		this.elemBase = elembase;
		this.preguntaHecha = preguntaHecha;
	}

	/**
	 * Method 'AccionesPg'.
	 * 
	 * @param codaccionpg
	 *            Integer codaccionpg
	 * @param codelempg
	 *            Integer codelempg
	 * @param numreceptores
	 *            Integer numreceptores
	 * @param numreceph
	 *            Long numreceph
	 * @param numrecepm
	 *            Long numrecepm
	 * @param codsituacionfinal
	 *            Integer codsituacionfinal
	 * @param orden
	 *            Long orden
	 * @param nombre
	 *            String nombre
	 * @param nombrecas
	 *            String nombrecas
	 * @param nuevafechaprev
	 *            Date nuevafechaprev
	 * @param idaccion
	 *            Integer idaccion
	 * @param responsable
	 *            String responsable
	 * @param fechaprev
	 *            Date fechaprev
	 * @param codtiporeceptor
	 *            Long codtiporeceptor
	 * @param razonAplaza
	 *            String razonAplaza
	 * @param motivoCancela
	 *            String motivoCancela
	 * @param descripcion
	 *            String descripcion
	 * @param descripcioncas
	 *            String descripcioncas
	 * @param motivoCancelacas
	 *            String motivoCancelacas
	 * @param razonAplazacas
	 *            String razonAplazacas
	 * @param observaciones
	 *            String observaciones
	 * @param observacionescas
	 *            String observacionescas
	 * @param elembase
	 *            Long elembase
	 * @param preguntaHecha
	 *            Long preguntaHecha
	 * @param tiporeceptorEs
	 *            String tiporeceptorEs
	 * @param tiporeceptorEu
	 *            String tiporeceptorEu
	 */
	public AccionesPg(Integer codaccionpg, Integer codelempg, Integer numreceptores, Long numreceph, Long numrecepm,
			Integer codsituacionfinal, Long orden, String nombre, String nombrecas, Date nuevafechaprev,
			Integer idaccion, String responsable, Date fechaprev, Long codtiporeceptor, String razonAplaza,
			String motivoCancela, String descripcion, String tiporeceptorEs, String tiporeceptorEu,
			String descripcioncas, String motivoCancelacas, String razonAplazacas, String observaciones,
			String observacionescas, Long elembase, Long preguntaHecha) {
		super();

		this.codaccionpg = codaccionpg;
		this.codelempg = codelempg;
		this.numreceptores = numreceptores;
		this.numreceph = numreceph;
		this.numrecepm = numrecepm;
		this.codsituacionfinal = codsituacionfinal;
		this.orden = orden;
		this.nombre = nombre;
		this.nombrecas = nombrecas;
		this.nuevafechaprev = nuevafechaprev;
		this.idaccion = idaccion;
		this.responsable = responsable;
		this.fechaprev = fechaprev;
		this.codtiporeceptor = codtiporeceptor;
		this.razonAplaza = razonAplaza;
		this.motivoCancela = motivoCancela;
		this.descripcion = descripcion;
		this.tiporeceptorEs = tiporeceptorEs;
		this.tiporeceptorEu = tiporeceptorEu;
		this.descripcioncas = descripcioncas;
		this.motivoCancelacas = motivoCancelacas;
		this.razonAplazacas = razonAplazacas;
		this.observaciones = observaciones;
		this.observacionescas = observacionescas;
		this.elemBase = elembase;
		this.preguntaHecha = preguntaHecha;
	}

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

	public Integer getCodaccionpg() {
		return this.codaccionpg;
	}

	/**
	 * Method 'setCodaccionpg'.
	 *
	 * @param codaccionpg
	 *            Integer
	 */

	public void setCodaccionpg(Integer codaccionpg) {
		this.codaccionpg = codaccionpg;
	}

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

	public Integer getCodelempg() {
		return this.codelempg;
	}

	/**
	 * Method 'setCodelempg'.
	 *
	 * @param codelempg
	 *            Integer
	 */

	public void setCodelempg(Integer codelempg) {
		this.codelempg = codelempg;
	}

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

	public Integer getNumreceptores() {
		return this.numreceptores;
	}

	/**
	 * Method 'setNumreceptores'.
	 *
	 * @param numreceptores
	 *            Integer
	 */

	public void setNumreceptores(Integer numreceptores) {
		this.numreceptores = numreceptores;
	}

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

	public Long getNumreceph() {
		return this.numreceph;
	}

	/**
	 * Method 'setNumreceph'.
	 *
	 * @param numreceph
	 *            Long
	 */

	public void setNumreceph(Long numreceph) {
		this.numreceph = numreceph;
	}

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

	public Long getNumrecepm() {
		return this.numrecepm;
	}

	/**
	 * Method 'setNumrecepm'.
	 *
	 * @param numrecepm
	 *            Long
	 */

	public void setNumrecepm(Long numrecepm) {
		this.numrecepm = numrecepm;
	}

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

	public Integer getCodsituacionfinal() {
		return this.codsituacionfinal;
	}

	/**
	 * Method 'setCodsituacionfinal'.
	 *
	 * @param codsituacionfinal
	 *            Integer
	 */

	public void setCodsituacionfinal(Integer codsituacionfinal) {
		this.codsituacionfinal = codsituacionfinal;

	}

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

	public String getSituacion() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			return this.getSituacionEu();
		} else {
			return this.getSituacionEs();
		}
	}

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

	public Long getOrden() {
		return this.orden;
	}

	/**
	 * Method 'setOrden'.
	 *
	 * @param orden
	 *            Long
	 */

	public void setOrden(Long orden) {
		this.orden = orden;
	}

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

	public String getNombre() {
		return this.nombre;
	}

	/**
	 * Method 'setNombre'.
	 *
	 * @param nombre
	 *            String
	 */

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

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

	public String getNombrecas() {
		return this.nombrecas;
	}

	/**
	 * Method 'setNombrecas'.
	 *
	 * @param nombrecas
	 *            String
	 */

	public void setNombrecas(String nombrecas) {
		this.nombrecas = nombrecas;
	}

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

	public String getNombreEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getNombre())) {
				return this.getNombrecas();
			} else {
				return this.getNombre();
			}
		} else {
			if (Utilidades.isEmpty(this.getNombrecas())) {
				return this.getNombre();
			} else {
				return this.getNombrecas();
			}
		}
	}

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

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

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

	/**
	 * Method 'getFechaAceptacionPlanStr'.
	 * 
	 * @return String
	 */
	public String getFechaprevStr() {
		return Utilities.formatearDateIdioma(this.fechaprev);
	}

	/**
	 * Method 'getFechaAceptacionPlanStr'.
	 * 
	 * @return String
	 */
	public String getNuevafechaprevStr() {
		return Utilities.formatearDateIdioma(this.nuevafechaprev);
	}

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

	public Integer getIdaccion() {
		return this.idaccion;
	}

	/**
	 * Method 'setIdaccion'.
	 *
	 * @param idaccion
	 *            Integer
	 */

	public void setIdaccion(Integer idaccion) {
		this.idaccion = idaccion;
	}

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

	public String getResponsable() {
		return this.responsable;
	}

	/**
	 * Method 'setResponsable'.
	 *
	 * @param responsable
	 *            String
	 */

	public void setResponsable(String responsable) {
		this.responsable = responsable;
	}

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

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

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

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

	public Long getCodtiporeceptor() {
		return this.codtiporeceptor;
	}

	/**
	 * Method 'setCodtiporeceptor'.
	 *
	 * @param codtiporeceptor
	 *            Long
	 */

	public void setCodtiporeceptor(Long codtiporeceptor) {
		this.codtiporeceptor = codtiporeceptor;
	}

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

	public String getRazonAplaza() {
		return this.razonAplaza;
	}

	/**
	 * Method 'setRazonAplaza'.
	 *
	 * @param razonAplaza
	 *            String
	 */

	public void setRazonAplaza(String razonAplaza) {
		this.razonAplaza = razonAplaza;
	}

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

	public String getMotivoCancela() {
		return this.motivoCancela;
	}

	/**
	 * Method 'setMotivoCancela'.
	 *
	 * @param motivoCancela
	 *            String
	 */

	public void setMotivoCancela(String motivoCancela) {
		this.motivoCancela = motivoCancela;
	}

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

	public String getDescripcion() {
		return this.descripcion;
	}

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

	public String getTipoReceptor() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			return this.getTiporeceptorEs();
		} else {
			return this.getTiporeceptorEu();
		}
	}

	/**
	 * Method 'setDescripcion'.
	 *
	 * @param descripcion
	 *            String
	 */

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	/**
	 * 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(" [ codaccionpg: ").append(this.codaccionpg).append(" ]");
		result.append(", [ codelempg: ").append(this.codelempg).append(" ]");
		result.append(", [ numreceptores: ").append(this.numreceptores).append(" ]");
		result.append(", [ numreceph: ").append(this.numreceph).append(" ]");
		result.append(", [ numrecepm: ").append(this.numrecepm).append(" ]");
		result.append(", [ codsituacionfinal: ").append(this.codsituacionfinal).append(" ]");
		result.append(", [ orden: ").append(this.orden).append(" ]");
		result.append(", [ nombre: ").append(this.nombre).append(" ]");
		result.append(", [ nombrecas: ").append(this.nombrecas).append(" ]");
		result.append(", [ nuevafechaprev: ").append(this.nuevafechaprev).append(" ]");
		result.append(", [ idaccion: ").append(this.idaccion).append(" ]");
		result.append(", [ responsable: ").append(this.responsable).append(" ]");
		result.append(", [ fechaprev: ").append(this.fechaprev).append(" ]");
		result.append(", [ codtiporeceptor: ").append(this.codtiporeceptor).append(" ]");
		result.append(", [ razonAplaza: ").append(this.razonAplaza).append(" ]");
		result.append(", [ motivoCancela: ").append(this.motivoCancela).append(" ]");
		result.append(", [ descripcion: ").append(this.descripcion).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * 
	 * @return String
	 */
	public String getTiporeceptorEs() {
		return this.tiporeceptorEs;
	}

	/**
	 * 
	 * @param tiporeceptorEs
	 *            String
	 */
	public void setTiporeceptorEs(String tiporeceptorEs) {
		this.tiporeceptorEs = tiporeceptorEs;
	}

	/**
	 * 
	 * @return String
	 */
	public String getTiporeceptorEu() {
		return this.tiporeceptorEu;
	}

	/**
	 * 
	 * @param tiporeceptorEu
	 *            String
	 */
	public void setTiporeceptorEu(String tiporeceptorEu) {
		this.tiporeceptorEu = tiporeceptorEu;
	}

	/**
	 * @return List<AccionesPg>
	 */
	public List<AccionesPg> getAcciones() {
		return acciones;
	}

	/**
	 * @param acciones
	 *            List<AccionesPg>
	 */
	public void setAcciones(List<AccionesPg> acciones) {
		this.acciones = acciones;
	}

	/**
	 * 
	 * @return String
	 */
	public String getSituacionEs() {
		return this.situacionEs;
	}

	/**
	 * 
	 * @param situacionEs
	 *            String
	 */
	public void setSituacionEs(String situacionEs) {
		this.situacionEs = situacionEs;
	}

	/**
	 * 
	 * @return String
	 */
	public String getSituacionEu() {
		return this.situacionEu;
	}

	/**
	 * 
	 * @param situacionEu
	 *            String
	 */
	public void setSituacionEu(String situacionEu) {
		this.situacionEu = situacionEu;
	}

	/**
	 * 
	 * @return String
	 */
	public String getDescripcioncas() {
		return this.descripcioncas;
	}

	/**
	 * 
	 * @param descripcioncas
	 *            String
	 */
	public void setDescripcioncas(String descripcioncas) {
		this.descripcioncas = descripcioncas;
	}

	/**
	 * 
	 * @return String
	 */
	public String getDescripcionEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getDescripcion())) {
				return this.getDescripcioncas();
			} else {
				return this.getDescripcion();
			}
		} else {
			if (Utilidades.isEmpty(this.getDescripcioncas())) {
				return this.getDescripcion();
			} else {
				return this.getDescripcioncas();
			}
		}
	}

	/**
	 * 
	 * @return String
	 */
	public String getMotivoCancelacas() {
		return this.motivoCancelacas;
	}

	/**
	 * 
	 * @param motivoCancelacas
	 *            String
	 */
	public void setMotivoCancelacas(String motivoCancelacas) {
		this.motivoCancelacas = motivoCancelacas;
	}

	/**
	 * 
	 * @return String
	 */
	public String getMotivoCancelaEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getMotivoCancela())) {
				return this.getMotivoCancelacas();
			} else {
				return this.getMotivoCancela();
			}
		} else {
			if (Utilidades.isEmpty(this.getMotivoCancelacas())) {
				return this.getMotivoCancela();
			} else {
				return this.getMotivoCancelacas();
			}
		}
	}

	/**
	 * 
	 * @return String
	 */
	public String getRazonAplazacas() {
		return this.razonAplazacas;
	}

	/**
	 * 
	 * @param razonAplazacas
	 *            String
	 */
	public void setRazonAplazacas(String razonAplazacas) {
		this.razonAplazacas = razonAplazacas;
	}

	/**
	 * 
	 * @return String
	 */
	public String getRazonAplazaEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getRazonAplaza())) {
				return this.getRazonAplazacas();
			} else {
				return this.getRazonAplaza();
			}
		} else {
			if (Utilidades.isEmpty(this.getRazonAplazacas())) {
				return this.getRazonAplaza();
			} else {
				return this.getRazonAplazacas();
			}
		}
	}

	/**
	 * 
	 * @return String
	 */
	public String getObservaciones() {
		return this.observaciones;
	}

	/**
	 * 
	 * @param observaciones
	 *            String
	 */
	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	/**
	 * 
	 * @return String
	 */
	public String getObservacionescas() {
		return this.observacionescas;
	}

	/**
	 * 
	 * @param observacionescas
	 *            String
	 */
	public void setObservacionescas(String observacionescas) {
		this.observacionescas = observacionescas;
	}

	/**
	 * 
	 * @return String
	 */
	public String getObservacionesEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			if (Utilidades.isEmpty(this.getObservaciones())) {
				return this.getObservacionescas();
			} else {
				return this.getObservaciones();
			}
		} else {
			if (Utilidades.isEmpty(this.getObservacionescas())) {
				return this.getObservaciones();
			} else {
				return this.getObservacionescas();
			}
		}
	}

	/**
	 * 
	 * @return Long
	 */
	public Long getElemBase() {
		return elemBase;
	}

	/**
	 * 
	 * @param elemBase
	 *            Long
	 */
	public void setElemBase(Long elemBase) {
		this.elemBase = elemBase;
	}

	/**
	 * 
	 * @return Long
	 */
	public Long getPreguntaHecha() {
		return preguntaHecha;
	}

	/**
	 * 
	 * @param preguntaHecha
	 *            Long
	 */
	public void setPreguntaHecha(Long preguntaHecha) {
		this.preguntaHecha = preguntaHecha;
	}

	/**
	 * 
	 * @return String
	 */
	public String getPreguntaHechaEs() {
		return preguntaHechaEs;
	}

	/**
	 * 
	 * @param preguntaHechaEs
	 *            String
	 */
	public void setPreguntaHechaEs(String preguntaHechaEs) {
		this.preguntaHechaEs = preguntaHechaEs;
	}

	/**
	 * 
	 * @return String
	 */
	public String getPreguntaHechaEu() {
		return preguntaHechaEu;
	}

	/**
	 * 
	 * @param preguntaHechaEu
	 *            String
	 */
	public void setPreguntaHechaEu(String preguntaHechaEu) {
		this.preguntaHechaEu = preguntaHechaEu;
	}

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

	public String getPreguntaHechaEsEu() {
		if (Constants.EUSKARA.equals(LocaleContextHolder.getLocale().getLanguage())) {
			return this.getPreguntaHechaEu();
		} else {
			return this.getPreguntaHechaEs();
		}
	}

}
