package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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.citajax.html.HTMLTable;
import br.com.centralit.citcorpore.bean.ClienteDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ContratosGruposDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.EscalonamentoDTO;
import br.com.centralit.citcorpore.bean.FornecedorDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.PrioridadeDTO;
import br.com.centralit.citcorpore.bean.RegraEscalonamentoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.TipoDemandaServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.integracao.PrioridadeDao;
import br.com.centralit.citcorpore.integracao.TipoDemandaServicoDao;
import br.com.centralit.citcorpore.negocio.ClienteService;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.ContratosGruposService;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.EscalonamentoService;
import br.com.centralit.citcorpore.negocio.FornecedorService;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.negocio.RegraEscalonamentoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.Util;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
public class RegraEscalonamento extends AjaxFormAction {
@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;
}
HTMLSelect idTipoGerenciamento = (HTMLSelect) document.getSelectById("idTipoGerenciamento");
idTipoGerenciamento.removeAllOptions();
idTipoGerenciamento.addOption("1", UtilI18N.internacionaliza(request, "citcorpore.comum.solicitacao"));
idTipoGerenciamento.addOption("2", UtilI18N.internacionaliza(request, "problema.problema"));
idTipoGerenciamento.addOption("3", UtilI18N.internacionaliza(request, "menu.relatorio.gerMudanca"));
HTMLSelect tipoDataEscalonamento = (HTMLSelect) document.getSelectById("tipoDataEscalonamento");
tipoDataEscalonamento.removeAllOptions();
tipoDataEscalonamento.addOption("1", UtilI18N.internacionaliza(request, "citcorpore.comum.dataCriacao"));
tipoDataEscalonamento.addOption("2", UtilI18N.internacionaliza(request, "citcorpore.comum.dataUltimaOcorrencia"));
preencherComboGrupoExecutor(document, request, response);
HTMLSelect idTipoDemandaServico = (HTMLSelect) document.getSelectById("idTipoDemandaServico");
idTipoDemandaServico.removeAllOptions();
ArrayList<TipoDemandaServicoDTO> listaTipoDemandaServico;
TipoDemandaServicoDao tipoDemandaServicoDao = new TipoDemandaServicoDao();
listaTipoDemandaServico = (ArrayList<TipoDemandaServicoDTO>) tipoDemandaServicoDao.findByClassificacao("'R','I'");
idTipoDemandaServico.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
for (TipoDemandaServicoDTO tipoDemandaServicoDTO : listaTipoDemandaServico) {
idTipoDemandaServico.addOption(String.valueOf(tipoDemandaServicoDTO.getIdTipoDemandaServico()), tipoDemandaServicoDTO.getNomeTipoDemandaServico());
}
HTMLSelect idPrioridade = (HTMLSelect) document.getSelectById("idPrioridade");
idPrioridade.removeAllOptions();
ArrayList<PrioridadeDTO> listaPrioridades;
PrioridadeDao prioridadeDao = new PrioridadeDao();
listaPrioridades = (ArrayList<PrioridadeDTO>) prioridadeDao.list();
idPrioridade.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
for (PrioridadeDTO prioridadeDTO : listaPrioridades) {
idPrioridade.addOption(String.valueOf(prioridadeDTO.getIdPrioridade()), Util.tratarAspasSimples(Util.retiraBarraInvertida(prioridadeDTO.getNomePrioridade())));
}
HTMLSelect urgencia = (HTMLSelect) document.getSelectById("urgencia");
urgencia.removeAllOptions();
urgencia.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
urgencia.addOption("B", UtilI18N.internacionaliza(request, "citcorpore.comum.baixa"));
urgencia.addOption("M", UtilI18N.internacionaliza(request, "citcorpore.comum.media"));
urgencia.addOption("A", UtilI18N.internacionaliza(request, "citcorpore.comum.alta"));
HTMLSelect impacto = (HTMLSelect) document.getSelectById("impacto");
impacto.removeAllOptions();
impacto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
impacto.addOption("B", UtilI18N.internacionaliza(request, "citcorpore.comum.baixa"));
impacto.addOption("M", UtilI18N.internacionaliza(request, "citcorpore.comum.media"));
impacto.addOption("A", UtilI18N.internacionaliza(request, "citcorpore.comum.alta"));
HTMLSelect intervaloNotificacao = (HTMLSelect) document.getSelectById("intervaloNotificacao");
intervaloNotificacao.removeAllOptions();
//intervaloNotificacao.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Retirado o crit�rio de obrigat�rio da tela, mas o banco necessita de informa��o
intervaloNotificacao.addOption("15", "15");
intervaloNotificacao.addOption("30", "30");
intervaloNotificacao.addOption("45", "45");
intervaloNotificacao.addOption("60", "60 (1:00h)");
intervaloNotificacao.addOption("75", "75 (1:15h)");
intervaloNotificacao.addOption("90", "90 (1:30h)");
intervaloNotificacao.addOption("105", "105 (1:45h)");
intervaloNotificacao.addOption("120", "120 (2:00h)");
intervaloNotificacao.addOption("135", "135 (2:15h)");
intervaloNotificacao.addOption("150", "150 (2:30h)");
intervaloNotificacao.addOption("165", "165 (2:45h)");
intervaloNotificacao.addOption("180", "180 (3:00h)");
intervaloNotificacao.addOption("195", "195 (3:15h)");
intervaloNotificacao.addOption("210", "210 (3:30h)");
intervaloNotificacao.addOption("225", "225 (3:45h)");
intervaloNotificacao.addOption("240", "240 (4:00h)");
intervaloNotificacao.addOption("255", "255 (4:15h)");
intervaloNotificacao.addOption("270", "270 (4:30h)");
intervaloNotificacao.addOption("285", "285 (4:45h)");
intervaloNotificacao.addOption("300", "300 (5:00h)");
intervaloNotificacao.addOption("315", "315 (5:15h)");
intervaloNotificacao.addOption("330", "330 (5:30h)");
intervaloNotificacao.addOption("345", "345 (5:45h)");
intervaloNotificacao.addOption("360", "360 (6:00h)");
HTMLSelect prazoExecucao = (HTMLSelect) document.getSelectById("prazoExecucao");
prazoExecucao.removeAllOptions();
prazoExecucao.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
prazoExecucao.addOption("15", "15");
prazoExecucao.addOption("30", "30");
prazoExecucao.addOption("45", "45");
prazoExecucao.addOption("60", "60 (1:00h)");
prazoExecucao.addOption("75", "75 (1:15h)");
prazoExecucao.addOption("90", "90 (1:30h)");
prazoExecucao.addOption("105", "105 (1:45h)");
prazoExecucao.addOption("120", "120 (2:00h)");
prazoExecucao.addOption("135", "135 (2:15h)");
prazoExecucao.addOption("150", "150 (2:30h)");
prazoExecucao.addOption("165", "165 (2:45h)");
prazoExecucao.addOption("180", "180 (3:00h)");
prazoExecucao.addOption("195", "195 (3:15h)");
prazoExecucao.addOption("210", "210 (3:30h)");
prazoExecucao.addOption("225", "225 (3:45h)");
prazoExecucao.addOption("240", "240 (4:00h)");
prazoExecucao.addOption("255", "255 (4:15h)");
prazoExecucao.addOption("270", "270 (4:30h)");
prazoExecucao.addOption("285", "285 (4:45h)");
prazoExecucao.addOption("300", "300 (5:00h)");
prazoExecucao.addOption("315", "315 (5:15h)");
prazoExecucao.addOption("330", "330 (5:30h)");
prazoExecucao.addOption("345", "345 (5:45h)");
prazoExecucao.addOption("360", "360 (6:00h)");
HTMLSelect prazoCriarProblema = (HTMLSelect) document.getSelectById("prazoCriarProblema");
prazoCriarProblema.removeAllOptions();
//prazoCriarProblema.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
prazoCriarProblema.addOption("15", "15");
prazoCriarProblema.addOption("30", "30");
prazoCriarProblema.addOption("45", "45");
prazoCriarProblema.addOption("60", "60 (1:00h)");
prazoCriarProblema.addOption("75", "75 (1:15h)");
prazoCriarProblema.addOption("90", "90 (1:30h)");
prazoCriarProblema.addOption("105", "105 (1:45h)");
prazoCriarProblema.addOption("120", "120 (2:00h)");
prazoCriarProblema.addOption("135", "135 (2:15h)");
prazoCriarProblema.addOption("150", "150 (2:30h)");
prazoCriarProblema.addOption("165", "165 (2:45h)");
prazoCriarProblema.addOption("180", "180 (3:00h)");
prazoCriarProblema.addOption("195", "195 (3:15h)");
prazoCriarProblema.addOption("210", "210 (3:30h)");
prazoCriarProblema.addOption("225", "225 (3:45h)");
prazoCriarProblema.addOption("240", "240 (4:00h)");
prazoCriarProblema.addOption("255", "255 (4:15h)");
prazoCriarProblema.addOption("270", "270 (4:30h)");
prazoCriarProblema.addOption("285", "285 (4:45h)");
prazoCriarProblema.addOption("300", "300 (5:00h)");
prazoCriarProblema.addOption("315", "315 (5:15h)");
prazoCriarProblema.addOption("330", "330 (5:30h)");
prazoCriarProblema.addOption("345", "345 (5:45h)");
prazoCriarProblema.addOption("360", "360 (6:00h)");
preencherComboContrato(document, request, response);
}
public void preencherComboGrupoExecutor(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{
HTMLSelect idGrupoAtual = (HTMLSelect) document.getSelectById("idGrupoAtual");
idGrupoAtual.removeAllOptions();
idGrupoAtual.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
GrupoService grupoSegurancaService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null);
Collection<GrupoDTO> colGrupos = grupoSegurancaService.listGruposServiceDesk();
if (colGrupos != null)
idGrupoAtual.addOptions(colGrupos, "idGrupo", "nome", null);
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
RegraEscalonamentoDTO regraEscalonamentoDTO = (RegraEscalonamentoDTO) document.getBean();
RegraEscalonamentoService service = (RegraEscalonamentoService) ServiceLocator.getInstance().getService(RegraEscalonamentoService.class, WebUtil.getUsuarioSistema(request));
regraEscalonamentoDTO = (RegraEscalonamentoDTO) service.restore(regraEscalonamentoDTO);
if ((regraEscalonamentoDTO!=null)&&(regraEscalonamentoDTO.getIdRegraEscalonamento()!=null)){
EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, WebUtil.getUsuarioSistema(request));
if(regraEscalonamentoDTO.getIdSolicitante() != null){
EmpregadoDTO empregadoDTO = empregadoService.restoreByIdEmpregado(regraEscalonamentoDTO.getIdSolicitante());
regraEscalonamentoDTO.setNomeSolicitante(((empregadoDTO==null)||(empregadoDTO.getNome()==null))?"":empregadoDTO.getNome());
}
ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, WebUtil.getUsuarioSistema(request));
if(regraEscalonamentoDTO.getIdServico() != null){
ServicoDTO servicoDTO = servicoService.findById(regraEscalonamentoDTO.getIdServico());
regraEscalonamentoDTO.setServico(((servicoDTO==null)||(servicoDTO.getNomeServico()==null))?"":servicoDTO.getNomeServico());
}
if (regraEscalonamentoDTO.getIdGrupo() != null) {
GrupoService grupoService = (GrupoService) ServiceLocator
.getInstance().getService(GrupoService.class,
WebUtil.getUsuarioSistema(request));
GrupoDTO grupoDTO = grupoService
.listGrupoById(regraEscalonamentoDTO.getIdGrupo());
regraEscalonamentoDTO.setGrupo(((grupoDTO == null) || (grupoDTO
.getDescricao() == null)) ? "" : grupoDTO
.getDescricao());
}
}
atualizaTblGrupoExecutor(document, request, response,regraEscalonamentoDTO);
HTMLForm form = document.getForm("form");
form.clear();
if(regraEscalonamentoDTO != null){
form.setValues(regraEscalonamentoDTO);
}
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
RegraEscalonamentoDTO regraEscalonamentoDTO = (RegraEscalonamentoDTO) document.getBean();
RegraEscalonamentoService service = (RegraEscalonamentoService) ServiceLocator.getInstance().getService(RegraEscalonamentoService.class, null);
Collection<EscalonamentoDTO> grupos_serialize = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(EscalonamentoDTO.class, "grupos_serialize", request);
if (grupos_serialize != null) {
regraEscalonamentoDTO.setColEscalonamentoDTOs(grupos_serialize);
}
if (regraEscalonamentoDTO != null && service != null) {
regraEscalonamentoDTO.setCriaProblema(regraEscalonamentoDTO.getCriaProblema()==null ? "N" : regraEscalonamentoDTO.getCriaProblema());
regraEscalonamentoDTO.setEnviarEmail(regraEscalonamentoDTO.getEnviarEmail() ==null ? "N" : regraEscalonamentoDTO.getEnviarEmail());
if (regraEscalonamentoDTO.getIdRegraEscalonamento() == null) {
service.create(regraEscalonamentoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
service.update(regraEscalonamentoDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.setBean(new RegraEscalonamentoDTO());
HTMLTable tblGrupoExecutor = document.getTableById("tblGrupoExecutor");
tblGrupoExecutor.deleteAllRows();
load(document, request, response);
}
}
public void excluir(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
RegraEscalonamentoDTO regraEscalonamentoDTO = (RegraEscalonamentoDTO) document.getBean();
RegraEscalonamentoService service = (RegraEscalonamentoService) ServiceLocator.getInstance().getService(RegraEscalonamentoService.class, null);
if (regraEscalonamentoDTO.getIdRegraEscalonamento() != null) {
service.delete(regraEscalonamentoDTO);
document.alert(UtilI18N.internacionaliza(request, "regraEscalonamento.excluida"));
}
HTMLForm form = document.getForm("form");
form.clear();
document.setBean(new RegraEscalonamentoDTO());
HTMLTable tblGrupoExecutor = document.getTableById("tblGrupoExecutor");
tblGrupoExecutor.deleteAllRows();
}
@Override
public Class getBeanClass() {
return RegraEscalonamentoDTO.class;
}
private boolean isContratoInList(Integer idContrato, Collection colContratosColab) {
if (colContratosColab != null) {
for (Iterator it = colContratosColab.iterator(); it.hasNext();) {
ContratosGruposDTO contratosGruposDTO = (ContratosGruposDTO) it.next();
if (contratosGruposDTO.getIdContrato().intValue() == idContrato.intValue()) {
return true;
}
}
}
return false;
}
public void preencherComboContrato(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception{
RegraEscalonamentoDTO regraEscalonamentoDTO = (RegraEscalonamentoDTO) document.getBean();
ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null);
ClienteService clienteService = (ClienteService) ServiceLocator.getInstance().getService(ClienteService.class, null);
FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null);
ContratosGruposService contratosGruposService = (ContratosGruposService) ServiceLocator.getInstance().getService(ContratosGruposService.class, null);
Collection colContratos = contratoService.list();
ContratoDTO contratoDtoAux = new ContratoDTO();
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;
}
String COLABORADORES_VINC_CONTRATOS = ParametroUtil.getValorParametroCitSmartHashMap(br.com.centralit.citcorpore.util.Enumerados.ParametroSistema.COLABORADORES_VINC_CONTRATOS, "N");
if (COLABORADORES_VINC_CONTRATOS == null) {
COLABORADORES_VINC_CONTRATOS = "N";
}
Collection colContratosColab = null;
if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) {
colContratosColab = contratosGruposService.findByIdEmpregado(usuario.getIdEmpregado());
}
Collection<ContratoDTO> listaContratos = new ArrayList<ContratoDTO>();
((HTMLSelect) document.getSelectById("idContrato")).removeAllOptions();
if (colContratos != null) {
if (colContratos.size() > 1) {
((HTMLSelect) document.getSelectById("idContrato")).addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
}
for (Iterator it = colContratos.iterator(); it.hasNext();) {
ContratoDTO contratoDto = (ContratoDTO) it.next();
if (contratoDto.getDeleted() == null || !contratoDto.getDeleted().equalsIgnoreCase("y")) {
if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) { // Se parametro de colaboradores por contrato ativo, entao filtra.
if (colContratosColab == null) {
continue;
}
if (!isContratoInList(contratoDto.getIdContrato(), colContratosColab)) {
continue;
}
}
if (regraEscalonamentoDTO != null && regraEscalonamentoDTO.getIdRegraEscalonamento() != null) {
this.restore(document, request, response);
}
String nomeCliente = "";
String nomeForn = "";
ClienteDTO clienteDto = new ClienteDTO();
clienteDto.setIdCliente(contratoDto.getIdCliente());
clienteDto = (ClienteDTO) clienteService.restore(clienteDto);
if (clienteDto != null) {
nomeCliente = clienteDto.getNomeRazaoSocial();
}
FornecedorDTO fornecedorDto = new FornecedorDTO();
fornecedorDto.setIdFornecedor(contratoDto.getIdFornecedor());
fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto);
if (fornecedorDto != null) {
nomeForn = fornecedorDto.getRazaoSocial();
}
contratoDtoAux.setIdContrato(contratoDto.getIdContrato());
if (contratoDto.getSituacao().equalsIgnoreCase("A")) {
String nomeContrato = "" + contratoDto.getNumero() + " de " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, contratoDto.getDataContrato(), WebUtil.getLanguage(request)) + " (" + nomeCliente + " - " + nomeForn + ")";
((HTMLSelect) document.getSelectById("idContrato")).addOption("" + contratoDto.getIdContrato(), nomeContrato);
contratoDto.setNome(nomeContrato);
listaContratos.add(contratoDto);
}
}
}
}
}
public void atualizaTblGrupoExecutor(DocumentHTML document, HttpServletRequest request, HttpServletResponse response,RegraEscalonamentoDTO regraEscalonamentoDTO) throws Exception{
//Restaurar tabela de escalonamento de grupos
HTMLTable tblGrupoExecutor = document.getTableById("tblGrupoExecutor");
tblGrupoExecutor.deleteAllRows();
EscalonamentoService escalonamentoService = (EscalonamentoService) ServiceLocator.getInstance().getService(EscalonamentoService.class, WebUtil.getUsuarioSistema(request));
Collection<EscalonamentoDTO> colEscalonamentoDTOs = escalonamentoService.findByRegraEscalonamento(regraEscalonamentoDTO);
regraEscalonamentoDTO.setColEscalonamentoDTOs(colEscalonamentoDTOs);
if ((tblGrupoExecutor != null)&&(colEscalonamentoDTOs != null)) {
tblGrupoExecutor.addRowsByCollection(colEscalonamentoDTOs, new String[] { "", "idGrupoExecutor", "descricao", "prazoExecucao", "idPrioridade", "descrPrioridade" }, null, "", new String[] { "gerarImgDelGrupoExecutor" }, null, null);
}
document.executeScript("HTMLUtils.applyStyleClassInAllCells('tblGrupoExecutor', 'tblGrupoExecutor');");
}
}