package com.ejie.ad74a.model;

import java.sql.Clob;
import java.util.Date;

import com.ejie.ad74a.exceptions.ManagerErrors;
import com.ejie.ad74a.util.UtilSQL;
import com.ejie.ad74a.util.comun.UtilidadesXML;
import com.ejie.ad74a.util.constantes.ProcedimientosEnum;
import com.ejie.ad74a.util.constantes.TareasEnum;
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;

/**
 * TareasTramite generated by UDA, 22-mar-2023 17:10:15.
 * 
 * @author UDA
 */

public class TareasTramite implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idTareaTram11;
	private MaestroTareas maestroTareas;
	private TramitesExpediente tramitesExpediente;
	private String idEstado11;
	private String taskguid11;
	private Date fInicio11;
	private Date fFin11;
	private Date fNotificacion11;
	private Date fAcuse11;
	private String textoReq11;
	private Date fRegistro11;
	private String numRegistro11;
	private String estadoDocumentacion11;
	private String idNotificacion11;
	private Date fAlta11;
	private String usuAlta11;
	private Date fModif11;
	private String usuModif11;
	private Long codSituacion11;
	private Clob datosTarea11;

	// Campos para la gestion de los datos tecnicos de la tarea
	private DatosTarea datosTarea = null;

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

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

	/**
	 * Method 'TareasTramite'.
	 * 
	 * @param idTareaTram11         Long
	 * @param idEstado11            String
	 * @param taskguid11            String
	 * @param fInicio11             Date
	 * @param fFin11                Date
	 * @param fNotificacion11       Date
	 * @param fAcuse11              Date
	 * @param textoReq11            String
	 * @param fRegistro11           Date
	 * @param numRegistro11         String
	 * @param estadoDocumentacion11 String
	 * @param idNotificacion11      String
	 * @param fAlta11               Date
	 * @param usuAlta11             String
	 * @param fModif11              Date
	 * @param usuModif11            String
	 * @param maestroTareas         MaestroTareas
	 * @param tramitesExpediente    TramitesExpediente
	 * @param datosTarea11          Clob
	 */
	public TareasTramite(Long idTareaTram11, String idEstado11, String taskguid11, Date fInicio11, Date fFin11,
			Date fNotificacion11, Date fAcuse11, String textoReq11, Date fRegistro11, String numRegistro11,
			String estadoDocumentacion11, String idNotificacion11, Date fAlta11, String usuAlta11, Date fModif11,
			String usuModif11, MaestroTareas maestroTareas, TramitesExpediente tramitesExpediente, Clob datosTarea11) {

		this.idTareaTram11 = idTareaTram11;
		this.maestroTareas = maestroTareas;
		this.tramitesExpediente = tramitesExpediente;
		this.idEstado11 = idEstado11;
		this.taskguid11 = taskguid11;
		this.fInicio11 = fInicio11;
		this.fFin11 = fFin11;
		this.fNotificacion11 = fNotificacion11;
		this.fAcuse11 = fAcuse11;
		this.textoReq11 = textoReq11;
		this.fRegistro11 = fRegistro11;
		this.numRegistro11 = numRegistro11;
		this.estadoDocumentacion11 = estadoDocumentacion11;
		this.idNotificacion11 = idNotificacion11;
		this.fAlta11 = fAlta11;
		this.usuAlta11 = usuAlta11;
		this.fModif11 = fModif11;
		this.usuModif11 = usuModif11;
		this.datosTarea11 = datosTarea11;
	}

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

	public Long getIdTareaTram11() {
		return this.idTareaTram11;
	}

	/**
	 * Method 'setIdTareaTram11'.
	 *
	 * @param idTareaTram11 Long
	 * @return
	 */

	public void setIdTareaTram11(Long idTareaTram11) {
		this.idTareaTram11 = idTareaTram11;
	}

	/**
	 * Method 'getMaestroTareas'.
	 *
	 * @return MaestroTareas
	 */

	public MaestroTareas getMaestroTareas() {
		return this.maestroTareas;
	}

	/**
	 * Method 'setMaestroTareas'.
	 *
	 * @param maestroTareas MaestroTareas
	 * @return
	 */

	public void setMaestroTareas(MaestroTareas maestroTareas) {
		this.maestroTareas = maestroTareas;
	}

	/**
	 * Method 'getTramitesExpediente'.
	 *
	 * @return TramitesExpediente
	 */

	public TramitesExpediente getTramitesExpediente() {
		return this.tramitesExpediente;
	}

	/**
	 * Method 'setTramitesExpediente'.
	 *
	 * @param tramitesExpediente TramitesExpediente
	 * @return
	 */

	public void setTramitesExpediente(TramitesExpediente tramitesExpediente) {
		this.tramitesExpediente = tramitesExpediente;
	}

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

	public String getIdEstado11() {
		return this.idEstado11;
	}

	/**
	 * Method 'setIdEstado11'.
	 *
	 * @param idEstado11 String
	 * @return
	 */

	public void setIdEstado11(String idEstado11) {
		this.idEstado11 = idEstado11;
	}

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

	public String getTaskguid11() {
		return this.taskguid11;
	}

	/**
	 * Method 'setTaskguid11'.
	 *
	 * @param taskguid11 String
	 * @return
	 */

	public void setTaskguid11(String taskguid11) {
		this.taskguid11 = taskguid11;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

	public String getTextoReq11() {
		return this.textoReq11;
	}

	/**
	 * Method 'setTextoReq11'.
	 *
	 * @param textoReq11 String
	 * @return
	 */

	public void setTextoReq11(String textoReq11) {
		this.textoReq11 = textoReq11;
	}

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

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

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

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

	public String getNumRegistro11() {
		return this.numRegistro11;
	}

	/**
	 * Method 'setNumRegistro11'.
	 *
	 * @param numRegistro11 String
	 * @return
	 */

	public void setNumRegistro11(String numRegistro11) {
		this.numRegistro11 = numRegistro11;
	}

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

	public String getEstadoDocumentacion11() {
		return this.estadoDocumentacion11;
	}

	/**
	 * Method 'setEstadoDocumentacion11'.
	 *
	 * @param estadoDocumentacion11 String
	 * @return
	 */

	public void setEstadoDocumentacion11(String estadoDocumentacion11) {
		this.estadoDocumentacion11 = estadoDocumentacion11;
	}

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

	public String getIdNotificacion11() {
		return this.idNotificacion11;
	}

	/**
	 * Method 'setIdNotificacion11'.
	 *
	 * @param idNotificacion11 String
	 * @return
	 */

	public void setIdNotificacion11(String idNotificacion11) {
		this.idNotificacion11 = idNotificacion11;
	}

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

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

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

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

	public String getUsuAlta11() {
		return this.usuAlta11;
	}

	/**
	 * Method 'setUsuAlta11'.
	 *
	 * @param usuAlta11 String
	 * @return
	 */

	public void setUsuAlta11(String usuAlta11) {
		this.usuAlta11 = usuAlta11;
	}

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

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

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

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

	public String getUsuModif11() {
		return this.usuModif11;
	}

	/**
	 * Method 'setUsuModif11'.
	 *
	 * @param usuModif11 String
	 * @return
	 */

	public void setUsuModif11(String usuModif11) {
		this.usuModif11 = usuModif11;
	}

	/**
	 * 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(" [ idTareaTram11: ").append(this.idTareaTram11).append(" ]");
		result.append(", [ idEstado11: ").append(this.idEstado11).append(" ]");
		result.append(", [ taskguid11: ").append(this.taskguid11).append(" ]");
		result.append(", [ fInicio11: ").append(this.fInicio11).append(" ]");
		result.append(", [ fFin11: ").append(this.fFin11).append(" ]");
		result.append(", [ fNotificacion11: ").append(this.fNotificacion11).append(" ]");
		result.append(", [ fAcuse11: ").append(this.fAcuse11).append(" ]");
		result.append(", [ textoReq11: ").append(this.textoReq11).append(" ]");
		result.append(", [ fRegistro11: ").append(this.fRegistro11).append(" ]");
		result.append(", [ numRegistro11: ").append(this.numRegistro11).append(" ]");
		result.append(", [ estadoDocumentacion11: ").append(this.estadoDocumentacion11).append(" ]");
		result.append(", [ idNotificacion11: ").append(this.idNotificacion11).append(" ]");
		result.append(", [ fAlta11: ").append(this.fAlta11).append(" ]");
		result.append(", [ usuAlta11: ").append(this.usuAlta11).append(" ]");
		result.append(", [ fModif11: ").append(this.fModif11).append(" ]");
		result.append(", [ usuModif11: ").append(this.usuModif11).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getCodSituacion11'.
	 *
	 * @return Long
	 */
	public Long getCodSituacion11() {
		return codSituacion11;
	}

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

	/**
	 * Method 'getDatosTarea11'.
	 *
	 * @return Clob
	 */
	@JsonIgnore
	public Clob getDatosTarea11() {
		return datosTarea11;
	}

	/**
	 * Method 'setDatosTarea11'.
	 *
	 * @param datosTarea11 Clob
	 * @return
	 */
	public void setDatosTarea11(Clob datosTarea11) {
		this.datosTarea11 = datosTarea11;
	}

	/**
	 * Method 'setDatosTareaClob'.
	 *
	 * @param datosTarea11 DatosTarea
	 * @return
	 */
	public void setDatosTareaClob(DatosTarea datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Method 'setDatosTareaClobAlta'.
	 *
	 * @param datosTarea11 DatosTareaEstudioAlta
	 * @return
	 */
	public void setDatosTareaClobAlta(DatosTareaEstudioAlta datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al parsear el modelo clob de tareas");
		}
	}

	/**
	 * Method 'setDatosTareaClobBaja'.
	 *
	 * @param datosTarea11 DatosTareaEstudioBaja
	 * @return
	 */
	public void setDatosTareaClobBaja(DatosTareaEstudioBaja datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al parsear el modelo clob de tareas");
		}
	}

	/**
	 * Method 'setDatosTareaClobModDireccion'.
	 *
	 * @param datosTarea11 DatosTareaEstudioModDireccion
	 * @return
	 */
	public void setDatosTareaClobModDireccion(DatosTareaEstudioModDireccion datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al parsear el modelo clob de tareas");
		}
	}

	/**
	 * Method 'setDatosTareaClobRevision'.
	 *
	 * @param datosTarea11 DatosTareaEstudioRevision
	 * @return
	 */
	public void setDatosTareaClobRevision(DatosTareaEstudioRevision datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al parsear el modelo clob de tareas");
		}
	}

	/**
	 * Method 'setDatosTareaClobInforme'.
	 *
	 * @param datosTarea11 DatosTareaEstudioInforme
	 * @return
	 */
	public void setDatosTareaClobInforme(DatosTareaEstudioInforme datosTarea11) {
		try {
			this.datosTarea11 = UtilSQL.stringToClob(UtilidadesXML.marshalObjectWS(datosTarea11));
		} catch (Exception e) {
			ManagerErrors.manageException(e, "Error al parsear el modelo clob de tareas");
		}
	}

	/**
	 * Method 'getDatosTareaStr'.
	 *
	 * @return String
	 */
	@JsonIgnore
	public String getDatosTareaStr() {
		return UtilSQL.clobToString(datosTarea11);
	}

	/**
	 * Method 'getDatosTarea'.
	 *
	 * @return DatosTarea
	 */
	public DatosTarea getDatosTarea() {
		return datosTarea;
	}

	/**
	 * Method 'setDatosTarea'.
	 *
	 * @param datosTarea DatosTarea
	 * @return
	 */
	public void setDatosTarea(DatosTarea datosTarea) {
		this.datosTarea = datosTarea;
	}

	/**
	 * Method 'getDatosTarea'.
	 *
	 * @return DatosTarea
	 */
	public DatosTareaEstudio getDatosTareaEstudio() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea())) {
			return (DatosTareaEstudio) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'getDatosTareaEstudioAlta'.
	 *
	 * @return DatosTareaEstudioAlta
	 */
	public DatosTareaEstudioAlta getDatosTareaEstudioAlta() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea()) && ProcedimientosEnum.ALTA
				.getId().equalsIgnoreCase(((DatosTareaEstudio) datosTarea).getIdProcedimiento00())) {
			return (DatosTareaEstudioAlta) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'setDatosTareaEstudioAlta'.
	 *
	 * @param datosTareaEstudioAlta DatosTareaEstudioAlta
	 * @return
	 */
	public void setDatosTareaEstudioAlta(DatosTareaEstudioAlta datosTareaEstudioAlta) {
		this.datosTarea = datosTareaEstudioAlta;
	}

	/**
	 * Method 'getDatosTareaEstudioBaja'.
	 *
	 * @return DatosTareaEstudioBaja
	 */
	public DatosTareaEstudioBaja getDatosTareaEstudioBaja() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea()) && ProcedimientosEnum.BAJA
				.getId().equalsIgnoreCase(((DatosTareaEstudio) datosTarea).getIdProcedimiento00())) {
			return (DatosTareaEstudioBaja) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'setDatosTareaEstudioAlta'.
	 *
	 * @param datosTareaEstudioAlta DatosTareaEstudioAlta
	 * @return
	 */
	public void setDatosTareaEstudioBaja(DatosTareaEstudioBaja datosTareaEstudioAlta) {
		this.datosTarea = datosTareaEstudioAlta;
	}

	/**
	 * Method 'datosTareaEstudioModDireccion'.
	 *
	 * @param DatosTareaEstudioModDireccion datosTareaEstudioModDireccion
	 * @return
	 */
	public void setDatosTareaEstudioModDireccion(DatosTareaEstudioModDireccion datosTareaEstudioModDireccion) {
		this.datosTarea = datosTareaEstudioModDireccion;
	}

	/**
	 * Method 'getDatosTareaEstudioModDireccion'.
	 *
	 * @return DatosTareaEstudioModDireccion
	 */
	public DatosTareaEstudioModDireccion getDatosTareaEstudioModDireccion() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea())
				&& ProcedimientosEnum.MODIFICACION.getId()
						.equalsIgnoreCase(((DatosTareaEstudio) datosTarea).getIdProcedimiento00())) {
			return (DatosTareaEstudioModDireccion) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'setDatosTareaEstudioInforme'.
	 *
	 * @param DatosTareaEstudioInforme DatosTareaEstudioInforme
	 * @return
	 */
	public void setDatosTareaEstudioInforme(DatosTareaEstudioInforme datosTareaEstudioInforme) {
		this.datosTarea = datosTareaEstudioInforme;
	}

	/**
	 * Method 'getDatosTareaEstudioInforme'.
	 *
	 * @return DatosTareaEstudioInforme
	 */
	public DatosTareaEstudioInforme getDatosTareaEstudioInforme() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea())
				&& ProcedimientosEnum.INFORME.getId()
						.equalsIgnoreCase(((DatosTareaEstudio) datosTarea).getIdProcedimiento00())) {
			return (DatosTareaEstudioInforme) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'setDatosTareaEstudioRevision'.
	 *
	 * @param DatosTareaEstudioRevision datosTareaEstudioRevision
	 * @return
	 */
	public void setDatosTareaEstudioRevision(DatosTareaEstudioRevision datosTareaEstudioRevision) {
		this.datosTarea = datosTareaEstudioRevision;
	}

	/**
	 * Method 'getDatosTareaEstudioRevision'.
	 *
	 * @return DatosTareaEstudioRevision
	 */
	public DatosTareaEstudioRevision getDatosTareaEstudioRevision() {
		if (datosTarea != null && TareasEnum.ESTUDIO.getId().equals(datosTarea.getIdTarea())
				&& ProcedimientosEnum.REVISION_PRECIO.getId()
						.equalsIgnoreCase(((DatosTareaEstudio) datosTarea).getIdProcedimiento00())) {
			return (DatosTareaEstudioRevision) datosTarea;
		}
		return null;
	}

	/**
	 * Method 'datosTareaEstudioModDireccion'.
	 *
	 * @param DatosTareaEstudioModDireccion datosTareaEstudioModDireccion
	 * @return
	 */
	public void setDatosTareaAportarDocu(DatosTareaAportarDocu datosTareaAportarDocu) {
		this.datosTarea = datosTareaAportarDocu;
	}

	/**
	 * Method 'getDatosTareaEstudioModDireccion'.
	 *
	 * @return DatosTareaEstudioModDireccion
	 */
	public DatosTareaAportarDocu getDatosTareaAportarDocu() {
		if (datosTarea != null && TareasEnum.ADJUNTAR_DOCUMENTACION.getId().equals(datosTarea.getIdTarea())) {
			return (DatosTareaAportarDocu) datosTarea;
		}
		return null;
	}
}
