package com.ejie.ab79.model.expedientes;

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

import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * DatosTerceros  
 * 
 *  
 */

public class DatosTerceros implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Integer idTercero;
	private String documento;
	private String nombre;
	private String apellido1;
	private String apellido2;
	private Sexo sexo;
	private TiposDocumento tipoDocumento;

	private Long telefono;
	private String email;
	private Integer idioma;
	private Integer tipoParticipante;
	private String usuarioRegistro;
	private String usuarioUltmodificacion;
	private String identificadorEstablecimiento;
	private DatosDirecciones datoDireccion;
	private Integer idRepresentante;

	private List<DatosDirecciones> datosDirecciones = new ArrayList<DatosDirecciones>();
	private List<DatosDirecciones> domiciliosActividad = 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 tipoDocumento
	 *            TiposDocumento
	 * @param nombre
	 *            String
	 * @param apellido1
	 *            String
	 * @param apellido2
	 *            String
	 * @param sexo
	 *            Sexo
	 * @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, TiposDocumento tipoDocumento, String nombre,
			String apellido1, String apellido2, Sexo sexo, Long telefono, String email, Integer idioma,
			Integer tipoParticipante, String usuarioRegistro, String usuarioUltmodificacion) {
		this.idTercero = idTercero;
		this.documento = documento;
		this.tipoDocumento = tipoDocumento;
		this.nombre = nombre;
		this.apellido1 = apellido1;
		this.apellido2 = apellido2;
		this.sexo = sexo;
		this.telefono = telefono;
		this.email = email;
		this.idioma = idioma;
		this.tipoParticipante = tipoParticipante;
		this.usuarioRegistro = usuarioRegistro;
		this.usuarioUltmodificacion = usuarioUltmodificacion;

	}

	/**
	 * Method 'DatosTerceros'.
	 * 
	 * @param idTercero
	 *            Integer
	 * @param documento
	 *            String
	 * @param tipoDocumento
	 *            TiposDocumento
	 * @param nombre
	 *            String
	 * @param apellido1
	 *            String
	 * @param apellido2
	 *            String
	 * @param sexo
	 *            Sexo
	 * @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 datosDirecciones
	 *            List<DatosDirecciones>
	 * @param relExpTers
	 *            List<RelExpTer>
	 */
	public DatosTerceros(Integer idTercero, String documento, TiposDocumento tipoDocumento, String nombre,
			String apellido1, String apellido2, Sexo sexo, Long telefono, String email, Integer idioma,
			Integer tipoParticipante, String usuarioRegistro, String usuarioUltmodificacion,
			String identificadorEstablecimiento, List<DatosDirecciones> datosDirecciones, List<RelExpTer> relExpTers) {

		this.idTercero = idTercero;

		this.documento = documento;
		this.tipoDocumento = tipoDocumento;
		this.nombre = nombre;
		this.apellido1 = apellido1;
		this.apellido2 = apellido2;
		this.sexo = sexo;
		this.telefono = telefono;
		this.email = email;
		this.idioma = idioma;
		this.tipoParticipante = tipoParticipante;
		this.usuarioRegistro = usuarioRegistro;
		this.usuarioUltmodificacion = usuarioUltmodificacion;
		this.identificadorEstablecimiento = identificadorEstablecimiento;

		this.datosDirecciones = datosDirecciones;
		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 'getNombre'.
	 *
	 * @return String
	 */

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

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

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

	public String getTerceroCompleto() {
		return (this.documento != null && !"".equals(this.documento) ? this.documento : "") + " - "
				+ (this.nombre != null && !"".equals(this.nombre) ? this.nombre : "") + " "
				+ (this.apellido1 != null && !"".equals(this.apellido1) ? this.apellido1 : "") + " "
				+ (this.apellido2 != null && !"".equals(this.apellido2) ? this.apellido2 : "");
	}

	/**
	 * 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 '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 'getUsuarioRegistro'.
	 *
	 * @return String
	 */

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

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

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

	/**
	 * 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 Sexo
	 */
	public Sexo getSexo() {
		return sexo;
	}

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

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

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

	/**
	 * @return the domiciliosActividad
	 */
	public List<DatosDirecciones> getDomiciliosActividad() {
		return this.domiciliosActividad;
	}

	/**
	 * @param domiciliosActividad
	 *            the domiciliosActividad to set
	 */
	public void setDomiciliosActividad(List<DatosDirecciones> domiciliosActividad) {
		this.domiciliosActividad = domiciliosActividad;
	}

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

	public TiposDocumento getTipoDocumento() {
		return tipoDocumento;
	}

	public void setTipoDocumento(TiposDocumento tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public DatosDirecciones getDatoDireccion() {
		return datoDireccion;
	}

	public void setDatoDireccion(DatosDirecciones datoDireccion) {
		this.datoDireccion = datoDireccion;
	}

	public Integer getIdRepresentante() {
		return idRepresentante;
	}

	public void setIdRepresentante(Integer idRepresentante) {
		this.idRepresentante = idRepresentante;
	}

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

}
