package br.com.centralit.citcorpore.rh.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.rh.bean.CandidatoDTO;
import br.com.centralit.citcorpore.rh.bean.HistoricoFuncionalDTO;
import br.com.centralit.citcorpore.rh.bean.ItemHistoricoFuncionalDTO;
import br.com.centralit.citcorpore.rh.bean.VisualizarHistoricoFuncionalDTO;
import br.com.centralit.citcorpore.rh.negocio.CandidatoService;
import br.com.centralit.citcorpore.rh.negocio.ItemHistoricoFuncionalService;
import br.com.centralit.citcorpore.rh.negocio.VisualizarHistoricoFuncionalService;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
/**
* @author david.silva
*
*/
@SuppressWarnings({"rawtypes","unchecked"})
public class VisualizarHistoricoFuncional extends AjaxFormAction{
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
if(!(isUserInGroup(request, "RH"))){
document.executeScript("alert('Voce n�o tem permi��o para usar essa Funcionalidade. Apenas Participantes do Grupo RH');");
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "/pages/index/index.jsp'");
return;
}
String idHistorico = request.getParameter("idHistoricoFuncional");
String idCandidato = request.getParameter("idCandidato");
CandidatoService candidatoService = (CandidatoService) ServiceLocator.getInstance().getService(CandidatoService.class, null);
ItemHistoricoFuncionalService itemHistoricoFuncionalService = (ItemHistoricoFuncionalService) ServiceLocator.getInstance().getService(ItemHistoricoFuncionalService.class, null);
Collection<CandidatoDTO> listCandidato = null;
HistoricoFuncionalDTO historicoFuncionalDTO = new HistoricoFuncionalDTO();
listCandidato = candidatoService.findListTodosCandidatos();
for(CandidatoDTO candidato: listCandidato){
if(candidato.getIdCandidato().equals(Integer.parseInt(idCandidato))){
historicoFuncionalDTO.setNome(candidato.getNome());
break;
}
}
/**
* Lista com todos os itens do Historico funcional
* com idHistoricoFuncional daquele candidato.
*/
List list = new ArrayList<>();
list = (List) itemHistoricoFuncionalService.findByIdItemHistorico(Integer.parseInt(idHistorico));
historicoFuncionalDTO.setListaItemHistoricoFuncional(list);
String itemHistoricoHTML = this.geraTabelaItem(request, historicoFuncionalDTO).toString();
document.getElementById("divItens").setInnerHTML(itemHistoricoHTML);
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(historicoFuncionalDTO);
}
/**
* @param request
* @param historicoFuncionalDTO
* @return
* @throws Exception
*
* Metodo para gerar tabela com itens de Historico Funcional
* Recebe como parametro um historicoFuncionalDTO populado
* com itens de historico funcional
*/
private StringBuilder geraTabelaItem(HttpServletRequest request, HistoricoFuncionalDTO historicoFuncionalDTO) throws Exception{
VisualizarHistoricoFuncionalService visualizarHistoricoFuncionalService = (VisualizarHistoricoFuncionalService) ServiceLocator.getInstance().getService(VisualizarHistoricoFuncionalService.class, null);
ItemHistoricoFuncionalDTO itemHistoricoFuncionalDto = new ItemHistoricoFuncionalDTO();
Collection<ItemHistoricoFuncionalDTO> itensHistoricoFuncional = (Collection<ItemHistoricoFuncionalDTO>) historicoFuncionalDTO.getListaItemHistoricoFuncional();
StringBuilder sb = new StringBuilder();
if(itensHistoricoFuncional != null && itensHistoricoFuncional.size() > 0){
for(ItemHistoricoFuncionalDTO itemHistoricoFuncionalDtoAux : itensHistoricoFuncional){
itemHistoricoFuncionalDto = visualizarHistoricoFuncionalService.restoreUsuario(itemHistoricoFuncionalDtoAux.getIdResponsavel());
if(itemHistoricoFuncionalDto == null)
continue;
itemHistoricoFuncionalDtoAux.setNomeResponsavel(itemHistoricoFuncionalDto.getNomeResponsavel());
sb.append("<div class='row-fluid'>");
sb.append(" <div class='span12 divTotal'>");
sb.append("<div class='row-fluid'>");
sb.append(" <div class='span3 divlateral'>");
sb.append(" <div class='row-fluid'>");
sb.append(" <div class='span12 '>");
sb.append(" <label class='strong'>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalTipo") + "</label>");
if(itemHistoricoFuncionalDtoAux != null && itemHistoricoFuncionalDtoAux.getTipo().equalsIgnoreCase("A")){
sb.append(" <label>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalAutomatico") + "</label>");
}
if(itemHistoricoFuncionalDtoAux != null && itemHistoricoFuncionalDtoAux.getTipo().equalsIgnoreCase("M")){
sb.append(" <label>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalManual") + "</label>");
}
sb.append(" </div>");
sb.append(" </div>");
sb.append(" <div class='row-fluid'>");
sb.append(" <div class='span12 '>");
sb.append(" <label class='strong'>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalData") + "</label>");
sb.append(" <label>"+UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, itemHistoricoFuncionalDtoAux.getDtCriacao(), UtilI18N.getLocale())+"</label>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" <div class='row-fluid'>");
sb.append(" <div class='span12 '>");
sb.append(" <label class='strong'>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalResponsavel") + "</label>");
sb.append(" <label >"+itemHistoricoFuncionalDtoAux.getNomeResponsavel()+"</label>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" <div class='span9'>");
sb.append(" <div class='row-fluid'>");
sb.append(" <div class='span12'>");
sb.append(" <label class='strong'>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalTitulo") + "</label>");
sb.append(" <label>"+ itemHistoricoFuncionalDtoAux.getTitulo() +"</label>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" <div class='row-fluid'>");
sb.append(" <div class='span12'>");
sb.append(" <label class='strong'>" + UtilI18N.internacionaliza(request, "rh.historicoFuncionalDescricao") + "</label>");
sb.append(" <label style='display: block;'>"+ itemHistoricoFuncionalDtoAux.getDescricao() +"</label>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("</div>");
sb.append(" </br>");
}
}
return sb;
}
public boolean isUserInGroup(HttpServletRequest req, String grupo) {
UsuarioDTO usuario = WebUtil.getUsuario(req);
if (usuario == null) {
return false;
}
String[] grupos = usuario.getGrupos();
String grpAux = UtilStrings.nullToVazio(grupo);
for (int i = 0; i < grupos.length; i++) {
if (grupos[i] != null) {
if (grupos[i].trim().indexOf(grpAux.trim()) > 0) {
return true;
}
}
}
return false;
}
@Override
public Class getBeanClass() {
return VisualizarHistoricoFuncionalDTO.class;
}
}