package br.com.centralit.citcorpore.ajaxForms;
import java.sql.Timestamp;
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.citcorpore.bean.AtividadePeriodicaDTO;
import br.com.centralit.citcorpore.bean.ExecucaoAtividadePeriodicaDTO;
import br.com.centralit.citcorpore.bean.GrupoAtvPeriodicaDTO;
import br.com.centralit.citcorpore.bean.OcorrenciaSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.ProgramacaoAtividadeDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.AtividadePeriodicaService;
import br.com.centralit.citcorpore.negocio.ExecucaoAtividadePeriodicaService;
import br.com.centralit.citcorpore.negocio.GrupoAtvPeriodicaService;
import br.com.centralit.citcorpore.negocio.OcorrenciaSolicitacaoService;
import br.com.centralit.citcorpore.negocio.ProgramacaoAtividadeService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AgendarAtividade extends AjaxFormAction {
@Override
public Class getBeanClass() {
return AtividadePeriodicaDTO.class;
}
@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;
}
AtividadePeriodicaDTO atividadePeriodicaDTO = (AtividadePeriodicaDTO) document.getBean();
HTMLForm form = document.getForm("form");
form.clear();
HTMLSelect idGrupoAtvPeriodica = document.getSelectById("idGrupoAtvPeriodica");
GrupoAtvPeriodicaService grupoAtvPeriodicaService = (GrupoAtvPeriodicaService) ServiceLocator.getInstance().getService(GrupoAtvPeriodicaService.class, null);
Collection <GrupoAtvPeriodicaDTO> colGrupos = grupoAtvPeriodicaService.listGrupoAtividadePeriodicaAtiva();
ArrayList <GrupoAtvPeriodicaDTO> colGruposAtivos = new ArrayList<GrupoAtvPeriodicaDTO>();
if (colGrupos != null) {
for (GrupoAtvPeriodicaDTO grupos : colGrupos){
if(grupos.getDataInicio().compareTo(UtilDatas.getDataAtual())<=0){
colGruposAtivos.add(grupos);
}
}
}
idGrupoAtvPeriodica.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
idGrupoAtvPeriodica.addOptions(colGruposAtivos, "idGrupoAtvPeriodica", "nomeGrupoAtvPeriodica", null);
form.setValues(atividadePeriodicaDTO);
if (atividadePeriodicaDTO.getIdSolicitacaoServico() == null) {
document.alert(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.naoidentificarsolicitacao"));
document.executeScript("fechar();");
return;
}
AtividadePeriodicaService atividadePeriodicaService = (AtividadePeriodicaService) ServiceLocator.getInstance().getService(AtividadePeriodicaService.class, null);
ProgramacaoAtividadeService programacaoAtividadeService = (ProgramacaoAtividadeService) ServiceLocator.getInstance().getService(ProgramacaoAtividadeService.class, null);
ExecucaoAtividadePeriodicaService execucaoAtividadePeriodicaService = (ExecucaoAtividadePeriodicaService) ServiceLocator.getInstance()
.getService(ExecucaoAtividadePeriodicaService.class, null);
Collection colAgendamentos = atividadePeriodicaService.findByIdSolicitacaoServico(atividadePeriodicaDTO.getIdSolicitacaoServico());
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<table width='100%'>");
stringBuilder.append("<tr>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b> </b>");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b>" + UtilI18N.internacionaliza(request, "citcorpore.comum.criacao") + "</b>");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.datahoraAgendamento") + "</b>");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.grupo") + "</b>");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.orientacao") + "</b>");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.execucao") + "</b>");
stringBuilder.append("</td>");
stringBuilder.append("</tr>");
if (colAgendamentos != null) {
for (Iterator it = colAgendamentos.iterator(); it.hasNext();) {
AtividadePeriodicaDTO atividadePeriodicaAux = (AtividadePeriodicaDTO) it.next();
Collection colProgs = programacaoAtividadeService.findByIdAtividadePeriodicaOrderDataHora(atividadePeriodicaAux.getIdAtividadePeriodica());
if (colProgs != null) {
for (Iterator itProg = colProgs.iterator(); itProg.hasNext();) {
ProgramacaoAtividadeDTO programacaoAtividadeDTO = (ProgramacaoAtividadeDTO) itProg.next();
stringBuilder.append("<tr>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("#CONTROLE#");
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append(UtilI18N.internacionaliza(request, "citcorpore.comum.data") + ": " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaAux.getDataCriacao(), WebUtil.getLanguage(request)));
stringBuilder.append("<br>" + UtilI18N.internacionaliza(request, "login.usuario") + ": " + atividadePeriodicaAux.getCriadoPor());
stringBuilder.append("<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.codagendamento") + ": " + atividadePeriodicaAux.getIdAtividadePeriodica());
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append("<b><u>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, programacaoAtividadeDTO.getDataInicio(), WebUtil.getLanguage(request)) + " " + programacaoAtividadeDTO.getHoraInicio() + "</u></b>");
stringBuilder.append("<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.duracaoestimada") + ": " + programacaoAtividadeDTO.getDuracaoEstimada()
+ "min");
stringBuilder.append("</td>");
GrupoAtvPeriodicaDTO grupoAtvPeriodicaDTO = new GrupoAtvPeriodicaDTO();
grupoAtvPeriodicaDTO.setIdGrupoAtvPeriodica(atividadePeriodicaAux.getIdGrupoAtvPeriodica());
grupoAtvPeriodicaDTO = (GrupoAtvPeriodicaDTO) grupoAtvPeriodicaService.restore(grupoAtvPeriodicaDTO);
String grupoAtv = "--";
if (grupoAtvPeriodicaDTO != null) {
grupoAtv = grupoAtvPeriodicaDTO.getNomeGrupoAtvPeriodica();
}
stringBuilder.append("<td style='border:1px solid black'>");
stringBuilder.append(grupoAtv);
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
String strOr = atividadePeriodicaAux.getOrientacaoTecnica();
if (strOr != null) {
strOr = strOr.replaceAll("\n", "<br>");
} else {
strOr = " ";
}
stringBuilder.append(strOr);
stringBuilder.append("</td>");
stringBuilder.append("<td style='border:1px solid black'>");
StringBuilder strExecucao = new StringBuilder();
String finalizado = "";
Collection colExecucoes = execucaoAtividadePeriodicaService.findByIdAtividadePeriodica(atividadePeriodicaAux.getIdAtividadePeriodica());
if (colExecucoes != null) {
for (Iterator itExc = colExecucoes.iterator(); itExc.hasNext();) {
ExecucaoAtividadePeriodicaDTO execucaoAtividadePeriodicaDTO = (ExecucaoAtividadePeriodicaDTO) itExc.next();
strExecucao.append(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataexecucao") + " "
+ UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataExecucao(), WebUtil.getLanguage(request)) + " " + execucaoAtividadePeriodicaDTO.getHoraExecucao());
strExecucao.append("<br>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataregistro") + " "
+ UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataRegistro(), WebUtil.getLanguage(request)) + " " + execucaoAtividadePeriodicaDTO.getHoraRegistro());
strExecucao.append("<br>" + UtilI18N.internacionaliza(request, "colaborador.situacao") + ":<b><u>" + execucaoAtividadePeriodicaDTO.getSituacaoDescr() + "</u></b>");
strExecucao.append("<br>" + UtilI18N.internacionaliza(request, "gerenciaservico.detalhamentoexecucao") + ":<br> "
+ UtilStrings.nullToVazio(execucaoAtividadePeriodicaDTO.getDetalhamento()));
if (!execucaoAtividadePeriodicaDTO.getSituacao().equalsIgnoreCase("F")) {
finalizado = "N";
}
if (finalizado.equalsIgnoreCase("") && execucaoAtividadePeriodicaDTO.getSituacao().equalsIgnoreCase("F")) {
finalizado = "S";
}
}
}
if (strExecucao.toString().equalsIgnoreCase("")) {
stringBuilder.append(UtilI18N.internacionaliza(request, "gerenciaservico.semregistro"));
} else {
stringBuilder.append(strExecucao);
}
stringBuilder.append("</td>");
stringBuilder.append("</tr>");
if (finalizado.equalsIgnoreCase("S")) {
String aux = stringBuilder.toString().replaceAll("\\#CONTROLE\\#",
"<img src='" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/tick.png' border='0'/>");
stringBuilder.delete(0, stringBuilder.length());
stringBuilder.append(aux);
} else {
String aux = stringBuilder.toString().replaceAll("\\#CONTROLE\\#",
"<img src='" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/relogio.png' border='0'/>");
stringBuilder.delete(0, stringBuilder.length());
stringBuilder.append(aux);
}
}
}
}
}
stringBuilder.append("</table>");
document.getElementById("divAgendamentos").setInnerHTML(stringBuilder.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;
}
AtividadePeriodicaDTO atividadePeriodicaDTO = (AtividadePeriodicaDTO) document.getBean();
if (atividadePeriodicaDTO.getDuracaoEstimada() == null || atividadePeriodicaDTO.getDuracaoEstimada().intValue() == 0) {
document.alert(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.valida.duracao"));
return;
}
if (atividadePeriodicaDTO.getDataInicio().compareTo(UtilDatas.getDataAtual()) < 0){
document.alert(UtilI18N.internacionaliza(request, "solicitacaoliberacao.validacao.datainiciomenoratual"));
return;
}
Timestamp tsInicio = UtilDatas.convertStringToTimestamp(TipoDate.TIMESTAMP_WITH_SECONDS, "00/00/0000 " + atividadePeriodicaDTO.getHoraInicio() + ":00", WebUtil.getLanguage(request));
Timestamp tsAtual = UtilDatas.convertStringToTimestamp(TipoDate.TIMESTAMP_WITH_SECONDS, "00/00/0000 " + UtilDatas.getHoraAtual().toString() + ":00", WebUtil.getLanguage(request));
//Timestamp tsInicio = UtilDatas.strToTimestamp("00/00/0000 " + atividadePeriodicaDTO.getHoraInicio() + ":00");
//Timestamp tsAtual = UtilDatas.strToTimestamp("00/00/0000 " + UtilDatas.getHoraAtual().toString() + ":00");
if (atividadePeriodicaDTO.getDataInicio().compareTo(UtilDatas.getDataAtual()) == 0 && tsInicio.getTime()<tsAtual.getTime()){
document.alert(UtilI18N.internacionaliza(request, "solicitacaoliberacao.validacao.datainiciomenoratual"));
return;
}
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request));
GrupoAtvPeriodicaService grupoAtvPeriodicaService = (GrupoAtvPeriodicaService) ServiceLocator.getInstance().getService(GrupoAtvPeriodicaService.class, null);
SolicitacaoServicoDTO solicitacaoServicoDto = solicitacaoServicoService.restoreAll(atividadePeriodicaDTO.getIdSolicitacaoServico());
String orient = "";
StringBuilder ocorr = new StringBuilder();
if (!ocorr.toString().equalsIgnoreCase("")) {
ocorr.append("\n");
}
ocorr.append(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataagendamento") + " " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaDTO.getDataInicio(), WebUtil.getLanguage(request)));
if (!ocorr.toString().equalsIgnoreCase("")) {
ocorr.append("\n");
}
ocorr.append(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.horaagendamento") + " " + atividadePeriodicaDTO.getHoraInicio());
if (!ocorr.toString().equalsIgnoreCase("")) {
ocorr.append("\n");
}
ocorr.append(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.duracaoestimada") + " " + atividadePeriodicaDTO.getDuracaoEstimada());
GrupoAtvPeriodicaDTO grupoAtvPeriodicaDTO = new GrupoAtvPeriodicaDTO();
grupoAtvPeriodicaDTO.setIdGrupoAtvPeriodica(atividadePeriodicaDTO.getIdGrupoAtvPeriodica());
grupoAtvPeriodicaDTO = (GrupoAtvPeriodicaDTO) grupoAtvPeriodicaService.restore(grupoAtvPeriodicaDTO);
if (grupoAtvPeriodicaDTO != null) {
ocorr.append("\n" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.grupo") + ": " + grupoAtvPeriodicaDTO.getNomeGrupoAtvPeriodica());
}
if (atividadePeriodicaDTO.getOrientacaoTecnica() != null) {
orient = atividadePeriodicaDTO.getOrientacaoTecnica();
ocorr.append("\n" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.orientacaotecnica") + ": \n" + atividadePeriodicaDTO.getOrientacaoTecnica());
}
orient += "\n\n" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.descricaosolicitacaoincidente") + ": \n" + solicitacaoServicoDto.getDescricao();
atividadePeriodicaDTO.setTituloAtividade(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.solicitacaoincidente") + " " + atividadePeriodicaDTO.getIdSolicitacaoServico());
atividadePeriodicaDTO.setDescricao(solicitacaoServicoDto.getDescricao());
atividadePeriodicaDTO.setDataCriacao(UtilDatas.getDataAtual());
atividadePeriodicaDTO.setCriadoPor(usuario.getNomeUsuario());
atividadePeriodicaDTO.setIdContrato(solicitacaoServicoDto.getIdContrato());
atividadePeriodicaDTO.setOrientacaoTecnica(orient);
Collection colItens = new ArrayList();
ProgramacaoAtividadeDTO programacaoAtividadeDTO = new ProgramacaoAtividadeDTO();
programacaoAtividadeDTO.setTipoAgendamento("U");
programacaoAtividadeDTO.setDataInicio(atividadePeriodicaDTO.getDataInicio());
programacaoAtividadeDTO.setHoraInicio(atividadePeriodicaDTO.getHoraInicio());
programacaoAtividadeDTO.setHoraFim("00:00");
programacaoAtividadeDTO.setDuracaoEstimada(atividadePeriodicaDTO.getDuracaoEstimada());
programacaoAtividadeDTO.setRepeticao("N");
colItens.add(programacaoAtividadeDTO);
AtividadePeriodicaService atividadePeriodicaService = (AtividadePeriodicaService) ServiceLocator.getInstance().getService(AtividadePeriodicaService.class, null);
atividadePeriodicaDTO.setColItens(colItens);
atividadePeriodicaService.create(atividadePeriodicaDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
OcorrenciaSolicitacaoService ocorrenciaSolicitacaoService = (OcorrenciaSolicitacaoService) ServiceLocator.getInstance().getService(OcorrenciaSolicitacaoService.class, null);
OcorrenciaSolicitacaoDTO ocorrenciaSolicitacaoDTO = new OcorrenciaSolicitacaoDTO();
ocorrenciaSolicitacaoDTO.setIdSolicitacaoServico(atividadePeriodicaDTO.getIdSolicitacaoServico());
ocorrenciaSolicitacaoDTO.setDataregistro(UtilDatas.getDataAtual());
ocorrenciaSolicitacaoDTO.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual()));
ocorrenciaSolicitacaoDTO.setTempoGasto(0);
ocorrenciaSolicitacaoDTO.setDescricao(Enumerados.CategoriaOcorrencia.Agendamento.getDescricao());
ocorrenciaSolicitacaoDTO.setDataInicio(UtilDatas.getDataAtual());
ocorrenciaSolicitacaoDTO.setDataFim(UtilDatas.getDataAtual());
ocorrenciaSolicitacaoDTO.setInformacoesContato(UtilI18N.internacionaliza(request, "MSG013"));
ocorrenciaSolicitacaoDTO.setRegistradopor(usuario.getNomeUsuario());
ocorrenciaSolicitacaoDTO.setOcorrencia(ocorr.toString());
ocorrenciaSolicitacaoDTO.setOrigem(Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString());
ocorrenciaSolicitacaoDTO.setCategoria(Enumerados.CategoriaOcorrencia.Agendamento.getSigla());
ocorrenciaSolicitacaoDTO.setIdItemTrabalho(solicitacaoServicoDto.getIdTarefa());
ocorrenciaSolicitacaoService.create(ocorrenciaSolicitacaoDTO);
document.executeScript("parent.fecharModalAgendarAtividade();");
}
}