package com.ejie.ab61.model.expedientes;

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

import com.ejie.ab61.model.procedimientos.Procedimientos;
import com.ejie.ab61.model.terceros.DatosDirecciones;
import com.ejie.ab61.model.terceros.DatosTerceros;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * Expedientes  
 * 
 *  
 */

public class Expedientes implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer idExpediente;
	private Integer idProcedimiento;
	private Long idTerritorioHistorico;
	private String folderId;
	private String folderNumber;
	private String titulo;
	private Date fechaRegistro;
	private String usuarioRegistro;
	private Date fechaUltmodificacion;
	private String usuarioUltmodificacion;
	private String desProcedimientoCas;
	private String desProcedimientoEus;
	private Procedimientos procedimientos;
	private Integer relacionExpediente;
	private BigDecimal importeResuelto;
	private BigDecimal importeLiquidado;
	private DatosDirecciones datosDirecciones;
	private DatosTerceros datosTerceros;
	private boolean expedienteHistorico;

	private List<RelExpTer> relExpTer = new ArrayList<RelExpTer>();

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

	/**
	 * Method 'Expedientes'.
	 * 
	 * @param idExpediente
	 *            Integer
	 */
	public Expedientes(Integer idExpediente) {
		this.idExpediente = idExpediente;
	}

	/**
	 * Method 'Expedientes'.
	 * 
	 * @param idExpediente
	 *            Integer
	 */
	public Expedientes(String titulo) {
		this.titulo = titulo;
	}

	/**
	 * Method 'Expedientes'.
	 * 
	 * @param idExpediente
	 *            Integer
	 * @param idProcedimiento
	 *            Integer
	 * @param idTerritorioHistorico
	 *            Long
	 * @param folderId
	 *            String
	 * @param folderNumber
	 *            String
	 * @param titulo
	 *            String
	 * @param fechaEntrada
	 *            Date
	 * @param fechaRegistro
	 *            Date
	 * @param usuarioRegistro
	 *            String
	 */
	public Expedientes(Integer idExpediente, Integer idProcedimiento, Long idTerritorioHistorico, String folderId,
			String folderNumber, String titulo, Integer relacionExpediente, Date fechaRegistro,
			String usuarioRegistro) {
		this.idExpediente = idExpediente;
		this.idProcedimiento = idProcedimiento;
		this.idTerritorioHistorico = idTerritorioHistorico;
		this.folderId = folderId;
		this.folderNumber = folderNumber;
		this.titulo = titulo;
		this.relacionExpediente = relacionExpediente;
		this.fechaRegistro = fechaRegistro;
		this.usuarioRegistro = usuarioRegistro;
	}

	/**
	 * Method 'Expedientes'.
	 * 
	 * @param idExpediente
	 *            Integer
	 * @param idProcedimiento
	 *            Integer
	 * @param idTerritorioHistorico
	 *            Long
	 * @param folderId
	 *            String
	 * @param folderNumber
	 *            String
	 * @param titulo
	 *            String
	 * @param fechaEntrada
	 *            Date
	 * @param fechaRegistro
	 *            Date
	 * @param usuarioRegistro
	 *            String
	 */
	public Expedientes(Integer idExpediente, Integer idProcedimiento, Long idTerritorioHistorico, String folderId,
			String folderNumber, String titulo, Date fechaRegistro, String usuarioRegistro,
			Procedimientos procedimientos) {
		this.idExpediente = idExpediente;
		this.idProcedimiento = idProcedimiento;
		this.idTerritorioHistorico = idTerritorioHistorico;
		this.folderId = folderId;
		this.folderNumber = folderNumber;
		this.titulo = titulo;
		this.fechaRegistro = fechaRegistro;
		this.usuarioRegistro = usuarioRegistro;
		this.procedimientos = procedimientos;

	}

	/**
	 * Method 'Expedientes'.
	 * 
	 * @param idExpediente
	 *            Integer
	 * @param idProcedimiento
	 *            Integer
	 * @param idTerritorioHistorico
	 *            Long
	 * @param folderId
	 *            String
	 * @param folderNumber
	 *            String
	 * @param titulo
	 *            String
	 * @param fechaEntrada
	 *            Date
	 * @param fechaRegistro
	 *            Date
	 * @param usuarioRegistro
	 *            String
	 * @param relExpTerEmps
	 *            List<RelExpTerEmp>
	 */
	public Expedientes(Integer idExpediente, Integer idProcedimiento, Long idTerritorioHistorico, String folderId,
			String folderNumber, String titulo, Date fechaRegistro, String usuarioRegistro, List<RelExpTer> relExpTer) {

		this.idExpediente = idExpediente;
		this.idProcedimiento = idProcedimiento;
		this.idTerritorioHistorico = idTerritorioHistorico;
		this.folderId = folderId;
		this.folderNumber = folderNumber;
		this.titulo = titulo;
		this.fechaRegistro = fechaRegistro;
		this.usuarioRegistro = usuarioRegistro;
		this.relExpTer = relExpTer;
	}

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

	public Integer getIdExpediente() {
		return this.idExpediente;
	}

	/**
	 * Method 'setIdExpediente'.
	 *
	 * @param idExpediente
	 *            Integer
	 * @return
	 */

	public void setIdExpediente(Integer idExpediente) {
		this.idExpediente = idExpediente;
	}

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

	public Integer getIdProcedimiento() {
		return this.idProcedimiento;
	}

	/**
	 * Method 'setIdProcedimiento'.
	 *
	 * @param idProcedimiento
	 *            Integer
	 * @return
	 */

	public void setIdProcedimiento(Integer idProcedimiento) {
		this.idProcedimiento = idProcedimiento;
	}

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

	public Long getIdTerritorioHistorico() {
		return this.idTerritorioHistorico;
	}

	/**
	 * Method 'setIdTerritorioHistorico'.
	 *
	 * @param idTerritorioHistorico
	 *            Long
	 * @return
	 */

	public void setIdTerritorioHistorico(Long idTerritorioHistorico) {
		this.idTerritorioHistorico = idTerritorioHistorico;
	}

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

	public String getFolderId() {
		return this.folderId;
	}

	/**
	 * Method 'setFolderId'.
	 *
	 * @param folderId
	 *            String
	 * @return
	 */

	public void setFolderId(String folderId) {
		this.folderId = folderId;
	}

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

	public String getFolderNumber() {
		return this.folderNumber;
	}

	/**
	 * Method 'setFolderNumber'.
	 *
	 * @param folderNumber
	 *            String
	 * @return
	 */

	public void setFolderNumber(String folderNumber) {
		this.folderNumber = folderNumber;
	}

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

	public String getTitulo() {
		return this.titulo;
	}

	/**
	 * Method 'setTitulo'.
	 *
	 * @param titulo
	 *            String
	 * @return
	 */

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

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

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

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

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

	public String getUsuarioRegistro() {
		return this.usuarioRegistro;
	}

	/**
	 * Method 'setUsuarioRegistro'.
	 *
	 * @param usuarioRegistro
	 *            String
	 * @return
	 */

	public void setUsuarioRegistro(String usuarioRegistro) {
		this.usuarioRegistro = usuarioRegistro;
	}

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

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

	/**
	 * Method 'setFechaUltmodificacion'.
	 *
	 * @param fechaUltmodificacion
	 *            java.util.Date
	 * @return
	 */

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

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

	public String getUsuarioUltmodificacion() {
		return this.usuarioUltmodificacion;
	}

	/**
	 * Method 'setUsuarioUltmodificacion'.
	 *
	 * @param usuarioUltmodificacion
	 *            String
	 * @return
	 */

	public void setUsuarioUltmodificacion(String usuarioUltmodificacion) {
		this.usuarioUltmodificacion = usuarioUltmodificacion;
	}

	/**
	 * @return the desProcedimientoCas
	 */
	public String getDesProcedimientoCas() {
		return desProcedimientoCas;
	}

	/**
	 * @param desProcedimientoCas
	 *            the desProcedimientoCas to set
	 */
	public void setDesProcedimientoCas(String desProcedimientoCas) {
		this.desProcedimientoCas = desProcedimientoCas;
	}

	/**
	 * @return the desProcedimientoEus
	 */
	public String getDesProcedimientoEus() {
		return desProcedimientoEus;
	}

	/**
	 * @param desProcedimientoEus
	 *            the desProcedimientoEus to set
	 */
	public void setDesProcedimientoEus(String desProcedimientoEus) {
		this.desProcedimientoEus = desProcedimientoEus;
	}

	public Procedimientos getProcedimientos() {
		return procedimientos;
	}

	public void setProcedimientos(Procedimientos procedimientos) {
		this.procedimientos = procedimientos;
	}

	/**
	 * @return the relExpTer
	 */
	public List<RelExpTer> getRelExpTer() {
		return relExpTer;
	}

	/**
	 * @param relExpTer
	 *            the relExpTer to set
	 */
	public void setRelExpTer(List<RelExpTer> relExpTer) {
		this.relExpTer = relExpTer;
	}

	/**
	 * @return the relacionExpediente
	 */
	public Integer getRelacionExpediente() {
		return this.relacionExpediente;
	}

	/**
	 * @param relacionExpediente
	 *            the relacionExpediente to set
	 */
	public void setRelacionExpediente(Integer relacionExpediente) {
		this.relacionExpediente = relacionExpediente;
	}

	/**
	 * @return the importeResuelto
	 */
	public BigDecimal getImporteResuelto() {
		return this.importeResuelto;
	}

	/**
	 * @param importeResuelto
	 *            the importeResuelto to set
	 */
	public void setImporteResuelto(BigDecimal importeResuelto) {
		this.importeResuelto = importeResuelto;
	}

	/**
	 * @return the importeLiquidado
	 */
	public BigDecimal getImporteLiquidado() {
		return this.importeLiquidado;
	}

	/**
	 * @param importeLiquidado
	 *            the importeLiquidado to set
	 */
	public void setImporteLiquidado(BigDecimal importeLiquidado) {
		this.importeLiquidado = importeLiquidado;
	}

	/**
	 * @return the datosDirecciones
	 */
	public DatosDirecciones getDatosDirecciones() {
		return this.datosDirecciones;
	}

	/**
	 * @param datosDirecciones
	 *            the datosDirecciones to set
	 */
	public void setDatosDirecciones(DatosDirecciones datosDirecciones) {
		this.datosDirecciones = datosDirecciones;
	}

	/**
	 * @return the datosterceros
	 */
	public DatosTerceros getDatosTerceros() {
		return this.datosTerceros;
	}

	/**
	 * @param datosTerceros
	 *            the datosTerceros to set
	 */
	public void setDatosTerceros(DatosTerceros datosTerceros) {
		this.datosTerceros = datosTerceros;
	}

	/**
	 * @return the expedienteHistorico
	 */
	public boolean isExpedienteHistorico() {
		return expedienteHistorico;
	}

	/**
	 * @param expedienteHistorico
	 *            the expedienteHistorico to set
	 */
	public void setExpedienteHistorico(boolean expedienteHistorico) {
		this.expedienteHistorico = expedienteHistorico;
	}

	/**
	 * 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(" [ idExpediente: ").append(this.idExpediente).append(" ]");
		result.append(", [ idProcedimiento: ").append(this.idProcedimiento).append(" ]");
		result.append(", [ idTerritorioHistorico: ").append(this.idTerritorioHistorico).append(" ]");
		result.append(", [ folderId: ").append(this.folderId).append(" ]");
		result.append(", [ folderNumber: ").append(this.folderNumber).append(" ]");
		result.append(", [ titulo: ").append(this.titulo).append(" ]");
		result.append(", [ fechaRegistro: ").append(this.fechaRegistro).append(" ]");
		result.append(", [ usuarioRegistro: ").append(this.usuarioRegistro).append(" ]");
		result.append("}");
		return result.toString();
	}

}
