package com.fp.armas.rules.save.solicitud;

import java.util.List;

import com.fp.common.helper.Constant;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal;
import com.fp.persistence.parmas.soli.TarmSolicitudArmas;
import com.fp.persistence.parmas.soli.TarmSolicitudDocumento;
import com.fp.persistence.parmas.soli.TarmSolicitudGuardias;
import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos;

/**
 * Clase que se encarga de completar informaci&oacute;n de requisitos de una solicitud de tramites.
 * 
 * @author Jorge Vaca.
 * @version 2.1
 */
public class Requisitos extends TransactionRule {

    private static final long serialVersionUID = 1L;

    /**
     * Almacena toda la informaci&oacute;n correspondiente a la solicitud
     */
    @Override
    public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
        if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) {
            return pSaveRequest;
        }
        String codSolicitud = (String) pSaveRequest.get("csolicitud");
        List<Object> lintegrantes = pSaveRequest.getSaveBeanModifiedRecords("REQUISITOPORTIPOTRAMITE");
        if (lintegrantes != null && !lintegrantes.isEmpty()) {
	        for (Object object : lintegrantes) {
	            TarmSolicitudRequisitos obj = (TarmSolicitudRequisitos) object;
	            if (obj.getPk().getCsolicitud() == null) {
	                obj.getPk().setCsolicitud(codSolicitud);
	            }
	        }
        }
        
        List<Object> lguardias = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDGUARDIAS");
        if(lguardias != null && !lguardias.isEmpty()){
        	for (Object object : lguardias) {
				TarmSolicitudGuardias obj = (TarmSolicitudGuardias) object;
				if (obj.getPk().getCsolicitud() == null) {
	                obj.getPk().setCsolicitud(codSolicitud);
	            }
			}
        }
        
        List<Object> larmas = pSaveRequest.getSaveBeanModifiedRecords("RECEPCIONARMAS");
        if(larmas != null && !larmas.isEmpty()){
        	for (Object object : larmas) {
        		TarmSolicitudArmas obj = (TarmSolicitudArmas) object;
				if (obj.getPk().getCsolicitud() == null) {
	                obj.getPk().setCsolicitud(codSolicitud);
	            }
			}
        }
        
        List<Object> lagencias = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDAGENCIA");
        if(lagencias != null && !lagencias.isEmpty()){
        	for (Object object : lagencias) {
        		TarmSolicitudAgenciaSucursal obj = (TarmSolicitudAgenciaSucursal) object;
				if(obj.getPk().getCsolicitud() == null){
					obj.getPk().setCsolicitud(codSolicitud);
				}
			}
        }
        
        List<Object> ldocumentos = pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOSCONTROLLER");
        if(ldocumentos != null && !ldocumentos.isEmpty()){
        	for (Object object : ldocumentos) {
        		TarmSolicitudDocumento obj = (TarmSolicitudDocumento) object;
				if(obj.getPk().getCsolicitud() == null){
					obj.getPk().setCsolicitud(codSolicitud);
				}
			}
        }
        return pSaveRequest;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest)
     */
    @Override
    public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception {
        return pSaveRequest;
    }

}
