package com.fp.armas.rules.query.webservices;

import com.fp.armas.rules.query.webservices.util.ArmaUtil;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.parmas.dto.ws.ArmaDto;

/**
 * Clase que realiza el m&ecaute;todo para obtener el arma a trav&eacute;s de su id
 * @author dcruz
 *
 */
public class ArmasId extends QueryRule {

	private static final long serialVersionUID = 1L;

	@Override
	public QueryRequest process(QueryRequest pRequest) throws Exception {
		ArmaDto armaDto = null;
		try {
			String carma = (String) pRequest.get("codigoarma");
			if(carma!=null && !carma.isEmpty()){
				armaDto = ArmaUtil.getInstancia().obtenerArmaId(carma);
				
			}
			String ctag = (String) pRequest.get("codigotag");
			if(ctag!=null && !ctag.isEmpty()){
				armaDto = ArmaUtil.getInstancia().obtenerArmaIdPorTag(ctag);
				
			}
			pRequest.getResponse().put("ARMASWS", armaDto!=null?armaDto:null);
			return pRequest;
		} catch (Throwable e) {
			throw new Exception(e);
		}
	}
	
//	/**
//	 * Completa los datos del arma encontrada
//	 * @param armaDto dto de arma
//	 * @param tarmArmas objeto tipo {@link TarmArmas}
//	 * @throws CommondbException
//	 * @throws Exception
//	 */
//	private ArmaDto completaArma(ArmaDto armaDto, TarmArmas tarmArmas) throws CommondbException, Exception{
//		armaDto = new ArmaDto();
//		armaDto.setIdArma(tarmArmas.getPk());
//		armaDto.setCantidad(tarmArmas.getCantidad());
//		armaDto.setSerie(tarmArmas.getLote());
//		TgeneCatalogDetail estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : ""));
//		armaDto.setEstado(estado != null ? estado.getDescription() : "");
//		TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo());
//		if(tipoArmaExplosivo != null){
//			TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : ""));
//			armaDto.setClase(clase != null ? clase.getDescription():null);
//			TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : ""));
//			armaDto.setTipo(tipoArma != null ? tipoArma.getDescription():null);
//			TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : ""));
//			armaDto.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null);
//			TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : ""));
//			armaDto.setCalibre(calibre != null ? calibre.getDescription() : null);
//			TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : ""));
//			armaDto.setLongitud(longitud != null ? longitud.getDescription() : null);
//		}
//		return armaDto;
//	}
	
}
