package br.com.centralit.citcorpore.rh.ajaxForms;
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.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.rh.bean.CandidatoDTO;
import br.com.centralit.citcorpore.rh.negocio.CandidatoService;
import br.com.centralit.citcorpore.util.CriptoUtils;
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;
/**
* @author thiago.borges
*
*/
@SuppressWarnings({ "rawtypes" })
public class Candidato extends AjaxFormAction {
@Override
public Class getBeanClass() {
return CandidatoDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
document.focusInFirstActivateField(null);
this.preencherComboTipo(document, request, response);
}
/**
* Preenche o combo do tipo
*
* @author Thiago.Borges
* @param document
* @param request
* @param response
* @throws Exception
*/
public void preencherComboTipo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
HTMLSelect tipos = (HTMLSelect) document.getSelectById("tipo");
tipos.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
tipos.addOption("C", UtilI18N.internacionaliza(request, "colaborador.colaborador"));
tipos.addOption("E", UtilI18N.internacionaliza(request, "candidato.exColaborador"));
tipos.addOption("A", UtilI18N.internacionaliza(request, "candidato.colaboradorAfastado"));
tipos.addOption("F", UtilI18N.internacionaliza(request, "candidato.candidatoExterno"));
}
/**
* Salva ou atualiza candidato
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
CandidatoDTO candidatoDTO = (CandidatoDTO) document.getBean();
candidatoDTO.setIdResponsavel(usuario.getIdUsuario());
CandidatoService candidatoService = (CandidatoService) ServiceLocator.getInstance().getService(CandidatoService.class, null);
if (candidatoDTO.getIdCandidato() == null || candidatoDTO.getIdCandidato() == 0) {
if (candidatoService.consultarCandidatosAtivos(candidatoDTO)) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
return;
}
CandidatoDTO candidatoDtoAux = null;
candidatoDtoAux = candidatoService.findByEmail(candidatoDTO.getEmail());
if(candidatoDtoAux != null){
document.alert(UtilI18N.internacionaliza(request, "candidato.emailEmUso"));
return;
}
if (candidatoDTO.getSenha() == null || candidatoDTO.getSenha().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "candidato.senhaObrigatorio"));
return;
}
String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA");
if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) {
algoritmo = "SHA-1";
}
candidatoDTO.setSenha(CriptoUtils.generateHash(candidatoDTO.getSenha(), algoritmo));
candidatoDTO.setDataInicio(UtilDatas.getDataAtual());
candidatoDTO.setSituacao("C");
candidatoDTO.setCpf(candidatoDTO.getCpf().replaceAll("[^0-9]*", ""));
candidatoService.create(candidatoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
HTMLForm form = document.getForm("form");
form.clear();
} else {
if (candidatoDTO.getSenha() == null || candidatoDTO.getSenha().equals("")) {
CandidatoDTO auxCandidatoDTO = (CandidatoDTO) candidatoService.restore(candidatoDTO);
candidatoDTO.setSenha(auxCandidatoDTO.getSenha());
} else {
String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA");
if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) {
algoritmo = "SHA-1";
}
candidatoDTO.setSenha(CriptoUtils.generateHash(candidatoDTO.getSenha(), algoritmo));
}
candidatoService.update(candidatoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
HTMLForm form = document.getForm("form");
form.clear();
}
}
/**
* Recupera candidato.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author thiago.borges
*/
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CandidatoDTO candidatoDto = (CandidatoDTO) document.getBean();
CandidatoService candidatoService = (CandidatoService) ServiceLocator.getInstance().getService(CandidatoService.class, null);
candidatoDto = (CandidatoDTO) candidatoService.restore(candidatoDto);
candidatoDto.setCpf(candidatoDto.getCpfFormatado());
candidatoDto.setSenha(null);
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(candidatoDto);
}
/**
* Seta uma data final para o candidato("exclus�o")
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
CandidatoDTO candidatoDto = (CandidatoDTO) document.getBean();
CandidatoService candidatoService = (CandidatoService) ServiceLocator.getInstance().getService(CandidatoService.class, null);
if (candidatoDto.getSenha() == null || candidatoDto.getSenha().equals("")) {
CandidatoDTO auxCandidatoDTO = (CandidatoDTO) candidatoService.restore(candidatoDto);
candidatoDto.setSenha(auxCandidatoDTO.getSenha());
} else {
String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA");
if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) {
algoritmo = "SHA-1";
}
candidatoDto.setSenha(CriptoUtils.generateHash(candidatoDto.getSenha(), algoritmo));
}
if (candidatoDto.getIdCandidato().intValue() > 0) {
candidatoService.deletarCandidato(candidatoDto, document);
}
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
HTMLForm form = document.getForm("form");
form.clear();
}
}