package com.fp.general.application; import java.util.List; import com.fp.bpmlib.task.client.TaskUtil; import com.fp.common.helper.BeanManager; import com.fp.common.helper.Constant; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.pgeneral.auth.TgeneSolicitudeClientdata; import com.fp.simple.dto.Responses; /** * Calse que valida que este revisado los datos de clientes. * * @author Jorge Vaca. * @version 2.1 */ public class ClientApproval extends TransactionRule { /* * (non-Javadoc) * * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) */ @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { List ldata = pSaveRequest.getSaveBeanModifiedRecords("TGENESOLICITUDECLIENTDATA"); if ((ldata == null) || ldata.isEmpty()) { return pSaveRequest; } TgeneSolicitudeClientdata client = (TgeneSolicitudeClientdata) ldata.get(0); List ldatabasedata = TgeneSolicitudeClientdata.find(PersistenceHelper.getEntityManager(), client.getPk() .getSolicitudnumber(), client.getPk().getSolicitudsequence()); if ((pSaveRequest.get(TaskUtil.BPM_TID) != null) && this.validate(ldata, ldatabasedata)) { pSaveRequest.put(TaskUtil.BPM_STATUS, Responses.OK.getCode()); } else { pSaveRequest.put(TaskUtil.BPM_STATUS, null); pSaveRequest.put(TaskUtil.BPM_TID, null); } return pSaveRequest; } /** * Verifica que los datos de de cleintes esten aprobados. * * @param ldata Datos de aprobacion que llegan en el request. * @param ldatabasedata Datos de aprobacion que almacenados en la base de datos. * @return boolean * @throws Exception */ private boolean validate(List ldata, List ldatabasedata) throws Exception { if (!this.validateData(ldata)) { return false; } for (TgeneSolicitudeClientdata obj : ldatabasedata) { if (!this.validateByRecord(obj, ldata)) { return false; } } return true; } /** * Valida que la informacion que llega en el request este aprobada, si no esta aprobada retorna false. * * @param ldata Datos de aprobacion que llegan en el request. * @return boolean * @throws Exception */ private boolean validateData(List ldata) throws Exception { for (Object object : ldata) { if (!Constant.ifYes(((TgeneSolicitudeClientdata) object).getChecked())) { return false; } } return true; } /** * Valida que el registro de verificacion de datos de clientes este aprobado, sea en los datos que llegan en el * request o este haya sido aprobado con anterioridad. * * @param client Datos de la base a verificar que el registro este aprobado. * @param ldata Lista de datos de aprobacion que llegan en el request. * @return boolean. * @throws Exception */ private boolean validateByRecord(TgeneSolicitudeClientdata client, List ldata) throws Exception { for (Object object : ldata) { TgeneSolicitudeClientdata obj = (TgeneSolicitudeClientdata) object; if (BeanManager.compareObject(client.getPk(), obj.getPk())) { return true; } } if (Constant.ifYes(client.getChecked())) { return true; } return false; } /* * (non-Javadoc) * * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) */ @Override public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { return pSaveRequest; } }