package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoGrupoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoServicoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoUsuarioDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.BaseConhecimentoService;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.negocio.NotificacaoGrupoService;
import br.com.centralit.citcorpore.negocio.NotificacaoService;
import br.com.centralit.citcorpore.negocio.NotificacaoServicoService;
import br.com.centralit.citcorpore.negocio.NotificacaoUsuarioService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.UsuarioService;
import br.com.centralit.citcorpore.util.Enumerados.OrigemNotificacao;
import br.com.centralit.citcorpore.util.Enumerados.TipoNotificacao;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class NotificacaoServicoContrato extends AjaxFormAction {
public void listarServicos(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
Integer idContrato;
String strValor;
Collection<ServicoContratoDTO> colServicoContrato;
Set<ServicoDTO> colServico;
ServicoDTO servicoDTO;
ServicoContratoService servicoContratoService;
ServicoService servicoService;
servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
strValor = request.getParameter("idContrato");
idContrato = null;
if (strValor != null) {
idContrato = Integer.parseInt(strValor);
colServicoContrato = servicoContratoService.findByIdContrato(idContrato);
servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
colServico = new HashSet<ServicoDTO>();
if ((colServicoContrato != null) && (!colServicoContrato.isEmpty())) {
for (ServicoContratoDTO objServicoContrato : colServicoContrato) {
servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(objServicoContrato.getIdServico());
servicoDTO = (ServicoDTO) servicoService.restore(servicoDTO);
colServico.add(servicoDTO);
}
StringBuilder subDiv = new StringBuilder();
subDiv.append("" + "<div class='formBody'> " + " <table id='tbServicos' class='tableLess'> " + " <thead>" + " <tr>"
+ " <th><input type='checkbox' id='todos' onclick='check();' name='todos'/></th> " + " <th>" + UtilI18N.internacionaliza(request, "problema.servico") + "</th> "
+ " </tr>" + " </thead><tbody>");
if ((colServico != null) && (!colServico.isEmpty())) {
int count = 0;
for (ServicoDTO objServico : colServico) {
count++;
if (objServico != null) {
subDiv.append(" <tr>" + " <td align='center'><input type='checkbox' id='idServico" + count + "' name='idServico' value='0" + objServico.getIdServico() + "'/></td>"
+ " <td>" + objServico.getNomeServico() + "</td>" + " </tr>");
}
}
subDiv.append("</tbody></table>");
document.getElementById("divServicos").setInnerHTML(subDiv.toString());
}
}
}
}
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.preencherComboTipoNotificacao(document, request, response);
this.listarServicos(document, request, response);
NotificacaoDTO notificacao = (NotificacaoDTO) document.getBean();
BaseConhecimentoDTO baseConhecimentoDto = new BaseConhecimentoDTO();
if (request.getParameter("idBaseConhecimento") != null && !StringUtils.isEmpty(request.getParameter("idBaseConhecimento"))) {
baseConhecimentoDto.setIdBaseConhecimento(Integer.parseInt(request.getParameter("idBaseConhecimento")));
BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
baseConhecimentoDto = (BaseConhecimentoDTO) baseConhecimentoService.restore(baseConhecimentoDto);
if (baseConhecimentoDto.getIdNotificacao() != null && baseConhecimentoDto.getIdNotificacao() != 0) {
notificacao.setIdNotificacao(baseConhecimentoDto.getIdNotificacao());
this.restore(document, request, response);
}
}
if (notificacao.getIdNotificacao() != null) {
this.restore(document, request, response);
}
// recebe o idnotifica��o para exclusao do item
if (notificacao.getIdNotificacaoExcluir() != null) {
notificacao.setIdNotificacao(notificacao.getIdNotificacaoExcluir());
this.delete(document, request, response);
}
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
NotificacaoDTO notificacao = (NotificacaoDTO) document.getBean();
NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null);
notificacao.setListaDeUsuario((ArrayList<NotificacaoUsuarioDTO>) br.com.citframework.util.WebUtil
.deserializeCollectionFromRequest(NotificacaoUsuarioDTO.class, "usuariosSerializados", request));
notificacao.setListaDeGrupo((ArrayList<NotificacaoGrupoDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoGrupoDTO.class, "gruposSerializados", request));
notificacao.setListaDeServico((ArrayList<NotificacaoServicoDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoServicoDTO.class, "servicosLancados", request));
if (notificacao.getListaDeServico() != null) {
if (notificacao.getIdNotificacao() == null || notificacao.getIdNotificacao().intValue() == 0) {
if (notificacao.getOrigemNotificacao().equals("S")) {
notificacao.setOrigemNotificacao(OrigemNotificacao.S.name());
}
if (notificacaoService.consultarNotificacaoAtivos(notificacao)) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado"));
return;
}
notificacaoService.create(notificacao);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
notificacaoService.update(notificacao, null);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
document.executeScript("$('#gridGrupo').hide();");
document.executeScript("$('#gridUsuario').hide();");
document.executeScript("fecharPopup();");
HTMLForm form = document.getForm("form");
form.clear();
}else{
document.alert(UtilI18N.internacionaliza(request, "servicoContrato.selecioneServicos"));
}
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
NotificacaoDTO notificacaoDto = (NotificacaoDTO) document.getBean();
if (notificacaoDto.getIdNotificacao() == null) {
return;
}
NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null);
NotificacaoGrupoService notificacaoGrupoService = (NotificacaoGrupoService) ServiceLocator.getInstance().getService(NotificacaoGrupoService.class, null);
NotificacaoUsuarioService notificacaoUsuarioService = (NotificacaoUsuarioService) ServiceLocator.getInstance().getService(NotificacaoUsuarioService.class, null);
NotificacaoServicoService notificacaoServicoService = (NotificacaoServicoService) ServiceLocator.getInstance().getService(NotificacaoServicoService.class, null);
GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null);
UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null);
notificacaoDto = (NotificacaoDTO) notificacaoService.restore(notificacaoDto);
document.executeScript("deleteAllRowsUsuario()");
document.executeScript("deleteAllRowsGrupo()");
HTMLForm form = document.getForm("form");
form.clear();
form.setValues(notificacaoDto);
Collection<NotificacaoGrupoDTO> listaIdGrupo = notificacaoGrupoService.listaIdGrupo(notificacaoDto.getIdNotificacao());
Collection<NotificacaoUsuarioDTO> listaIdUsuario = notificacaoUsuarioService.listaIdUsuario(notificacaoDto.getIdNotificacao());
if (listaIdUsuario != null && !listaIdUsuario.isEmpty()) {
for (NotificacaoUsuarioDTO notificacaoUsuarioDto : listaIdUsuario) {
if (notificacaoUsuarioDto.getIdUsuario() != null) {
UsuarioDTO usuarioDto = new UsuarioDTO();
usuarioDto.setIdUsuario(notificacaoUsuarioDto.getIdUsuario());
usuarioDto = (UsuarioDTO) usuarioService.restore(usuarioDto);
document.executeScript("addLinhaTabelaUsuario(" + usuarioDto.getIdUsuario() + ", '" + usuarioDto.getNomeUsuario() + "', " + false + ");");
document.executeScript("exibirTabelaUsuario()");
document.executeScript("$('#gridUsuario').show()");
}
}
}
if (listaIdGrupo != null && !listaIdGrupo.isEmpty()) {
for (NotificacaoGrupoDTO notificacaoGrupoDto : listaIdGrupo) {
if (notificacaoGrupoDto.getIdGrupo() != null) {
GrupoDTO grupoDto = new GrupoDTO();
grupoDto.setIdGrupo(notificacaoGrupoDto.getIdGrupo());
grupoDto = (GrupoDTO) grupoService.restore(grupoDto);
document.executeScript("addLinhaTabelaGrupo(" + grupoDto.getIdGrupo() + ", '" + grupoDto.getNome() + "', " + false + ");");
document.executeScript("exibirTabelaGrupo()");
document.executeScript("$('#gridGrupo').show()");
}
}
}
if (notificacaoDto.getIdContrato() != null) {
Collection<ServicoContratoDTO> colServicoContrato;
Set<ServicoDTO> colServico;
ServicoDTO servicoDTO;
ServicoContratoService servicoContratoService;
ServicoService servicoService;
servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
colServicoContrato = servicoContratoService.findByIdContrato(notificacaoDto.getIdContrato());
servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
colServico = new HashSet<ServicoDTO>();
if ((colServicoContrato != null) && (!colServicoContrato.isEmpty())) {
for (ServicoContratoDTO objServicoContrato : colServicoContrato) {
servicoDTO = new ServicoDTO();
servicoDTO.setIdServico(objServicoContrato.getIdServico());
servicoDTO = (ServicoDTO) servicoService.restore(servicoDTO);
colServico.add(servicoDTO);
}
StringBuilder subDiv = new StringBuilder();
subDiv.append("" + "<div class='formBody'> " + " <table id='tbServicos' class='tableLess'> " + " <thead>" + " <tr>"
+ " <th><input type='checkbox' id='todos' onclick='check();' name='todos'/></th> " + " <th>" + UtilI18N.internacionaliza(request, "problema.servico") + "</th> "
+ " </tr>" + " </thead><tbody>");
if ((colServico != null) && (!colServico.isEmpty())) {
int count = 0;
boolean flag = false;
for (ServicoDTO objServico : colServico) {
if (objServico != null) {
flag = notificacaoServicoService.existeServico(notificacaoDto.getIdNotificacao(), objServico.getIdServico());
String checked = "";
if (flag)
checked = "checked='checked'";
count++;
subDiv.append(" <tr>" + " <td align='center'><input type='checkbox' id='idServico" + count + "' name='idServico' " + checked + " value='0" + objServico.getIdServico()
+ "'/></td>" + " <td>" + objServico.getNomeServico() + "</td>" + " </tr>");
}
}
subDiv.append("</tbody></table>");
document.getElementById("divServicos").setInnerHTML(subDiv.toString());
}
}
}
}
public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
NotificacaoDTO notificacaoDto = (NotificacaoDTO) document.getBean();
NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null);
if (notificacaoDto.getIdNotificacao() != null || notificacaoDto.getIdNotificacao() != 0) {
notificacaoDto.setDataFim(UtilDatas.getDataAtual());
notificacaoService.updateNotNull(notificacaoDto);
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
document.executeScript("$('#gridUsuario').hide()");
document.executeScript("$('#gridGrupo').hide()");
HTMLForm form = document.getForm("form");
form.clear();
}
public void preencherComboTipoNotificacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
HTMLSelect comboTipoNotificacao = (HTMLSelect) document.getSelectById("tipoNotificacao");
inicializaCombo(comboTipoNotificacao, request);
comboTipoNotificacao.addOption("A", UtilI18N.internacionaliza(request, TipoNotificacao.ServALTERADOS.getDescricao()));
// comboTipoNotificacao.addOption("U", UtilI18N.internacionaliza(request, "citcorpore.comum.servicosForemUtilizados"));
}
private void inicializaCombo(HTMLSelect componenteCombo, HttpServletRequest request) {
componenteCombo.removeAllOptions();
componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
}
@Override
public Class getBeanClass() {
// TODO Auto-generated method stub
return NotificacaoDTO.class;
}
}