package br.com.centralit.citcorpore.rh.ajaxForms;
import java.sql.Date;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
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.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.rh.bean.BlackListDTO;
import br.com.centralit.citcorpore.rh.bean.CandidatoDTO;
import br.com.centralit.citcorpore.rh.bean.JustificativaListaNegraDTO;
import br.com.centralit.citcorpore.rh.integracao.CandidatoDao;
import br.com.centralit.citcorpore.rh.negocio.BlackListService;
import br.com.centralit.citcorpore.rh.negocio.JustificativaListaNegraService;
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 BlackList 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;
}
boolean isOk = false;
CandidatoDao candidatoDao = new CandidatoDao();
CandidatoDTO candidatoDto = new CandidatoDTO();
String idCandidatoStr = request.getParameter("idCandidato");
BlackListDTO blackListDTO = (BlackListDTO) document.getBean();
BlackListService blackService = (BlackListService) ServiceLocator.getInstance().getService(BlackListService.class, null);
isOk = blackService.isCandidatoBlackList(Integer.parseInt(idCandidatoStr));
if(isOk){
blackListDTO = blackService.retornaBlackList(blackListDTO.getIdCandidato());
}
this.preencherComboJustificativa( document, request, response);
if(idCandidatoStr != null && idCandidatoStr != ""){
candidatoDto.setIdCandidato(Integer.parseInt(idCandidatoStr));
candidatoDto = (CandidatoDTO) candidatoDao.restore(candidatoDto);
isOk = blackService.isCandidatoBlackList(candidatoDto.getIdCandidato());
if(isOk){
document.getElementById("divRetirarListaNegra").setVisible(true);
document.getElementById("divInserirListaNegra").setVisible(false);
}else{
document.getElementById("divInserirListaNegra").setVisible(true);
document.getElementById("divRetirarListaNegra").setVisible(false);
}
StringBuilder stringBuffer = new StringBuilder();
if(candidatoDto != null){
stringBuffer.append("<div class='row-fluid'>");
stringBuffer.append("<div class='span12'>");
stringBuffer.append("<h3>"+candidatoDto.getNome()+"</h3>");
stringBuffer.append("</div>");
stringBuffer.append("<div class='span12 '>");
stringBuffer.append("<div class='span6 strong'>CPF: "+candidatoDto.getCpfFormatado()+"</div>");
stringBuffer.append("</div>");
if(isOk){
stringBuffer.append("<div class='span8'>");
stringBuffer.append("<div class='alert alert-warning strong' style='text-align: center;'>"+ UtilI18N.internacionaliza(request, "rh.avisoListaNegra") +"</div>");
stringBuffer.append("</div>");
}
stringBuffer.append("</div>");
document.getElementById("informacoesCandidato").setInnerHTML(stringBuffer.toString());
}
}else{
document.alert(UtilI18N.internacionaliza(request, "dinamicview.naofoipossivelrecuperar"));
}
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(blackListDTO);
}
public void testaAcao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
BlackListDTO blackListDTO = (BlackListDTO) document.getBean();
if(blackListDTO.getIdJustificativa() == null || blackListDTO.getIdJustificativa() == 0 ){
document.alert(UtilI18N.internacionaliza(request, "suspensaoReativacaoSolicitacao.alertaCampoVaziojustificativa"));
return;
}
if(StringUtils.isBlank(blackListDTO.getDescricao())){
document.alert(UtilI18N.internacionaliza(request, "pesquisa.obrigatorio"));
return;
}
if(blackListDTO.getAcao().equalsIgnoreCase("N")){
retirarListaNegra(document, request, response, blackListDTO);
}else{
inserirListaNegra(document, request, response, blackListDTO);
}
}
public void retirarListaNegra(DocumentHTML document, HttpServletRequest request,HttpServletResponse response, BlackListDTO blackListDTO) throws Exception {
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
BlackListService blackListService = (BlackListService) ServiceLocator.getInstance().getService(BlackListService.class, null);
Date dataFim = UtilDatas.getDataAtual();
Integer idUsuario = usuarioDto.getIdUsuario();
if(dataFim != null && !dataFim.equals("") && idUsuario != null && !idUsuario.equals("")){
blackListDTO.setDataFim(UtilDatas.getDataAtual());
}
if(blackListDTO.getIdListaNegra() != null || blackListDTO.getIdListaNegra() > 0){
blackListService.update(blackListDTO);
blackListService.inserirRegistroHistorico(blackListDTO.getIdCandidato(), idUsuario, false);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("parent.atualizarTabela();");
document.executeScript("parent.fecharModalAddBlackList();");
}
public void inserirListaNegra(DocumentHTML document, HttpServletRequest request,HttpServletResponse response, BlackListDTO blackListDTO) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
BlackListService blackListService = (BlackListService) ServiceLocator.getInstance().getService(BlackListService.class, null);
Date dataAtual = UtilDatas.getDataAtual();
Integer idUsuario = usuario.getIdUsuario();
if(dataAtual != null && !dataAtual.equals("") && idUsuario != null && !idUsuario.equals("")){
blackListDTO.setDataInicio(UtilDatas.getDataAtual());
blackListDTO.setIdResponsavel(usuario.getIdUsuario());
}
if(blackListDTO.getIdListaNegra() == null || blackListDTO.getIdListaNegra() == 0){
blackListService.create(blackListDTO);
blackListService.inserirRegistroHistorico(blackListDTO.getIdCandidato(), blackListDTO.getIdResponsavel(), true);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("parent.atualizarTabela();");
document.executeScript("parent.fecharModalAddBlackList();");
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
BlackListDTO blackListDTO = (BlackListDTO) document.getBean();
BlackListService blackListService = (BlackListService) ServiceLocator.getInstance().getService(BlackListService.class, null);
Date dataAtual = UtilDatas.getDataAtual();
Integer idUsuario = usuario.getIdUsuario();
if(dataAtual != null && !dataAtual.equals("") && idUsuario != null && !idUsuario.equals("")){
blackListDTO.setDataInicio(UtilDatas.getDataAtual());
blackListDTO.setIdResponsavel(usuario.getIdUsuario());
}
if(blackListDTO.getIdListaNegra() == null || blackListDTO.getIdListaNegra() == 0){
blackListService.create(blackListDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
blackListService.update(blackListDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("parent.fecharModalAddBlackList();");
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
WebUtil.validarSeUsuarioEstaNaSessao(request, document);
BlackListDTO blackListDTO = (BlackListDTO) document.getBean();
BlackListService blackListService = (BlackListService) ServiceLocator.getInstance().getService(BlackListService.class, null);
blackListDTO = (BlackListDTO) blackListService.restore(blackListDTO);
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(blackListDTO);
}
private void preencherComboJustificativa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
HTMLSelect comboJustificativa = (HTMLSelect) document.getSelectById("idJustificativa");
if(comboJustificativa != null){
this.inicializarCombo(comboJustificativa, request);
JustificativaListaNegraService justificativaListaNegraService = (JustificativaListaNegraService) ServiceLocator.getInstance().getService(JustificativaListaNegraService.class, null);
HTMLSelect cmbJustificativa = (HTMLSelect) document.getSelectById("idJustificativa");
ArrayList<JustificativaListaNegraDTO> justificativaBlackList = (ArrayList) justificativaListaNegraService.list();
inicializarCombo(cmbJustificativa, request);
for (JustificativaListaNegraDTO justificativaDto : justificativaBlackList) {
cmbJustificativa.addOption(justificativaDto.getIdJustificativa().toString(), StringEscapeUtils.escapeJavaScript(justificativaDto.getJustificativa()));
}
}
}
/**
* Iniciliza combo.
*
* @param componenteCombo
*/
private void inicializarCombo(HTMLSelect componenteCombo, HttpServletRequest request) {
componenteCombo.removeAllOptions();
componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
}
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 BlackListDTO.class;
}
}