package br.com.centralit.citcorpore.ajaxForms; import java.util.Calendar; import java.util.Collection; import java.util.Date; 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.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.ReuniaoRequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.bpm.negocio.ExecucaoMudanca; import br.com.centralit.citcorpore.negocio.RequisicaoMudancaService; import br.com.centralit.citcorpore.negocio.ReuniaoRequisicaoMudancaService; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.ParametroUtil; 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 AgendarReuniaoRequisicaoMudanca 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; } ReuniaoRequisicaoMudancaDTO atividadePeriodicaDTO = (ReuniaoRequisicaoMudancaDTO)document.getBean(); HTMLForm form = document.getForm("form"); //form.clear(); if (atividadePeriodicaDTO.getIdRequisicaoMudanca()== null){ document.alert(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.naoidentificarsolicitacao")); document.executeScript("fechar();"); return; } ReuniaoRequisicaoMudancaService atividadePeriodicaService = (ReuniaoRequisicaoMudancaService) ServiceLocator.getInstance().getService(ReuniaoRequisicaoMudancaService.class, null); // ProgramacaoAtividadeService programacaoAtividadeService = (ProgramacaoAtividadeService) ServiceLocator.getInstance().getService(ProgramacaoAtividadeService.class, null); // ExecucaoAtividadePeriodicaService execucaoAtividadePeriodicaService = (ExecucaoAtividadePeriodicaService) ServiceLocator.getInstance().getService(ExecucaoAtividadePeriodicaService.class, null); Collection colAgendamentos = atividadePeriodicaService.findByIdRequisicaoMudanca(atividadePeriodicaDTO.getIdRequisicaoMudanca()); confereStatusReuniao(colAgendamentos, request); StringBuilder strBufferAgend = new StringBuilder(); String buffer = ""; strBufferAgend.append("<table width='100%'>"); strBufferAgend.append("<tr>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("<b>"+ UtilI18N.internacionaliza(request, "citcorpore.comum.criacao")+"</b>"); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.datahoraAgendamento")+"</b>"); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.localReuniao")+"</b>"); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.descricao")+"</b>"); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("<b>"+ UtilI18N.internacionaliza(request, "citcorpore.comum.cancelar")+"</b>"); strBufferAgend.append("</td>"); strBufferAgend.append("</tr>"); if (colAgendamentos != null){ for (Iterator it = colAgendamentos.iterator(); it.hasNext();){ ReuniaoRequisicaoMudancaDTO atividadePeriodicaAux = (ReuniaoRequisicaoMudancaDTO)it.next(); strBufferAgend.append("<tr>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append(UtilI18N.internacionaliza(request, "citcorpore.comum.data")+": " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaAux.getDataCriacao(), WebUtil.getLanguage(request))); strBufferAgend.append("<br>" + UtilI18N.internacionaliza(request, "login.usuario")+ ": " + atividadePeriodicaAux.getCriadoPor()); strBufferAgend.append("<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.codreuniao") + ": " + atividadePeriodicaAux.getIdReuniaoRequisicaoMudanca()); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); if(atividadePeriodicaAux.getStatus() != null && atividadePeriodicaAux.getStatus().equals("Ocorrendo")){ strBufferAgend.append("<b><u>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaAux.getDataInicio(), WebUtil.getLanguage(request)) + " " + atividadePeriodicaAux.getHoraInicio() + "</u></b>" + "<font color=\"red\"> "+ atividadePeriodicaAux.getStatus() + "! </font>"); } else { strBufferAgend.append("<b><u>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaAux.getDataInicio(), WebUtil.getLanguage(request)) + " " + atividadePeriodicaAux.getHoraInicio() + "</u></b>" + "<font color=\"blue\"> "+ atividadePeriodicaAux.getStatus() + " </font>"); } strBufferAgend.append("<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.duracaoestimada") + atividadePeriodicaAux.getDuracaoEstimada() + "min"); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append(atividadePeriodicaAux.getLocalReuniao()); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append(atividadePeriodicaAux.getDescricao()); strBufferAgend.append("</td>"); strBufferAgend.append("<td style='border:1px solid black'>"); strBufferAgend.append("#CONTROLE#"); strBufferAgend.append("</td>"); strBufferAgend.append("</td>"); strBufferAgend.append("</tr>"); buffer = strBufferAgend.toString(); buffer = buffer.replaceAll("\\#CONTROLE\\#", "<label type='button' class='light' onclick='excluiReuniao(" + atividadePeriodicaAux.getIdReuniaoRequisicaoMudanca()+ ")'>" + "<img src='" + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/delete.png'>" + "</label>"); strBufferAgend.setLength(0); strBufferAgend.append(buffer); } } strBufferAgend.append("</table>"); document.getElementById("divAgendamentos").setInnerHTML(strBufferAgend.toString()); } 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; } ReuniaoRequisicaoMudancaDTO reuniaoRequisicaoMudancaDto = (ReuniaoRequisicaoMudancaDTO)document.getBean(); if (reuniaoRequisicaoMudancaDto.getDuracaoEstimada() == null || reuniaoRequisicaoMudancaDto.getDuracaoEstimada().intValue() == 0){ document.alert(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.valida.duracao")); return; } RequisicaoMudancaService requisicaoMudancaService = (RequisicaoMudancaService) ServiceLocator.getInstance().getService(RequisicaoMudancaService.class, WebUtil.getUsuarioSistema(request)); RequisicaoMudancaDTO requisicaoMudancaDto = requisicaoMudancaService.restoreAll(reuniaoRequisicaoMudancaDto.getIdRequisicaoMudanca()); reuniaoRequisicaoMudancaDto.setDataCriacao(UtilDatas.getDataAtual()); reuniaoRequisicaoMudancaDto.setCriadoPor(usuario.getNomeUsuario()); ReuniaoRequisicaoMudancaService atividadePeriodicaService = (ReuniaoRequisicaoMudancaService) ServiceLocator.getInstance().getService(ReuniaoRequisicaoMudancaService.class, null); reuniaoRequisicaoMudancaDto.setStatus("Aguardando"); atividadePeriodicaService.create(reuniaoRequisicaoMudancaDto); document.alert(UtilI18N.internacionaliza(request, "MSG05")); //enviar e-mail para todos as pessoas do grupo respons�vel. ExecucaoMudanca execucaoMudanca = new ExecucaoMudanca(); String ID_MODELO_EMAIL_AVISAR_REUNIAO_MARCADA = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_REUNIAO_MARCADA, "39"); execucaoMudanca.enviaEmailReuniaoGrupo(Integer.parseInt(ID_MODELO_EMAIL_AVISAR_REUNIAO_MARCADA), requisicaoMudancaDto.getIdGrupoAtual(), reuniaoRequisicaoMudancaDto.getIdRequisicaoMudanca(), reuniaoRequisicaoMudancaDto.getIdReuniaoRequisicaoMudanca()); /*Thiago Fernandes - 29/10/2013 - 17:33 - Sol. 121468 - Assim que for adicionado um agendamento a popup n�o deve ser fechada, ela deve ser apenas recarregada.*/ load(document, request, response); HTMLForm form = document.getForm("form"); document.executeScript("limparCampos();"); } @Override public Class getBeanClass() { return ReuniaoRequisicaoMudancaDTO.class; } public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ReuniaoRequisicaoMudancaDTO reuniao = (ReuniaoRequisicaoMudancaDTO) document.getBean(); ReuniaoRequisicaoMudancaService reuniaoService = (ReuniaoRequisicaoMudancaService) ServiceLocator.getInstance().getService(ReuniaoRequisicaoMudancaService.class, WebUtil.getUsuarioSistema(request) ); // Verificando a exist�ncia do DTO e do servi�o. if (reuniao != null && reuniaoService != null) { //if (reuniao.getIdReuniaoRequisicaoMudanca() != null && reuniao.getIdReuniaoRequisicaoMudanca().intValue() > 0) { reuniao.setStatus("Cancelada"); reuniaoService.update(reuniao); //} /*Thiago Fernandes - 28/10/2013 - 11:30 - Sol. 121468 - Assim que for ecluido um agendamento a popup n�o deve ser fechada, ela deve ser apenas recarregada.*/ //document.executeScript("fechar();"); document.alert(UtilI18N.internacionaliza(request, "MSG07")); load(document, request, response); } } public void validaHorarioESalva(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ ReuniaoRequisicaoMudancaDTO reuniao = (ReuniaoRequisicaoMudancaDTO) document.getBean(); Date dataAtualComHorario = new Date(); Date dataAtual = UtilDatas.getDataAtual(); Date dataInicio = reuniao.getDataInicio(); if(dataAtual.equals(dataInicio)){ if(verificaSeHorarioReuniaoEhMenorQueHorarioAtual(dataAtualComHorario, reuniao.getHoraInicio())){ document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.horaAtrasada")); return; } } save(document, request, response); } public Boolean verificaSeHorarioReuniaoEhMenorQueHorarioAtual(Date dataAtual, String horaMinutoReuniao){ final Calendar calendar = Calendar.getInstance(); calendar.setTime(dataAtual); int horaAtual = calendar.get(Calendar.HOUR_OF_DAY); int minutoAtual = calendar.get(Calendar.MINUTE); String[] horaEMinutosReuniao = horaMinutoReuniao.split(":"); int horaReuniao = Integer.parseInt(horaEMinutosReuniao[0]); int minutosReuniao = Integer.parseInt(horaEMinutosReuniao[1]); int tempoTotalAtual = horaAtual*60 + minutoAtual; int tempoTotalReuniao = horaReuniao*60 + minutosReuniao; if(tempoTotalReuniao < tempoTotalAtual){ return true; } return false; } public Boolean verificaSeReuniaoJaAcabou(Date dataAtual, ReuniaoRequisicaoMudancaDTO reuniao){ final Calendar calendar = Calendar.getInstance(); calendar.setTime(dataAtual); int horaAtual = calendar.get(Calendar.HOUR_OF_DAY); int minutoAtual = calendar.get(Calendar.MINUTE); String[] horaEMinutosReuniao = reuniao.getHoraInicio().split(":"); int horaReuniao = Integer.parseInt(horaEMinutosReuniao[0]); int minutosReuniao = Integer.parseInt(horaEMinutosReuniao[1]) + reuniao.getDuracaoEstimada(); int tempoTotalAtual = horaAtual*60 + minutoAtual; int tempoTotalReuniao = horaReuniao*60 + minutosReuniao; if(tempoTotalReuniao < tempoTotalAtual){ return true; } return false; } public void confereStatusReuniao(Collection colAgendamentos, HttpServletRequest request) throws ServiceException, Exception{ if(colAgendamentos != null){ ReuniaoRequisicaoMudancaService reuniaoService = (ReuniaoRequisicaoMudancaService) ServiceLocator.getInstance().getService(ReuniaoRequisicaoMudancaService.class, WebUtil.getUsuarioSistema(request) ); for (Iterator iterator = colAgendamentos.iterator(); iterator.hasNext();) { ReuniaoRequisicaoMudancaDTO reuniao = (ReuniaoRequisicaoMudancaDTO) iterator.next(); Date dataAtual = new Date(); if(dataAtual.equals(reuniao.getDataInicio()) || dataAtual.after(reuniao.getDataInicio())){ if(verificaSeHorarioReuniaoEhMenorQueHorarioAtual(dataAtual, reuniao.getHoraInicio())){ if(verificaSeReuniaoJaAcabou(dataAtual, reuniao)){ reuniao.setStatus("Finalizada"); } else{ reuniao.setStatus("Ocorrendo"); } reuniaoService.update(reuniao); } } } } } }