123 lines
3.8 KiB
Plaintext
Executable File
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);
|
|
}
|
|
}
|
|
|
|
}
|