package com.ejie.ab61.model.terceros;

import com.ejie.ab61.model.expedientes.RelExpTer;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

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

/**
 * DatosTerceros  
 * 
 *  
 */

public class DatosTerceros implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer idTercero;
	private String documento;
	private Long idTipoDocumento;
	private String nombre;
	private String apellido1;
	private String apellido2;
	private Sexo sexoIdioma;

	private Long idSexo;
	private Long telefono;
	private String email;
	private Integer idioma;
	private Integer tipoParticipante;
	private Date fechaRegistro;
	private String usuarioRegistro;
	private Date fechaUltmodificacion;
	private String usuarioUltmodificacion;
	private String identificadorEstablecimiento;

	private List<DatosDirecciones> datosDireccioneses = new ArrayList<DatosDirecciones>();
	private List<RelExpTer> relExpTers = new ArrayList<RelExpTer>();
	private List<CanalesAviso> canalesAvisos = new ArrayList<CanalesAviso>();

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

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

	/**
	 * Method 'DatosTerceros'.
	 * 
	 * @param idTercero
	 *            Integer
	 * @param documento
	 *            String
	 * @param idTipoDocumento
	 *            Long
	 * @param nombre
	 *            String
	 * @param apellido1
	 *            String
	 * @param apellido2
	 *            String
	 * @param idSexo
	 *            Long
	 * @param telefono
	 *            Long
	 * @param email
	 *            String
	 * @param idioma
	 *            Integer
	 * @param tipoParticipante
	 *            Integer
	 * @param fechaRegistro
	 *            Date
	 * @param usuarioRegistro
	 *            String
	 * @param fechaUltmodificacion
	 *            Date
	 * @param usuarioUltmodificacion
	 *            String
	 * @param identificadorEstablecimiento
	 *            String
	 * @param datosTerceros
	 *            DatosTerceros
	 */
	public DatosTerceros(Integer idTercero, String documento, Long idTipoDocumento, String nombre, String apellido1,
			String apellido2, Long idSexo, Long telefono, String email, Integer idioma, Integer tipoParticipante,
			Date fechaRegistro, String usuarioRegistro, Date fechaUltmodificacion, String usuarioUltmodificacion) {
		this.idTercero = idTercero;
		this.documento = documento;
		this.idTipoDocumento = idTipoDocumento;
		this.nombre = nombre;
		this.apellido1 = apellido1;
		this.apellido2 = apellido2;
		this.idSexo = idSexo;
		this.telefono = telefono;
		this.email = email;
		this.idioma = idioma;
		this.tipoParticipante = tipoParticipante;
		this.fechaRegistro = fechaRegistro;
		this.usuarioRegistro = usuarioRegistro;
		this.fechaUltmodificacion = fechaUltmodificacion;
		this.usuarioUltmodificacion = usuarioUltmodificacion;

	}

	/**
	 * Method 'DatosTerceros'.
	 * 
	 * @param idTercero
	 *            Integer
	 * @param documento
	 *            String
	 * @param idTipoDocumento
	 *            Long
	 * @param nombre
	 *            String
	 * @param apellido1
	 *            String
	 * @param apellido2
	 *            String
	 * @param idSexo
	 *            Long
	 * @param telefono
	 *            Long
	 * @param email
	 *            String
	 * @param idioma
	 *            Integer
	 * @param tipoParticipante
	 *            Integer
	 * @param fechaRegistro
	 *            Date
	 * @param usuarioRegistro
	 *            String
	 * @param fechaUltmodificacion
	 *            Date
	 * @param usuarioUltmodificacion
	 *            String
	 * @param identificadorEstablecimiento
	 *            String
	 * @param datosTerceros
	 *            DatosTerceros
	 * @param datosTerceroses
	 *            List<DatosTerceros>
	 * @param datosDireccioneses
	 *            List<DatosDirecciones>
	 * @param relExpTers
	 *            List<RelExpTer>
	 */
	public DatosTerceros(Integer idTercero, String documento, Long idTipoDocumento, String nombre, String apellido1,
			String apellido2, Long idSexo, Long telefono, String email, Integer idioma, Integer tipoParticipante,
			Date fechaRegistro, String usuarioRegistro, Date fechaUltmodificacion, String usuarioUltmodificacion,
			String identificadorEstablecimiento, List<DatosDirecciones> datosDireccioneses,
			List<RelExpTer> relExpTers) {

		this.idTercero = idTercero;

		this.documento = documento;
		this.idTipoDocumento = idTipoDocumento;
		this.nombre = nombre;
		this.apellido1 = apellido1;
		this.apellido2 = apellido2;
		this.idSexo = idSexo;
		this.telefono = telefono;
		this.email = email;
		this.idioma = idioma;
		this.tipoParticipante = tipoParticipante;
		this.fechaRegistro = fechaRegistro;
		this.usuarioRegistro = usuarioRegistro;
		this.fechaUltmodificacion = fechaUltmodificacion;
		this.usuarioUltmodificacion = usuarioUltmodificacion;
		this.identificadorEstablecimiento = identificadorEstablecimiento;

		this.datosDireccioneses = datosDireccioneses;
		this.relExpTers = relExpTers;
	}

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

	public Integer getIdTercero() {
		return this.idTercero;
	}

	/**
	 * Method 'setIdTercero'.
	 *
	 * @param idTercero
	 *            Integer
	 * @return
	 */

	public void setIdTercero(Integer idTercero) {
		this.idTercero = idTercero;
	}

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

	public String getDocumento() {
		return this.documento;
	}

	/**
	 * Method 'setDocumento'.
	 *
	 * @param documento
	 *            String
	 * @return
	 */

	public void setDocumento(String documento) {
		this.documento = documento;
	}

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

	public Long getIdTipoDocumento() {
		return this.idTipoDocumento;
	}

	/**
	 * Method 'setIdTipoDocumento'.
	 *
	 * @param idTipoDocumento
	 *            Long
	 * @return
	 */

	public void setIdTipoDocumento(Long idTipoDocumento) {
		this.idTipoDocumento = idTipoDocumento;
	}

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

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

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

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

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

	public String getApellido1() {
		return this.apellido1;
	}

	/**
	 * Method 'setApellido1'.
	 *
	 * @param apellido1
	 *            String
	 * @return
	 */

	public void setApellido1(String apellido1) {
		this.apellido1 = apellido1;
	}

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

	public String getApellido2() {
		return this.apellido2;
	}

	/**
	 * Method 'setApellido2'.
	 *
	 * @param apellido2
	 *            String
	 * @return
	 */

	public void setApellido2(String apellido2) {
		this.apellido2 = apellido2;
	}

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

	public Long getIdSexo() {
		return this.idSexo;
	}

	/**
	 * Method 'setIdSexo'.
	 *
	 * @param idSexo
	 *            Long
	 * @return
	 */

	public void setIdSexo(Long idSexo) {
		this.idSexo = idSexo;
	}

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

	public Long getTelefono() {
		return this.telefono;
	}

	/**
	 * Method 'setTelefono'.
	 *
	 * @param telefono
	 *            Long
	 * @return
	 */

	public void setTelefono(Long telefono) {
		this.telefono = telefono;
	}

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

	public String getEmail() {
		return this.email;
	}

	/**
	 * Method 'setEmail'.
	 *
	 * @param email
	 *            String
	 * @return
	 */

	public void setEmail(String email) {
		this.email = email;
	}

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

	public Integer getIdioma() {
		return this.idioma;
	}

	/**
	 * Method 'setIdioma'.
	 *
	 * @param idioma
	 *            Integer
	 * @return
	 */

	public void setIdioma(Integer idioma) {
		this.idioma = idioma;
	}

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

	public Integer getTipoParticipante() {
		return this.tipoParticipante;
	}

	/**
	 * Method 'setTipoParticipante'.
	 *
	 * @param tipoParticipante
	 *            Integer
	 * @return
	 */

	public void setTipoParticipante(Integer tipoParticipante) {
		this.tipoParticipante = tipoParticipante;
	}

	/**
	 * 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;
	}

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

	public String getIdentificadorEstablecimiento() {
		return this.identificadorEstablecimiento;
	}

	/**
	 * Method 'setIdentificadorEstablecimiento'.
	 *
	 * @param identificadorEstablecimiento
	 *            String
	 * @return
	 */

	public void setIdentificadorEstablecimiento(String identificadorEstablecimiento) {
		this.identificadorEstablecimiento = identificadorEstablecimiento;
	}

	/**
	 * @return the sexoIdioma
	 */
	public Sexo getSexoIdioma() {
		return sexoIdioma;
	}

	/**
	 * @param sexoIdioma
	 *            the sexoIdioma to set
	 */
	public void setSexoIdioma(Sexo sexoIdioma) {
		this.sexoIdioma = sexoIdioma;
	}

	/**
	 * Method 'getDatosDireccioneses'.
	 *
	 * @return List
	 */
	@JsonIgnore
	public List<DatosDirecciones> getDatosDireccioneses() {
		return this.datosDireccioneses;
	}

	/**
	 * Method 'setDatosDireccioneses'.
	 *
	 * @param datosDireccioneses
	 *            List
	 * @return
	 */
	public void setDatosDireccioneses(List<DatosDirecciones> datosDireccioneses) {
		this.datosDireccioneses = datosDireccioneses;
	}

	/**
	 * Method 'getRelExpTers'.
	 *
	 * @return List
	 */

	public List<RelExpTer> getRelExpTers() {
		return this.relExpTers;
	}

	/**
	 * Method 'setRelExpTers'.
	 *
	 * @param relExpTers
	 *            List
	 * @return
	 */
	public void setRelExpTers(List<RelExpTer> relExpTers) {
		this.relExpTers = relExpTers;
	}

	/**
	 * @return the canalesAvisos
	 */
	public List<CanalesAviso> getCanalesAvisos() {
		return canalesAvisos;
	}

	/**
	 * @param canalesAvisos
	 *            the canalesAvisos to set
	 */
	public void setCanalesAvisos(List<CanalesAviso> canalesAvisos) {
		this.canalesAvisos = canalesAvisos;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "DatosTerceros [idTercero=" + idTercero + ", documento=" + documento + ", idTipoDocumento="
				+ idTipoDocumento + ", sexoIdioma=" + sexoIdioma + ", telefono=" + telefono + ", email=" + email
				+ ", idioma=" + idioma + ", tipoParticipante=" + tipoParticipante + ", identificadorEstablecimiento="
				+ identificadorEstablecimiento + ", datosDireccioneses=" + datosDireccioneses + ", relExpTers="
				+ relExpTers + ", canalesAvisos=" + canalesAvisos + "]";
	}

}
