package com.fp.viaticos.mail;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
import com.fp.simple.maia.MailRecipient;

/**
 * Clase que se encarga de objener el email de un empleado para enviar notificaciones.
 * 
 * @version 2.1
 */
public class Empleado extends MailRecipient {

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object)
     */
    @SuppressWarnings("unchecked")
    @Override
    public Map<String, Object> getEmailAddress(Object pParam) throws Exception {
        Map<String, Object> mresp = new HashMap<String, Object>();
        HashMap<String, Object> m = (HashMap<String, Object>) pParam;
        Map<String, Object> mrequest = (Map<String, Object>) m.get("request");
        if (mrequest.get("csolicitud") == null) {
            return mresp;
        }
        String csolicitud = (String) mrequest.get("csolicitud");
        mresp.put("lemail", this.getEmail(csolicitud, "S"));
        return mresp;
    }

    /**
     * Entrega el email de un empleado, dado el codigo d solicitud y el tipo de solicitud.
     * 
     * @param csolicitud Codigo de solicitud.
     * @param tipo Tipo S solicitud, I informe.
     * @return List<String>
     * @throws Exception
     */
    public List<String> getEmail(String csolicitud, String tipo) throws Exception {
        List<String> lemail = new ArrayList<String>();
        ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, tipo));

        EmpleadoJpql e = new EmpleadoJpql();
        // adiciona email del empleado.
        lemail.add(e.find(vsol.getCod_empleado()).getEmail());
        return lemail;
    }
}
