package com.fp.viaticos.rules.consulta.solicitud;

import java.util.List;

import com.fp.bpm.query.QueryJsf;
import com.fp.dto.Response;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.pviaticos.hra.Empleado;
import com.fp.persistence.pviaticos.hra.EmpleadoJpql;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudComentarios;
import com.fp.viaticos.rules.enums.EnumCodigos;

public class ConsultaComentarios extends QueryRule {

    /**
	 * 
	 */
    private static final long serialVersionUID = 1L;

    @SuppressWarnings("unchecked")
    @Override
    public QueryRequest process(QueryRequest pQrequest) throws Exception {
        Response response = pQrequest.getResponse();
        QueryJsf query = new QueryJsf();
        query.execute(pQrequest);
        List<Object> comentarios = (List<Object>) response.get("SOLICITUDCOMENTARIOS");
        this.completarDatos(comentarios);
        return pQrequest;
    }

    /**
     * M&eacute;todo que completa los datos de los comentarios
     * 
     * @param comentarios Lista de objetos tipo ViaSolicitudComentarios
     */
    private void completarDatos(List<Object> comentarios) throws Exception {
        if (comentarios == null || comentarios.isEmpty()) {
            return;
        }
        for (Object objeto : comentarios) {
            ViaSolicitudComentarios comentario = (ViaSolicitudComentarios) objeto;
            Empleado emp = null;
            EmpleadoJpql e = new EmpleadoJpql();
            // empleado
            if (comentario.getCod_usuario() != null) {
                emp = e.findPorUsuarioWeb(comentario.getCod_usuario().toLowerCase());
                if (emp != null) {
                    comentario.modifiedData.put("empleado", emp.getNombre());
                    comentario.modifiedData.put("cargo", emp.getCargo());
                }
            }
        }
    }
}
