package com.fp.frontend.controller.armas.solicitud; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import org.primefaces.context.RequestContext; import com.fp.dto.AbstractDataTransport; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.ParametersController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgGeneral; import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneParameters; /** * Clase controladora de la revision de reporte de armas a destruirse por parte del jefe de departamento * @author JALVARADO * */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class RevisarRprteArmasADestJefDepController extends AbstractController { private Integer creporte; private Date fechaCorte; private String estado; /** * lista del catalogo de las acciones (Aceptar o rechazar) **/ private List laccion; /** * Variable que indica si el funcionario esta negado para iniciar el flujo y enviar el reporte a su superior para aprobacion */ private Boolean isDenied; private String observacion; private TarmCabRepDestruirArmas tarmCabRepDestruirArmas; @ManagedProperty(value="#{cabRepDestruirArmasController}") private CabRepDestruirArmasController cabRepDestruirArmasController; @ManagedProperty(value="#{detRepDestruirArmasController}") private DetRepDestruirArmasController detRepDestruirArmasController; @ManagedProperty(value="#{decomisoArmaController}") private DecomisoArmaController decomisoArmaController; public RevisarRprteArmasADestJefDepController() throws Exception { super(AbstractDataTransport.class); // TODO Auto-generated constructor stub } @PostConstruct private void postconstruct() { super.startQuery(); if(this.getMfilters().get("creporte")!=null){ creporte = Integer.parseInt(this.getMfilters().get("creporte")); } if(creporte!=null){ this.getMfilters().clear(); this.init(); this.querydatabase(); } else{ detRepDestruirArmasController.setLrecord(new ArrayList()); } } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { isDenied = Boolean.FALSE; tarmCabRepDestruirArmas = CabRepDestruirArmasController.findByCodigo(creporte.toString()); detRepDestruirArmasController.addFilter("creporte", creporte.toString()); detRepDestruirArmasController.query(); TgeneParameters tgeneparam=ParametersController.find("CODIGO.AR", "1"); laccion=CatalogDetailController.find("ESTADOSOLICITUD",tgeneparam.getTextvalue()); } catch (Exception e) { MessageHelper.setMessageError(e); } } @Override public void next(){ try { if(creporte!=null){ this.detRepDestruirArmasController.next(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void previous(){ try { if(creporte!=null){ this.detRepDestruirArmasController.previous(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override protected void querydatabase() { } public Integer getCreporte() { return creporte; } public void setCreporte(Integer creporte) { this.creporte = creporte; } public Date getFechaCorte() { return fechaCorte; } public void setFechaCorte(Date fechaCorte) { this.fechaCorte = fechaCorte; } public CabRepDestruirArmasController getCabRepDestruirArmasController() { return cabRepDestruirArmasController; } public void setCabRepDestruirArmasController( CabRepDestruirArmasController cabRepDestruirArmasController) { this.cabRepDestruirArmasController = cabRepDestruirArmasController; } public DetRepDestruirArmasController getDetRepDestruirArmasController() { return detRepDestruirArmasController; } public void setDetRepDestruirArmasController( DetRepDestruirArmasController detRepDestruirArmasController) { this.detRepDestruirArmasController = detRepDestruirArmasController; } public TarmCabRepDestruirArmas getTarmCabRepDestruirArmas() { return tarmCabRepDestruirArmas; } public void setTarmCabRepDestruirArmas( TarmCabRepDestruirArmas tarmCabRepDestruirArmas) { this.tarmCabRepDestruirArmas = tarmCabRepDestruirArmas; } public DecomisoArmaController getDecomisoArmaController() { return decomisoArmaController; } public void setDecomisoArmaController( DecomisoArmaController decomisoArmaController) { this.decomisoArmaController = decomisoArmaController; } public List getLaccion() { return laccion; } public void setLaccion(List laccion) { this.laccion = laccion; } public Boolean getIsDenied() { return isDenied; } public void setIsDenied(Boolean isDenied) { this.isDenied = isDenied; } public String getEstado() { return estado; } public void setEstado(String estado) { this.estado = estado; } public String getObservacion() { return observacion; } public void setObservacion(String observacion) { this.observacion = observacion; } /** * Metodo que retorna un parametro del sistema el cual es el codigo para Aprobar una solicitud en un flujo **/ public String codigoAceptado() throws Exception { TgeneParameters f = ParametersController.find("ACEPTADO", "1"); return f.getTextvalue(); } @Override public void save() { try { Request request = this.callerhelper.getRequest(); HashMap msave = new HashMap(); if(observacion!=null){ request.modifiedData().put("observacion", observacion); tarmCabRepDestruirArmas.setObsjefecc(observacion); tarmCabRepDestruirArmas.setIsnew(Boolean.FALSE); cabRepDestruirArmasController.update(tarmCabRepDestruirArmas); DtoSave dtoSaveCAC = cabRepDestruirArmasController.getDtoSave(); if(dtoSaveCAC.pendingProcess()){ dtoSaveCAC.setPosition(1); msave.put(cabRepDestruirArmasController.getBeanalias(), dtoSaveCAC); } } // Si el reporte es rechazado se vuelven las armas del reporte a la lista de armas para ser seleccionadas en nuevos reportes if (!codigoAceptado().equals(estado)){ for(TarmDetRepDestruirArmas armasDecomRprteObj:detRepDestruirArmasController.getLrecord()){ TarmDecomisoArma armasDecomisadasObj = DecomisoArmaController.findByCodigo(armasDecomRprteObj.getCdecomisoarma()); armasDecomisadasObj.setAdestruirse(null); armasDecomisadasObj.setAdestruirsecode(null); armasDecomisadasObj.setIsnew(Boolean.FALSE); decomisoArmaController.update(armasDecomisadasObj); } DtoSave dtoSaveDAC = decomisoArmaController.getDtoSave(); if(dtoSaveDAC.pendingProcess()){ dtoSaveDAC.setPosition(2); msave.put(decomisoArmaController.getBeanalias(), dtoSaveDAC); } } request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); this.cabRepDestruirArmasController.postCommit(resp); this.decomisoArmaController.postCommit(resp); this.setShowRow(true); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } completarTarea(); } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para finalizar la tarea del flujo */ public void completarTarea() { try { Request request = callerhelper.getRequest(); super.cleanRequest(request); // validamos si cargamos los datos cuando apruebe Mapdatosmail = new HashMap(); request.modifiedData().put("TID", tid); request.modifiedData().put("creporte", creporte); request.modifiedData().put("BPMObs", observacion); if (codigoAceptado().equals(estado)) { request.modifiedData().put("BPMStatus", "A"); }else{ request.modifiedData().put("BPMStatus", "D"); } Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + "jefe dpto - CREPORTE: " + creporte); isDenied = Boolean.TRUE; RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } }