package com.fp.firmas.rules.query;

import java.util.Date;
import java.util.List;

import com.fp.bpm.query.QueryJsf;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.pfirmas.param.TfirmCertificado;
import com.fp.persistence.pviaticos.hra.Empleado;
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;

/**
 * Completa informaci&oacute;n del usuario a desplegar en la grilla de consulta de datos del funcionario
 * 
 * @author dcruz
 *
 */
public class UsuarioCertificado extends QueryRule {

	private static final long serialVersionUID = 1L;

	@SuppressWarnings("unchecked")
	@Override
	public QueryRequest process(QueryRequest queryRequest) throws Exception {
		QueryJsf queryJsf = new QueryJsf();
		queryJsf.execute(queryRequest);
		List<TfirmCertificado> certificadosUsuList = (List<TfirmCertificado>) queryRequest.getResponse().get("USUARIOCERTIFICADOS");
		completaDatosConsulta(certificadosUsuList);
		return queryRequest;
	}
	
	private void completaDatosConsulta(List<TfirmCertificado> certificadoList) throws Exception{
		if(certificadoList != null && !certificadoList.isEmpty()){
			for (TfirmCertificado tfirmCertificado : certificadoList) {
				//completamos la informacion faltante de los certificados
				EmpleadoJpql emJpql = new EmpleadoJpql();
				Empleado empleado = emJpql.findPorUsuarioWeb(tfirmCertificado.getCodigousuario());
				tfirmCertificado.modifiedData.put("nom_servidor", empleado.getNombre());
				tfirmCertificado.modifiedData.put("estado_certificado", tfirmCertificado.getPk().getFcaducidad().compareTo(new Date(System.currentTimeMillis())) >=0 ? "VIGENTE":"CADUCADO");
				tfirmCertificado.setCargo(empleado.getCargo());
			}
		}
	}

}
