package com.fp.armas.task;

import java.util.HashMap;
import java.util.Map;

import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.param.TarmTramite;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.simple.action.TaskAction;

/**
 * Clase que se encarga de fijar el codigo del tipo de archivo
 * 
 * @version 2.1
 */
public class TipoArchivoControl extends TaskAction {

    /*
     * (non-Javadoc)
     * 
     * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request)
     */
    @SuppressWarnings("unchecked")
    @Override
    public void assignOwner(Object pParam) throws Exception {   	
        HashMap<String, Object> m = (HashMap<String, Object>) pParam;
        Map<String, Object> mrequest = (Map<String, Object>) m.get("request");
        
        if (mrequest.get("csolicitud") == null || mrequest.get("numerotransaccion") == null) {
            return;
        }

        TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey();
        codigoSolicitudKey.setCsolicitud(mrequest.get("csolicitud").toString());
        codigoSolicitudKey.setCtramite(Long.valueOf(mrequest.get("numerotransaccion").toString()));
               
        TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(PersistenceHelper.getEntityManager(), codigoSolicitudKey);
        TarmTramite tramite = TarmTramite.find(PersistenceHelper.getEntityManager(), solicitudTramite.getPk().getCtramite());
       
        TgeneCatalogDetail tgeneCatalogDetail = PersistenceHelper.getEntityManager().
				createQuery("select o from TgeneCatalogDetail o where o.pk.catalog=:catalog and o.pk.catalogcode=:catalogcode",TgeneCatalogDetail.class)
				.setParameter("catalog", tramite.getTipoarchivo())
				.setParameter("catalogcode", tramite.getTipoarchivocodigo())
				.getSingleResult();
        String resultado = "REPORTE".equalsIgnoreCase(tgeneCatalogDetail.getDescription())?"D":"CARNET".equalsIgnoreCase(tgeneCatalogDetail.getDescription())?"A":"";
        m.put("BPMStatus",resultado);
        m.put("tipoarchivo",resultado);
    }

}
