package com.ejie.ad74a.model;

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

import org.springframework.context.i18n.LocaleContextHolder;

import com.ejie.ad74a.constantes.Constantes;
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 com.ejie.ad74a.util.constantes.SentidoEnum;

/**
 * Llamadas generated by UDA, 10-jul-2023 9:33:38.
 * 
 * @author UDA
 */

public class Llamadas implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idLlamada29;
	private MaestroTipoLlamada maestroTipoLlamada;
	private MaestroSubtpoLlamada maestroSubtpoLlamada;
	private Integer sentido29;
	private Long duracion29;
	private Long tiempoRespuesta29;
	private Long idLlamadaPs29;
	private Integer respuesta29;
	private Date fAlta29;
	private String usuAlta29;
	private List<Alarmas> alarmases = new ArrayList<Alarmas>();

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

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

	/**
	 * Method 'Llamadas'.
	 * 
	 * @param idLlamada29          Long
	 * @param sentido29            Integer
	 * @param duracion29           Long
	 * @param tiempoRespuesta29    Long
	 * @param idLlamadaPs29        Long
	 * @param respuesta29          Integer
	 * @param fAlta29              Date
	 * @param usuAlta29            String
	 * @param maestroTipoLlamada   MaestroTipoLlamada
	 * @param maestroSubtpoLlamada MaestroSubtpoLlamada
	 */
	public Llamadas(Long idLlamada29, Integer sentido29, Long duracion29, Long tiempoRespuesta29, Long idLlamadaPs29,
			Integer respuesta29, Date fAlta29, String usuAlta29, MaestroTipoLlamada maestroTipoLlamada,
			MaestroSubtpoLlamada maestroSubtpoLlamada) {
		this.idLlamada29 = idLlamada29;
		this.maestroTipoLlamada = maestroTipoLlamada;
		this.maestroSubtpoLlamada = maestroSubtpoLlamada;
		this.sentido29 = sentido29;
		this.duracion29 = duracion29;
		this.tiempoRespuesta29 = tiempoRespuesta29;
		this.idLlamadaPs29 = idLlamadaPs29;
		this.respuesta29 = respuesta29;
		this.fAlta29 = fAlta29;
		this.usuAlta29 = usuAlta29;
	}

	/**
	 * Method 'Llamadas'.
	 * 
	 * @param idLlamada29          Long
	 * @param sentido29            Integer
	 * @param duracion29           Long
	 * @param tiempoRespuesta29    Long
	 * @param idLlamadaPs29        Long
	 * @param respuesta29          Integer
	 * @param fAlta29              Date
	 * @param usuAlta29            String
	 * @param maestroTipoLlamada   MaestroTipoLlamada
	 * @param maestroSubtpoLlamada MaestroSubtpoLlamada
	 * @param alarmases            List<Alarmas>
	 */
	public Llamadas(Long idLlamada29, Integer sentido29, Long duracion29, Long tiempoRespuesta29, Long idLlamadaPs29,
			Integer respuesta29, Date fAlta29, String usuAlta29, MaestroTipoLlamada maestroTipoLlamada,
			MaestroSubtpoLlamada maestroSubtpoLlamada, List<Alarmas> alarmases) {

		this.idLlamada29 = idLlamada29;
		this.maestroTipoLlamada = maestroTipoLlamada;
		this.maestroSubtpoLlamada = maestroSubtpoLlamada;
		this.sentido29 = sentido29;
		this.duracion29 = duracion29;
		this.tiempoRespuesta29 = tiempoRespuesta29;
		this.idLlamadaPs29 = idLlamadaPs29;
		this.respuesta29 = respuesta29;
		this.fAlta29 = fAlta29;
		this.usuAlta29 = usuAlta29;
		this.alarmases = alarmases;
	}

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

	public Long getIdLlamada29() {
		return this.idLlamada29;
	}

	/**
	 * Method 'setIdLlamada29'.
	 *
	 * @param idLlamada29 Long
	 * @return
	 */

	public void setIdLlamada29(Long idLlamada29) {
		this.idLlamada29 = idLlamada29;
	}

	/**
	 * Method 'getMaestroTipoLlamada'.
	 *
	 * @return MaestroTipoLlamada
	 */

	public MaestroTipoLlamada getMaestroTipoLlamada() {
		return this.maestroTipoLlamada;
	}

	/**
	 * Method 'setMaestroTipoLlamada'.
	 *
	 * @param maestroTipoLlamada MaestroTipoLlamada
	 * @return
	 */

	public void setMaestroTipoLlamada(MaestroTipoLlamada maestroTipoLlamada) {
		this.maestroTipoLlamada = maestroTipoLlamada;
	}

	/**
	 * Method 'getMaestroSubtpoLlamada'.
	 *
	 * @return MaestroSubtpoLlamada
	 */

	public MaestroSubtpoLlamada getMaestroSubtpoLlamada() {
		return this.maestroSubtpoLlamada;
	}

	/**
	 * Method 'setMaestroSubtpoLlamada'.
	 *
	 * @param maestroSubtpoLlamada MaestroSubtpoLlamada
	 * @return
	 */

	public void setMaestroSubtpoLlamada(MaestroSubtpoLlamada maestroSubtpoLlamada) {
		this.maestroSubtpoLlamada = maestroSubtpoLlamada;
	}

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

	public Integer getSentido29() {
		return this.sentido29;
	}

	/**
	 * Method 'setSentido29'.
	 *
	 * @param sentido29 Integer
	 * @return
	 */

	public void setSentido29(Integer sentido29) {
		this.sentido29 = sentido29;
	}

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

	public Long getDuracion29() {
		return this.duracion29;
	}

	/**
	 * Method 'setDuracion29'.
	 *
	 * @param duracion29 Long
	 * @return
	 */

	public void setDuracion29(Long duracion29) {
		this.duracion29 = duracion29;
	}

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

	public Long getTiempoRespuesta29() {
		return this.tiempoRespuesta29;
	}

	/**
	 * Method 'setTiempoRespuesta29'.
	 *
	 * @param tiempoRespuesta29 Long
	 * @return
	 */

	public void setTiempoRespuesta29(Long tiempoRespuesta29) {
		this.tiempoRespuesta29 = tiempoRespuesta29;
	}

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

	public Long getIdLlamadaPs29() {
		return this.idLlamadaPs29;
	}

	/**
	 * Method 'setIdLlamadaPs29'.
	 *
	 * @param idLlamadaPs29 Long
	 * @return
	 */

	public void setIdLlamadaPs29(Long idLlamadaPs29) {
		this.idLlamadaPs29 = idLlamadaPs29;
	}

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

	public Integer getRespuesta29() {
		return this.respuesta29;
	}

	/**
	 * Method 'setRespuesta29'.
	 *
	 * @param respuesta29 Integer
	 * @return
	 */

	public void setRespuesta29(Integer respuesta29) {
		this.respuesta29 = respuesta29;
	}

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

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

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

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

	public String getUsuAlta29() {
		return this.usuAlta29;
	}

	/**
	 * Method 'setUsuAlta29'.
	 *
	 * @param usuAlta29 String
	 * @return
	 */

	public void setUsuAlta29(String usuAlta29) {
		this.usuAlta29 = usuAlta29;
	}

	/**
	 * Method 'getAlarmases'.
	 *
	 * @return List
	 */
	@JsonIgnore
	public List<Alarmas> getAlarmases() {
		return this.alarmases;
	}

	/**
	 * Method 'setAlarmases'.
	 *
	 * @param alarmases List
	 * @return
	 */
	public void setAlarmases(List<Alarmas> alarmases) {
		this.alarmases = alarmases;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Llamadas [idLlamada29=").append(idLlamada29).append(", maestroTipoLlamada=")
				.append(maestroTipoLlamada).append(", maestroSubtpoLlamada=").append(maestroSubtpoLlamada)
				.append(", sentido29=").append(sentido29).append(", duracion29=").append(duracion29)
				.append(", tiempoRespuesta29=").append(tiempoRespuesta29).append(", idLlamadaPs29=")
				.append(idLlamadaPs29).append(", respuesta29=").append(respuesta29).append(", fAlta29=").append(fAlta29)
				.append(", usuAlta29=").append(usuAlta29).append(", alarmases=").append(alarmases).append("]");
		return builder.toString();
	}

	public String getDescSentido() {

		try {
			if (this.sentido29 == 0) {
				return SentidoEnum.EMITIDA.getLabelDesc(LocaleContextHolder.getLocale());
			} else if (this.sentido29 == 1) {
				return SentidoEnum.RECIBIDA.getLabelDesc(LocaleContextHolder.getLocale());
			}
		} catch (Exception e) {
			// Capturamos por si es null
			return SentidoEnum.SINESPECIFICAR.getLabelDesc(LocaleContextHolder.getLocale());
		}
		return "";

	}

}
