package com.fp.armas.task;

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

import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.soli.TarmDecomiso;
import com.fp.persistence.parmas.soli.TarmDecomisoArma;
import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion;
import com.fp.simple.action.TaskAction;

/**
 * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar
 * una tarea.
 * 
 * @version 2.1
 */
public class ActualizarInventario 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 {
    	
    	System.out.println("ingresa a actualizar a la clase");
        HashMap<String, Object> m = (HashMap<String, Object>) pParam;
        Map<String, Object> mrequest = (Map<String, Object>) m.get("request");
        if (mrequest.get("numerotransaccion") == null) {
            return;
        }
        Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString());
        //datos de la transaccion
        TarmDecomisoArmaTransaccion tarmDecomisoArmaTransaccion=TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), numeroTransacion);
        //lista de las armas decomisadas por el codigo de recepcion
        List<TarmDecomisoArma> tarmDecomisoArmaTransaccionList=   PersistenceHelper.getEntityManager().
        														createQuery("select o from TarmDecomisoArma o where o.cdecarmtranrecepcion=:cdecarmtranrecepcion")
        														.setParameter("cdecarmtranrecepcion", numeroTransacion)
        														.getResultList();
        //se recorre la lista de las armas decomisadas
        for(TarmDecomisoArma decomisoArma:tarmDecomisoArmaTransaccionList){
        	//se busca l tabla de decomiso para actualizar el campo del centro de control que esta recibiendo las armas
        	TarmDecomiso decomiso= TarmDecomiso.find(PersistenceHelper.getEntityManager(), decomisoArma.getCdecomiso());
        	decomiso.setCcentrocontroldestino(tarmDecomisoArmaTransaccion.getCcentrocontrol());
        	PersistenceHelper.getEntityManager().merge(decomiso);
        }
        PersistenceHelper.getEntityManager().flush();
    }

}
