package com.fp.armas.task;

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

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante;
import com.fp.simple.action.TaskAction;

public class FinalizarDocumentoHabilitante extends TaskAction {

	private EntityManager em;
	
	private static final String QUERY_DOCUMENTOS_ACTUALIZAR = "SELECT p from TarmDocumentoHabilitante p  where p.ctramite in (SELECT o.ctramitepadre FROM TarmTramite o WHERE o.pk=:codigotramite) and p.estado <> 'FIN' order by p.fechaemision desc";

    /*
     * (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) { //mrequest.get("numerotransaccion")
    		return;
    	}
    	em=PersistenceHelper.getEntityManager();
    	//String csolicitud = (String)mrequest.get("csolicitud");
    	Long ctramite = (Long)mrequest.get("numerotransaccion");

    	//TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite);
    	//TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey);
    	TarmDocumentoHabilitante documentoHabilitante= getCodigoDocumentoHabilitanteFinalizar(ctramite);
//    	if(documentoHabilitante!=null){
//    		documentoHabilitante.setEstado("FIN");
//    		em.merge(documentoHabilitante);
//    		em.flush();
//    	}
    }
    
	private TarmDocumentoHabilitante getCodigoDocumentoHabilitanteFinalizar(Long codigotramite) throws Exception{
		//tanto el tag como el arma deben estar relacionados entre si, no se puede producir el caso en que un tag este relacionado con mas de un arma y viceversa
		TarmDocumentoHabilitante codigoDocumentohabilitanteActualizar = null;
		Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_DOCUMENTOS_ACTUALIZAR);
		query.setParameter("codigotramite", codigotramite);
		List<TarmDocumentoHabilitante> ltDocumentosHabilitantesSeleccionados = query.getResultList();
		if(ltDocumentosHabilitantesSeleccionados != null && !ltDocumentosHabilitantesSeleccionados.isEmpty()){
			codigoDocumentohabilitanteActualizar = ltDocumentosHabilitantesSeleccionados.get(0);
		}
		return codigoDocumentohabilitanteActualizar;
	}    

}
