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.pbpm.gene.TbpmGroupsUsers;
import com.fp.persistence.pviaticos.hra.Empleado;
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
import com.fp.simple.maia.MailRecipientGroup;

/**
 * Clase que se encarga de objener la lista de emails asociados a un grupo definod en TbpmGroupsUsers.
 * 
 * @version 2.1
 */
public class Grupos extends MailRecipientGroup {

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.simple.maia.MailRecipientGroup#getEmailAddress(java.lang.Object, java.lang.String)
     */
    @Override
    public Map<String, Object> getEmailAddress(Object pParam, String pGroupCode) throws Exception {
        List<String> lemail = new ArrayList<String>();
        Map<String, Object> mresp = new HashMap<String, Object>();

        List<TbpmGroupsUsers> lgrupos = TbpmGroupsUsers.find(PersistenceHelper.getEntityManager(), pGroupCode);
        for (TbpmGroupsUsers tbpmGroupsUsers : lgrupos) {
            String email = this.getEmailPorUsuario(tbpmGroupsUsers.getPk().getUsercode());
            if (email != null) {
                lemail.add(email);
            }
        }
        mresp.put("lemail", lemail);
        return mresp;
    }

    /**
     * Obtiene el email de un empleado de la sbs.
     * 
     * @param cusuario Codigo de usaurio.
     * @return String
     * @throws Exception
     */
    private String getEmailPorUsuario(String cusuario) throws Exception {
        EmpleadoJpql ejpql = new EmpleadoJpql();
        Empleado e = ejpql.findPorUsuarioWeb(cusuario);
        return e.getEmail();
    }

}
