package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
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.ContratoDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO;
import br.com.centralit.citcorpore.bean.ParametroCorporeDTO;
import br.com.centralit.citcorpore.bean.UnidadeDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.negocio.ParametroCorporeService;
import br.com.centralit.citcorpore.negocio.UfService;
import br.com.centralit.citcorpore.negocio.UnidadeService;
import br.com.centralit.citcorpore.negocio.UsuarioService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.dto.IDto;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
/**
* @author CentralIT
*
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public class Empregado extends AjaxFormAction {
private EmpregadoDTO empregadoBean;
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
setEmpregadoBean((EmpregadoDTO) document.getBean());
final HTMLSelect comboUfOrgaoExpedidor = document.getSelectById("idUFOrgExpedidor");
final HTMLSelect comboCtpsIdUf = document.getSelectById("ctpsIdUf");
final HTMLSelect comboIdSituacaoFuncional = document.getSelectById("idSituacaoFuncional");
final HTMLSelect comboTipo = document.getSelectById("tipo");
final HTMLSelect comboEstadoCivil = document.getSelectById("estadoCivil");
comboTipo.removeAllOptions();
comboTipo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboTipo.addOption("C", UtilI18N.internacionaliza(request, "colaborador.contratoEmpresaPJ"));
comboTipo.addOption("E", UtilI18N.internacionaliza(request, "colaborador.empregadoCLT"));
comboTipo.addOption("T", UtilI18N.internacionaliza(request, "colaborador.estagio"));
comboTipo.addOption("F", UtilI18N.internacionaliza(request, "colaborador.freeLancer"));
comboTipo.addOption("N", UtilI18N.internacionaliza(request, "colaborador.naoFuncionario"));
comboTipo.addOption("O", UtilI18N.internacionaliza(request, "colaborador.outros"));
comboTipo.addOption("X", UtilI18N.internacionaliza(request, "colaborador.socio"));
comboTipo.addOption("S", UtilI18N.internacionaliza(request, "colaborador.solicitante"));
final UfService ufService = (UfService) ServiceLocator.getInstance().getService(UfService.class, null);
final Collection colUfs = ufService.list();
comboUfOrgaoExpedidor.removeAllOptions();
comboUfOrgaoExpedidor.addOption("", "--");
comboUfOrgaoExpedidor.addOptions(colUfs, "idUf", "siglaUf", null);
comboCtpsIdUf.removeAllOptions();
comboCtpsIdUf.addOption("", "--");
comboCtpsIdUf.addOptions(colUfs, "idUf", "siglaUf", null);
comboIdSituacaoFuncional.removeAllOptions();
comboIdSituacaoFuncional.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboIdSituacaoFuncional.addOption("1", UtilI18N.internacionaliza(request, "citcorpore.comum.ativo"));
comboIdSituacaoFuncional.addOption("2", UtilI18N.internacionaliza(request, "citcorpore.comum.inativo"));
comboEstadoCivil.removeAllOptions();
comboEstadoCivil.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboEstadoCivil.addOption("2", UtilI18N.internacionaliza(request, "colaborador.casado"));
comboEstadoCivil.addOption("3", UtilI18N.internacionaliza(request, "colaborador.divorciado"));
comboEstadoCivil.addOption("5", UtilI18N.internacionaliza(request, "colaborador.separadoJudicialmente"));
comboEstadoCivil.addOption("1", UtilI18N.internacionaliza(request, "colaborador.solteiro"));
comboEstadoCivil.addOption("4", UtilI18N.internacionaliza(request, "colaborador.viuvo"));
final String validarComboUnidade = ParametroUtil.getValorParametroCitSmartHashMap(
Enumerados.ParametroSistema.UNIDADE_VINC_CONTRATOS, "N");
if (validarComboUnidade.trim().equalsIgnoreCase("S")) {
if (empregadoBean.getIdContrato() != null) {
carregaUnidade(document, request, response);
} else {
preencherComboUnidade(document, request, response);
}
} else {
preencherComboUnidade(document, request, response);
}
preencherComboCargos(document, request, response);
preencherComboGrupos(document, request, response, getEmpregadoBean().getIdContrato());
document.focusInFirstActivateField(document.getForm("form"));
}
/**
* Inclui Novo Empregado.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
setEmpregadoBean((EmpregadoDTO) document.getBean());
if (getEmpregadoService().verificarEmpregadosAtivos(getEmpregadoBean())) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
return;
}
if (getEmpregadoBean().getIdEmpregado() == null || getEmpregadoBean().getIdEmpregado().intValue() == 0) {
getEmpregadoBean().setNomeProcura(getEmpregadoBean().getNome().trim());
getEmpregadoBean().setNome(getEmpregadoBean().getNome().trim());
getEmpregadoBean().setEmail(getEmpregadoBean().getEmail().trim());
getEmpregadoBean().setDataCadastro(UtilDatas.getDataAtual());
if (getEmpregadoBean().getValorSalario() != null) {
getEmpregadoService().calcularCustos(getEmpregadoBean());
}
final EmpregadoDTO empregadoDto = getEmpregadoService().create(getEmpregadoBean());
if (getEmpregadoBean().getIdGrupo() != null) {
final GrupoEmpregadoDTO grupoEmpregadoDto = new GrupoEmpregadoDTO();
grupoEmpregadoDto.setIdEmpregado(empregadoDto.getIdEmpregado());
grupoEmpregadoDto.setIdGrupo(getEmpregadoBean().getIdGrupo());
if (getEmpregadoBean().getCpf() != null && !getEmpregadoBean().getCpf().equalsIgnoreCase("")) {
getEmpregadoBean().setCpf(getEmpregadoBean().getCpf().replace("-", "").replace(".", ""));
}
getEmpregadoBean().setCpf(getEmpregadoBean().getCpf().replace("-", "").replace(".", ""));
getGrupoEmpregadoService().create(grupoEmpregadoDto);
}
final HTMLForm form = document.getForm("form");
form.clear();
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
getEmpregadoBean().setNomeProcura(getEmpregadoBean().getNome());
getEmpregadoBean().setEmail(getEmpregadoBean().getEmail().trim());
if (getEmpregadoBean().getValorSalario() != null) {
getEmpregadoService().calcularCustos(getEmpregadoBean());
}
if (getEmpregadoBean().getCpf() != null && !getEmpregadoBean().getCpf().equalsIgnoreCase("")) {
getEmpregadoBean().setCpf(getEmpregadoBean().getCpf().replace("-", "").replace(".", ""));
}
// this.getEmpregadoBean().getNome().trim();
getEmpregadoService().update(getEmpregadoBean());
final HTMLForm form = document.getForm("form");
form.clear();
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
if (getEmpregadoBean().getIframe() != null && getEmpregadoBean().getIframe().equalsIgnoreCase("true")) {
document.executeScript("parent.fecharAddSolicitante()");
} else {
final HTMLForm form = document.getForm("form");
form.clear();
}
}
/**
* Exclui Empregado atribuindo sua data fim em Empregado.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
Integer idEmpregado = 0;
setEmpregadoBean((EmpregadoDTO) document.getBean());
final GrupoEmpregadoDTO grupoEmpregadoDTO = new GrupoEmpregadoDTO();
final UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(
UsuarioService.class, null);
final ParametroCorporeService parametroService = (ParametroCorporeService) ServiceLocator.getInstance()
.getService(ParametroCorporeService.class, null);
final ParametroCorporeDTO parametroCITSmart = parametroService
.getParamentroAtivo(ParametroSistema.METODO_AUTENTICACAO_Pasta.id());
if (getEmpregadoBean().getIdEmpregado() != null) {
if (parametroCITSmart != null && parametroCITSmart.getValor().trim().equalsIgnoreCase("2")) {
UsuarioDTO usuarioDto = new UsuarioDTO();
usuarioDto = usuarioService.restoreByIdEmpregadosDeUsuarios(getEmpregadoBean().getIdEmpregado());
if (usuarioDto != null) {
if (usuarioDto.getStatus() != null && usuarioDto.getStatus().equalsIgnoreCase("A")) {
document.alert(UtilI18N.internacionaliza(request,
"colaborador.mensagensDeAutenticacaoLDAPColaboradorAtivo"));
return;
}
}
}
if (getEmpregadoBean().getIdEmpregado().intValue() > 0) {
grupoEmpregadoDTO.setIdEmpregado(getEmpregadoBean().getIdEmpregado());
idEmpregado = grupoEmpregadoDTO.getIdEmpregado();
final Collection<GrupoEmpregadoDTO> empregadosDeGrupo = getGrupoEmpregadoService().findByIdEmpregado(
idEmpregado);
if (empregadosDeGrupo != null) {
for (final GrupoEmpregadoDTO grupoEmpregado : empregadosDeGrupo) {
getGrupoEmpregadoService().deleteByIdGrupoAndEmpregado(grupoEmpregado.getIdGrupo(),
grupoEmpregado.getIdEmpregado());
}
}
/* Usado assim pois nao funciona o i18n no serviceEJB sem passar o usuario da sessao. */
getEmpregadoService().deleteEmpregado(getEmpregadoBean());
}
final HTMLForm form = document.getForm("form");
form.clear();
document.executeScript("limpar_LOOKUP_EMPREGADO()");
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
} else {
document.alert(UtilI18N.internacionaliza(request, "colaborador.codigoColaboradorInvalido"));
}
}
/**
* Recupera empregado.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
setEmpregadoBean((EmpregadoDTO) document.getBean());
setEmpregadoBean(getEmpregadoService().restore(getEmpregadoBean()));
final HTMLForm form = document.getForm("form");
form.clear();
form.setValues(getEmpregadoBean());
}
/**
* Iniciliza combo.
*
* @param componenteCombo
* @author thays.araujo
*/
private void inicializarCombo(HTMLSelect componenteCombo, HttpServletRequest request) {
componenteCombo.removeAllOptions();
componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
}
/**
* Preenche a combo Unidade.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author thays.araujo
*/
public void preencherComboUnidade(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final UnidadeService unidadeService = (UnidadeService) ServiceLocator.getInstance().getService(
UnidadeService.class, null);
final HTMLSelect comboUnidade = document.getSelectById("idUnidade");
final ArrayList<UnidadeDTO> unidades = (ArrayList) unidadeService.listHierarquia();
inicializarCombo(comboUnidade, request);
if (unidades != null) {
for (final UnidadeDTO unidade : unidades) {
if (unidade.getDataFim() == null) {
comboUnidade.addOption(unidade.getIdUnidade().toString(),
StringEscapeUtils.escapeJavaScript(unidade.getNomeNivel()));
}
}
}
}
public void carregaUnidade(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final UnidadeService unidadeService = (UnidadeService) ServiceLocator.getInstance().getService(
UnidadeService.class, null);
final EmpregadoDTO empregadoDTO = empregadoBean;
final HTMLSelect comboUnidade = document.getSelectById("idUnidade");
final Integer idContrato = empregadoDTO.getIdContrato();
final ArrayList<UnidadeDTO> unidades = (ArrayList) unidadeService.listHierarquiaMultiContratos(idContrato);
inicializarCombo(comboUnidade, request);
if (unidades != null) {
for (final UnidadeDTO unidade : unidades) {
if (unidade.getDataFim() == null) {
comboUnidade.addOption(unidade.getIdUnidade().toString(),
StringEscapeUtils.escapeJavaScript(unidade.getNomeNivel()));
}
}
}
}
/**
* Preenche combo de Grupos.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void preencherComboGrupo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class,
null);
final HTMLSelect comboGrupo = document.getSelectById("idGrupo");
final ArrayList<GrupoDTO> grupos = (ArrayList) grupoService.list();
inicializarCombo(comboGrupo, request);
for (final GrupoDTO grupo : grupos) {
if (grupo.getDataFim() == null) {
comboGrupo.addOption(grupo.getIdGrupo().toString(), grupo.getNome());
}
}
}
/**
* Preenche combo de Grupos.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void preencherComboCargos(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
}
/**
* Preenche Combo de Grupos associados ao Contrato selecionado.
*
* @param document
* @param request
* @param response
* @param idContrato
* @throws Exception
*/
public void preencherComboGrupos(DocumentHTML document, HttpServletRequest request, HttpServletResponse response,
Integer idContrato) throws Exception {
if (idContrato != null) {
document.executeScript("exibirDivGruposContrato();");
final ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(
ContratoService.class, null);
ContratoDTO contratroDTO = new ContratoDTO();
contratroDTO.setIdContrato(idContrato);
contratroDTO = (ContratoDTO) contratoService.restore(contratroDTO);
if (contratroDTO.getIdGrupoSolicitante() != null) {
GrupoDTO grupoDto = new GrupoDTO();
grupoDto.setIdGrupo(contratroDTO.getIdGrupoSolicitante());
final GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(
GrupoService.class, null);
final HTMLSelect comboGrupo = document.getSelectById("idGrupo");
inicializarCombo(comboGrupo, request);
grupoDto = (GrupoDTO) grupoService.restore(grupoDto);
if (idContrato != null) {
comboGrupo.addOption(grupoDto.getIdGrupo().toString(), grupoDto.getNome());
}
}
} else {
document.executeScript("ocultarDivGruposContrato();");
}
}
@Override
public Class<EmpregadoDTO> getBeanClass() {
return EmpregadoDTO.class;
}
private EmpregadoService empregadoService;
private EmpregadoService getEmpregadoService() throws Exception {
if (empregadoService == null) {
empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
}
return empregadoService;
}
private GrupoEmpregadoService grupoEmpregadoService;
private GrupoEmpregadoService getGrupoEmpregadoService() throws Exception {
if (grupoEmpregadoService == null) {
grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(
GrupoEmpregadoService.class, null);
}
return grupoEmpregadoService;
}
private void setEmpregadoBean(IDto empregado) {
empregadoBean = (EmpregadoDTO) empregado;
}
private EmpregadoDTO getEmpregadoBean() {
return empregadoBean;
}
}