maia_modificado/.svn/pristine/37/372da5cdcbcf67a0db64640a961...

123 lines
3.8 KiB
Plaintext
Executable File

package com.fp.viaticos.mail.thread;
import java.util.ArrayList;
import java.util.List;
import com.fp.bpmlib.flow.RuleUtil;
import com.fp.common.logger.APPLogger;
import com.fp.dto.Request;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.PersistenceManager;
import com.fp.persistence.commondb.data.SessionData;
import com.fp.persistence.commondb.data.ThreadFacade;
import com.fp.viaticos.mail.Empleado;
import com.fp.viaticos.mail.Tesoreria;
/**
* Hilo que se encarga de enviar mail's al empleado y/o tesoreria por solicitud. El mail se envia si el usuario tiene
* tareas en estatus aprobar o por ingresar informe.
*
* @author Jorge Vaca.
* @version 2.1
*/
public class MailPorSolicitud implements Runnable {
/**
* Request con el que inicia la transaccion de envio de correos.
*/
private final SaveRequest saverequest;
/**
* Numero de solicitud a obtener informacion asociada a la solicitud con la que se envia el mail.
*/
private final String csolicitud;
/**
* S solicitud. I informe.
*/
private final String tipo;
/**
* Numero de dias desde la fecha de vencimiento del viatico.
*/
private final Integer dias;
/**
* Crea una instancia de MailPorSolicitud.
*
* @param saverequest Objeto con el que inicia una solicitud.
* @param csolicitud Numero de solicitus.
* @param tipo Tipo de registro, S solicitud, I informe.
* @throws Exception
*/
public MailPorSolicitud(SaveRequest saverequest, String csolicitud, String tipo, Integer dias) throws Exception {
this.saverequest = saverequest;
this.csolicitud = csolicitud;
this.tipo = tipo;
this.dias = dias;
}
/**
* Metodo que se encarga de inicio de ejecucion del hilo.
*/
@Override
public void run() {
try {
process();
} catch (Exception e) {
APPLogger.getLogger().error(e);
}
}
/**
* Metodo que se encarga de la llamada al ejb para la ejecucion de una cuenta.
*
* @throws Exception Se presenta en el caso que la el proceso de la tarea no haya sido satisfactoria
*/
private void process() throws Exception {
try {
SessionData s = new SessionData();
s.setCompany(saverequest.getCompany());
ThreadFacade.setSaveRequest(s);
PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal());
PersistenceHelper.beginNewTransaction();
this.sendMail();
PersistenceHelper.commitNewTransaction();
} catch (Exception e) {
PersistenceHelper.rollbackNewTransaction();
APPLogger.getLogger().error(e);
}
}
/**
* Envia mail al empleado y a tesoria si tiene 4 dias de reteazo en tomar acciones en el flujo.
*
* @throws Exception
*/
private void sendMail() throws Exception {
RuleUtil.setSubjectTemplate(1);
RuleUtil.setContentTemplate(2);
List<String> lemail = new ArrayList<String>();
Empleado emp = new Empleado();
lemail.addAll(emp.getEmail(csolicitud, tipo));
if (dias == 4) {
Tesoreria t = new Tesoreria();
lemail.addAll(t.getEmail(csolicitud, tipo));
}
for (String email : lemail) {
RuleUtil.toAddress(email);
}
if (!lemail.isEmpty()) {
Request request = new Request();
saverequest.copy(request);
request.put("csolicitud", csolicitud);
RuleUtil.sendMail(request);
}
}
}