package com.fp.frontend.controller.armas.solicitud; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.annotation.PostConstruct; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.SubQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.soli.TarmSolicitud; /** * Controlador que se encarga del manejo de {@link TarmSolicitud} * @author dcruz * */ public class SolicitudController extends AbstractController { private static final long serialVersionUID = 1L; public SolicitudController() throws Exception{ super(TarmSolicitud.class); } @PostConstruct public void postConstruct(){ this.init(); // super.startQuery(); } private void init(){ this.beanalias = "SOLICITUD"; this.recperpage = 15; } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { DtoQuery dto = super.getDtoQuery(true); SubQuery qryprovorigen = new SubQuery("TgeneProvince", "description", "provinciaorigen", "i.pk.countrycode = t.cpaisorigen and i.pk.provincecode=t.cprovinciaorigen"); dto.addSubQuery(qryprovorigen); SubQuery qryctnorigen = new SubQuery("TgeneCanton", "description", "cantonorigen", "i.pk.countrycode = t.cpaisorigen and i.pk.provincecode=t.cprovinciaorigen and i.pk.cantoncode=t.ccantonorigen"); dto.addSubQuery(qryctnorigen); SubQuery qryprovdest = new SubQuery("TgeneProvince", "description", "provinciadestino", "i.pk.countrycode = t.cpaisdestino and i.pk.provincecode=t.cprovinciadestino"); dto.addSubQuery(qryprovdest); SubQuery qryctndest = new SubQuery("TgeneCanton", "description", "cantondestino", "i.pk.countrycode = t.cpaisdestino and i.pk.provincecode=t.cprovinciadestino and i.pk.cantoncode=t.ccantondestino"); dto.addSubQuery(qryctndest); SubQuery qrycprovincecode = new SubQuery("TarmCentroControl", "provincecode", "provincecode", "i.pk = t.ccentrocontrol"); dto.addSubQuery(qrycprovincecode); //dto.setOrderby("t.nombre"); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); if(!lrecord.isEmpty()){ record=lrecord.get(0); } super.postQuery(lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public static List find() { return null; } public static List findSolicitudxPersona(String personcode) { try{ SolicitudController cc = new SolicitudController(); cc.init(); cc.recperpage = 300; cc.addFilter("personcode",personcode); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } public static TarmSolicitud findSolicitudxcodsolicitud(String csolicitud) { System.out.println("Codigo de solicitud SolicitudCOntroller.." + csolicitud); try{ SolicitudController cc = new SolicitudController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk",csolicitud); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Metodo para encontrar por numero de solicitud * @param numeroSolicitud * @return solicitud encontrada con este numero */ public static TarmSolicitud findSolicitudxnumerosolicitud(String numeroSolicitud) { try{ SolicitudController cc = new SolicitudController(); cc.init(); cc.recperpage = 300; cc.addFilter("numerosolicitud",numeroSolicitud); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Metodo que obtiene una solicitud por el codigo del tramite * @param csolicitud * @return */ public static TarmSolicitud findSolicitudByCtramite(String ctramite) { try{ SolicitudController cc = new SolicitudController(); cc.init(); cc.recperpage = 300; cc.addFilter("ctramite",ctramite); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Find con el cual se valida una persona con una solicitud * @param personcode * @param csolicitud * @return */ public static Boolean existeRegistroPersona(Integer personcode, String csolicitud){ try { SolicitudController cc = new SolicitudController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk", csolicitud); cc.addFilter("personcode",personcode.toString()); cc.querydatabase(); if (cc.lrecord != null && !cc.lrecord.isEmpty()) { return true; } return false; } catch (Throwable e) { MessageHelper.setMessageError(e); return false; } } @Override public void save() { try { DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public void updateSolicitud(TarmSolicitud bean) throws Exception{ this.beanalias = "SOLICITUD"; this.record = bean; super.update(); this.save(); } }