maia/.svn/pristine/51/518adf36d317a907f4cad0f84c7...

91 lines
3.4 KiB
Plaintext
Executable File

package com.fp.viaticos.mail;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.pviaticos.hra.Empleado;
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
import com.fp.persistence.pviaticos.param.ViaCiudadUsuario;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
import com.fp.simple.maia.MailRecipient;
import com.fp.viaticos.rules.exception.ViaticosException;
/**
* Clase que se encarga de objener el email de un usuario asociado a tesoreria.
*
* @version 2.1
*/
public class Tesoreria 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 ejpql = new EmpleadoJpql();
Empleado e = ejpql.find(vsol.getCod_empleado());
String usuario = this.getUsuario(e.getCodigoLocalidad(), "TESORERIA");
// adiciona email del empleado.
lemail.add(ejpql.findPorUsuarioWeb(usuario.toLowerCase()).getEmail());
return lemail;
}
/**
* Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un
* funcionario de la SBS.
*
* @param ciudad Codigo de ciudad a obtener el usuario.
* @return String
* @throws Exception
*/
private String getUsuario(String ciudad, String actividad) throws Exception {
Query qry = PersistenceHelper.getEntityManager().createQuery(
"from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad ");
qry.setParameter("ciudad", ciudad);
qry.setParameter("actividad", actividad);
ViaCiudadUsuario obj = null;
try {
obj = (ViaCiudadUsuario) qry.getSingleResult();
} catch (NoResultException e) {
throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad);
}
return obj.getCod_usuario();
}
}