package com.ejie.ad74a.tareas.service;

import java.util.Calendar;
import java.util.GregorianCalendar;

import com.ejie.ad74a.constantes.Constantes;
import com.ejie.ad74a.util.comun.UtilSeguridad;
import com.ejie.ad74a.util.constantes.ProcedimientosEnum;
import com.ejie.ad74a.ws.client.platea.tareasTramitacion.TNiaType;
import com.ejie.ad74a.ws.client.platea.tareasTramitacion.TPersonIDName;

/**
 * Utilidades comunes en la gestión de la ejecución de la tarea
 */
public class TareasUtils {

	/**
	 * Constructor privado por defecto
	 */
	private TareasUtils() {
	}

	/**
	 * Crea el SenderID de una tarea Automática
	 * 
	 * @return TPersonIDName
	 */
	public static TPersonIDName getSenderIdAutomatico() {
		TPersonIDName senderID = new TPersonIDName();
		senderID.setID(Constantes.COD_APLICACION);
		senderID.setName("Autom&aacute;tica");
		return senderID;
	}

	public static TPersonIDName getSenderTramitador() {
		TPersonIDName senderID = new TPersonIDName();
		try {
			senderID.setType(TNiaType.NIF);
			senderID.setName(UtilSeguridad.getUsuarioConectado().getName());
			senderID.setID(UtilSeguridad.getUsuarioConectado().getNif());

		} catch (Exception e) {
			senderID.setID(Constantes.COD_APLICACION);
			senderID.setName("Autom&aacute;tica");
		}

		return senderID;
	}

	public static String generateFolderNumber(int codSeqInt, String idProcedure) {
		// nomenclatura TL_X_ANYO_SECUENCIAL
		// X ->
		// Baja - B
		// Modificacion - M
		// Revision Precio publico - P
		// Exoneracion - E
		// Alta -
		// AAAA Anyo
		// NNNNNN cod sequencial
		StringBuilder numFolder = new StringBuilder();
		String codSeq = String.format("%06d", codSeqInt);
		String markProcedure = ProcedimientosEnum.getSufixProcedureByProcedure(idProcedure);
		numFolder.append(com.ejie.ad74a.util.constantes.Constantes.CABECERA_NAME_FOLDER).append("_")
				.append(markProcedure).append(!markProcedure.equalsIgnoreCase("") ? "_" : "").append(getCurrentYear())
				.append("_").append(codSeq);
		return numFolder.toString();
	}

	public static int getCurrentYear() {
		Calendar fecha = new GregorianCalendar();
		int anyo = fecha.get(Calendar.YEAR);
		return anyo;
	}

	public static String getBuzonByProdedure(String procedureId) {
		String buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_MAILBOX_ADMIN;

		if (procedureId != null) {
			if (procedureId.equalsIgnoreCase(com.ejie.ad74a.util.constantes.Constantes.Procedimientos.ALTA)) {
				buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_PROCEDURE_MAILBOX_ALTA;
			} else if (procedureId.equalsIgnoreCase(com.ejie.ad74a.util.constantes.Constantes.Procedimientos.BAJA)) {
				buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_PROCEDURE_MAILBOX_BAJA;
			} else if (procedureId
					.equalsIgnoreCase(com.ejie.ad74a.util.constantes.Constantes.Procedimientos.MODIFICACION)) {
				buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_PROCEDURE_MAILBOX_MODIFICACION;
			} else if (procedureId
					.equalsIgnoreCase(com.ejie.ad74a.util.constantes.Constantes.Procedimientos.REVISION_PRECIO)) {
				buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_PROCEDURE_MAILBOX_REVISION_PRECIO;
			} else if (procedureId
					.equalsIgnoreCase(com.ejie.ad74a.util.constantes.Constantes.Procedimientos.INFORME_INTERVENCION)) {
				buzon = com.ejie.ad74a.util.constantes.Constantes.MailBox.PLATEA_PROCEDURE_MAILBOX_INFORME_INTERVENCION;
			}
		}

		return buzon;
	}
}
