package br.com.centralit.citcorpore.batch;
import java.util.Collection;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import br.com.centralit.citcorpore.bean.CaracteristicaDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.GrupoEmailDTO;
import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.MonitoramentoAtivosDTO;
import br.com.centralit.citcorpore.bean.NotificacaoGrupoMonitDTO;
import br.com.centralit.citcorpore.bean.NotificacaoUsuarioMonitDTO;
import br.com.centralit.citcorpore.bean.ProblemaDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.TipoItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bean.ValorDTO;
import br.com.centralit.citcorpore.integracao.EmpregadoDao;
import br.com.centralit.citcorpore.integracao.GrupoEmailDao;
import br.com.centralit.citcorpore.integracao.ItemConfiguracaoDao;
import br.com.centralit.citcorpore.integracao.NotificacaoGrupoMonitDAO;
import br.com.centralit.citcorpore.integracao.NotificacaoUsuarioMonitDAO;
import br.com.centralit.citcorpore.integracao.UsuarioDao;
import br.com.centralit.citcorpore.mail.MensagemEmail;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.PortalService;
import br.com.centralit.citcorpore.negocio.ProblemaService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
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.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilStrings;
/**
* @author valdoilo.damasceno
* @since 13.06.2014
*/
@SuppressWarnings("unused")
public class ThreadMonitoraAtivosConfiguracao extends Thread {
private TipoItemConfiguracaoDTO tipoItemConfiguracaoDto;
private CaracteristicaDTO caracteristicaDto;
private ValorDTO valorAnteriorDto;
private ValorDTO novoValorDto;
private MonitoramentoAtivosDTO monitoramentoAtivosDto;
public ThreadMonitoraAtivosConfiguracao(MonitoramentoAtivosDTO monitoramentoAtivosDto, TipoItemConfiguracaoDTO tipoItemConfiguracaoDto, CaracteristicaDTO caracteristicaDto, ValorDTO valorAntigo,
ValorDTO novoValorDto) {
this.monitoramentoAtivosDto = monitoramentoAtivosDto;
this.tipoItemConfiguracaoDto = tipoItemConfiguracaoDto;
this.caracteristicaDto = caracteristicaDto;
valorAnteriorDto = valorAntigo;
this.novoValorDto = novoValorDto;
}
@Override
public void run() {
if (monitoramentoAtivosDto != null) {
if (monitoramentoAtivosDto.getEnviarEmail() != null && monitoramentoAtivosDto.getEnviarEmail().equalsIgnoreCase("y")) {
try {
this.tratarNotificacaoEmail(monitoramentoAtivosDto, tipoItemConfiguracaoDto, caracteristicaDto, valorAnteriorDto, novoValorDto);
} catch (LogicException e) {
e.printStackTrace();
}
}
if (monitoramentoAtivosDto.getCriarProblema() != null && monitoramentoAtivosDto.getCriarProblema().equalsIgnoreCase("y")) {
try {
this.criarProblema(monitoramentoAtivosDto);
} catch (Exception e) {
e.printStackTrace();
}
}
if (monitoramentoAtivosDto.getCriarIncidente() != null && monitoramentoAtivosDto.getCriarIncidente().equalsIgnoreCase("y")) {
this.criarIncidente(monitoramentoAtivosDto);
}
}
}
/**
* @param monitoramentoAtivosDto2
* @author rodrigo.pecci
*/
private void criarIncidente(MonitoramentoAtivosDTO monitoramentoAtivosDto2) {
try {
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null);
UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null);
EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
PortalService portalService = (PortalService) ServiceLocator.getInstance().getService(PortalService.class, null);
ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoDTO();
// Preenche o contrato
Integer idContrato = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.CONTRATO_PADRAO, "1"));
solicitacaoServicoDto.setIdContrato(idContrato);
// Preenche a origem
Integer idOrigem = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ORIGEM_PADRAO_SOLICITACAO, "2"));
solicitacaoServicoDto.setIdOrigem(idOrigem);
// Preenche o grupo atual
Integer idGrupoAtual = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, "53"));
solicitacaoServicoDto.setIdGrupoAtual(idGrupoAtual);
// Preenche a situa��o e registro de execu��o
solicitacaoServicoDto.setSituacao("EmAndamento");
solicitacaoServicoDto.setRegistroexecucao("");
// Preenche as informa��es do solicitante e contato
UsuarioDTO usuarioDto = usuarioService.restoreByIdEmpregado(1);
EmpregadoDTO empregadoDto = empregadoService.restoreByIdEmpregado(usuarioDto.getIdEmpregado());
solicitacaoServicoDto.setIdSolicitante(usuarioDto.getIdEmpregado());
solicitacaoServicoDto.setUsuarioDto(usuarioDto);
solicitacaoServicoDto.setRegistradoPor(usuarioDto.getNomeUsuario());
solicitacaoServicoDto.setIdUnidade(empregadoDto.getIdUnidade());
solicitacaoServicoDto.setNomecontato(empregadoDto.getNome());
solicitacaoServicoDto.setEmailcontato(empregadoDto.getEmail());
solicitacaoServicoDto.setTelefonecontato(empregadoDto.getTelefone());
// Preenche o id do servi�o
Integer idServico = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.SERVICO_PADRAO_SOLICITACAO, "1721"));
solicitacaoServicoDto.setIdServico(idServico);
// Preenche o tipo de demanda
ServicoDTO servicoDto = servicoService.findById(idServico);
solicitacaoServicoDto.setIdTipoDemandaServico(servicoDto.getIdTipoDemandaServico());
// Preenche o impacto e urg�ncia
portalService.relacionaImpactoUrgencia(solicitacaoServicoDto);
// Preenche a descri��o
solicitacaoServicoDto.setDescricao(UtilStrings.getParameter(monitoramentoAtivosDto2.getDescricao()));
// Realiza o create
solicitacaoServicoService.create(solicitacaoServicoDto);
} catch (ServiceException e) {
System.out.println("FALHA AO CRIAR INCIDENTE NO MONITORAMENTO DE ATIVOS DE CONFIGURA��O. VERIFICAR PAR�METROS RELACIONADOS.");
e.printStackTrace();
} catch (Exception e) {
System.out.println("FALHA AO CRIAR INCIDENTE NO MONITORAMENTO DE ATIVOS DE CONFIGURA��O. VERIFICAR PAR�METROS RELACIONADOS.");
e.printStackTrace();
}
}
/**
* @param monitoramentoAtivosDto
* @author valdoilo.damasceno
* @throws Exception
* @since 17.06.2014
*/
private void criarProblema(MonitoramentoAtivosDTO monitoramentoAtivosDto) throws Exception {
Integer idContrato = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.CONTRATO_PADRAO, "1"));
Integer idGrupoNivel1 = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_NIVEL1, "53"));
Integer idServico = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SERVICO_PADRAO_SOLICITACAO, "1721"));
Integer idOrigem = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ORIGEM_PADRAO_SOLICITACAO, "2"));
EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null);
// admin
UsuarioDTO usuarioDto = usuarioService.restoreByIdEmpregado(1);
EmpregadoDTO empregadoDto = empregadoService.restoreByIdEmpregado(usuarioDto.getIdEmpregado());
ProblemaDTO problemaDto = new ProblemaDTO();
ProblemaService problemaService = (ProblemaService) ServiceLocator.getInstance().getService(ProblemaService.class, null);
problemaDto.setIdContrato(idContrato);
problemaDto.setIdSolicitante(empregadoDto.getIdEmpregado());
problemaDto.setIdOrigemAtendimento(idOrigem);
problemaDto.setNomeContato(empregadoDto.getNome());
problemaDto.setEmailContato(empregadoDto.getEmail());
problemaDto.setTelefoneContato(empregadoDto.getTelefone());
problemaDto.setRamal(empregadoDto.getRamal());
problemaDto.setIdUnidade(empregadoDto.getIdUnidade());
problemaDto.setTitulo("Problema Criado por Rotina autom�tica");
problemaDto.setDescricao(StringEscapeUtils.escapeHtml(monitoramentoAtivosDto.getDescricao()));
problemaDto.setSeveridade("Alta");
problemaDto.setStatus("Registrada");
problemaDto.setImpacto("M");
problemaDto.setUrgencia("M");
problemaDto.setEnviaEmailCriacao("S");
problemaDto.setEnviaEmailFinalizacao("S");
problemaDto.setEnviaEmailPrazoSolucionarExpirou("S");
problemaDto.setIdGrupo(idGrupoNivel1);
problemaDto.setIdCriador(empregadoDto.getIdEmpregado());
problemaDto.setIdResponsavel(empregadoDto.getIdEmpregado());
problemaDto.setIdPrioridade(3);
problemaDto.setPrioridade(3);
problemaDto.setIdServico(idServico);
problemaDto.setUsuarioDto(usuarioDto);
problemaDto.setDataHoraInicio(UtilDatas.getDataHoraAtual());
// categoria padr�o
problemaDto.setIdCategoriaProblema(1);
problemaService.create(problemaDto);
}
/**
* Trata o envio de Notifica��es de acordo com os Usu�rios e Grupos informados no Monitoramento de Ativos.
*
* @throws LogicException
* @param monitoramentoAtivosDto2
* @author valdoilo.damasceno
* @param novoValorDto2
* @param valorAnteriorDto2
* @param caracteristicaDto2
* @param tipoItemConfiguracaoDto2
* @since 16.06.2014
*/
private void tratarNotificacaoEmail(MonitoramentoAtivosDTO monitoramentoAtivosDto2, TipoItemConfiguracaoDTO tipoItemConfiguracaoDto2, CaracteristicaDTO caracteristicaDto2,
ValorDTO valorAnteriorDto2, ValorDTO novoValorDto2) throws LogicException {
if (monitoramentoAtivosDto2.getEnviarEmail() != null && monitoramentoAtivosDto2.getEnviarEmail().equalsIgnoreCase("y")) {
NotificacaoUsuarioMonitDAO notificacaoUsuarioMonitDao = new NotificacaoUsuarioMonitDAO();
NotificacaoGrupoMonitDAO notificacaoGrupoMonitDao = new NotificacaoGrupoMonitDAO();
EmpregadoDao empregadoDao = new EmpregadoDao();
GrupoEmailDao grupoEmailDao = new GrupoEmailDao();
UsuarioDao usuarioDao = new UsuarioDao();
String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null);
if (remetente == null) {
throw new LogicException("Remetente para notifica��es de solicita��o de servi�o n�o foi parametrizado");
}
try {
Integer idModeloEmail = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.MONITORAMENTO_ATIVOS_ID_MODELO_EMAIL_NOTIFICACAO, ""));
ItemConfiguracaoDao itemConfiguracaoDao = new ItemConfiguracaoDao();
ItemConfiguracaoDTO itemConfiguracaoDTO = itemConfiguracaoDao.findByIdItemConfiguracaoWithIdentificacaoPai(valorAnteriorDto2.getIdItemConfiguracao());
Collection<NotificacaoUsuarioMonitDTO> listNotificacaoUsuarioMonitDto = notificacaoUsuarioMonitDao.restoreByIdMonitoramentoAtivos(monitoramentoAtivosDto2.getIdMonitoramentoAtivos());
if (listNotificacaoUsuarioMonitDto != null && !listNotificacaoUsuarioMonitDto.isEmpty()) {
for (NotificacaoUsuarioMonitDTO notificacaoUsuario : listNotificacaoUsuarioMonitDto) {
EmpregadoDTO empregadoDto = empregadoDao.restoreByIdUsuario(notificacaoUsuario.getIdUsuario());
if (empregadoDto != null && empregadoDto.getEmail() != null && StringUtils.isNotBlank(empregadoDto.getEmail())) {
this.enviarEmail(remetente, idModeloEmail, empregadoDto.getEmail(), monitoramentoAtivosDto2, tipoItemConfiguracaoDto2, caracteristicaDto2, valorAnteriorDto2, novoValorDto2, itemConfiguracaoDTO);
}
}
}
Collection<NotificacaoGrupoMonitDTO> listNotificacaoGrupoMonitDTO = notificacaoGrupoMonitDao.restoreByIdMonitoramentoAtivos(monitoramentoAtivosDto2.getIdMonitoramentoAtivos());
if (listNotificacaoGrupoMonitDTO != null && !listNotificacaoGrupoMonitDTO.isEmpty()) {
for (NotificacaoGrupoMonitDTO notificacaoGrupo : listNotificacaoGrupoMonitDTO) {
Collection<EmpregadoDTO> listEmpregadoDto = empregadoDao.restoreByIdGrupo(notificacaoGrupo.getIdGrupo());
if (listEmpregadoDto != null && !listEmpregadoDto.isEmpty()) {
for (EmpregadoDTO empregadoDto : listEmpregadoDto) {
if (empregadoDto.getEmail() != null && StringUtils.isNotBlank(empregadoDto.getEmail())) {
this.enviarEmail(remetente, idModeloEmail, empregadoDto.getEmail(), monitoramentoAtivosDto2, tipoItemConfiguracaoDto2, caracteristicaDto2, valorAnteriorDto2,
novoValorDto2, itemConfiguracaoDTO);
}
}
}
Collection<GrupoEmailDTO> listGrupoEmailDto = grupoEmailDao.findByIdGrupo(notificacaoGrupo.getIdGrupo());
if (listGrupoEmailDto != null && !listGrupoEmailDto.isEmpty()) {
for (GrupoEmailDTO grupoEmailDto : listGrupoEmailDto) {
this.enviarEmail(remetente, idModeloEmail, grupoEmailDto.getEmail(), monitoramentoAtivosDto2, tipoItemConfiguracaoDto2, caracteristicaDto2, valorAnteriorDto2,
novoValorDto2, itemConfiguracaoDTO);
}
}
}
}
} catch (NumberFormatException ne) {
System.out.println("FALHA AO ENVIAR E-MAIL NO MONITORAMENTO DE ATIVOS DE CONFIGURA��O. VERIFICAR PAR�METROS RELACIONADOS.");
ne.printStackTrace();
} catch (Exception e) {
System.out.println("FALHA AO ENVIAR E-MAIL NO MONITORAMENTO DE ATIVOS DE CONFIGURA��O. VERIFICAR PAR�METROS RELACIONADOS.");
e.printStackTrace();
}
}
}
/**
* Envia Mensagem de E-mail utilizando o Remente, Modelo de E-mail e Destinat�rio informados.
*
* @param remetente
* - Remetente do e-mail.
* @param idModeloEmail
* - Modelo de e-mail que ser� utilizado.
* @param empregadoDto
* - Empregado para quem ser� enviado e-mail.
* @param monitoramentoAtivosDto2
* @throws Exception
* @author valdoilo.damasceno
* @param novoValorDto2
* @param valorAnteriorDto2
* @param caracteristicaDto2
* @param tipoItemConfiguracaoDto2
* @since 16.06.2014
*/
private void enviarEmail(String remetente, Integer idModeloEmail, String emailEmpregado, MonitoramentoAtivosDTO monitoramentoAtivosDto2, TipoItemConfiguracaoDTO tipoItemConfiguracaoDto2,
CaracteristicaDTO caracteristicaDto2, ValorDTO valorAnteriorDto2, ValorDTO novoValorDto2, ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception {
MensagemEmail mensagem = new MensagemEmail(idModeloEmail, new IDto[] { monitoramentoAtivosDto2, tipoItemConfiguracaoDto2, caracteristicaDto2, valorAnteriorDto2, novoValorDto2, itemConfiguracaoDTO });
try {
mensagem.envia(emailEmpregado, remetente, remetente);
} catch (Exception e) {
System.out.println("FALHA AO ENVIAR E-MAIL NO MONITORAMENTO DE ATIVOS DE CONFIGURA��O. VERIFICAR PAR�METROS RELACIONADOS.");
e.printStackTrace();
}
}
}