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.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.RequisicaoLiberacaoDTO;
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.RequisicaoLiberacaoService;
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 AgendarAtividadeRequisicaoLiberacao 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;
}
AtividadePeriodicaDTO atividadePeriodicaDTO = (AtividadePeriodicaDTO)document.getBean();
HTMLForm form = document.getForm("form");
form.clear();
HTMLSelect idGrupoAtvPeriodica = (HTMLSelect) document.getSelectById("idGrupoAtvPeriodica");
GrupoAtvPeriodicaService grupoAtvPeriodicaService = (GrupoAtvPeriodicaService) ServiceLocator.getInstance().getService(GrupoAtvPeriodicaService.class, null);
Collection colGrupos = grupoAtvPeriodicaService.listGrupoAtividadePeriodicaAtiva();
idGrupoAtvPeriodica.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
idGrupoAtvPeriodica.addOptions(colGrupos, "idGrupoAtvPeriodica", "nomeGrupoAtvPeriodica", null);
form.setValues(atividadePeriodicaDTO);
if (atividadePeriodicaDTO.getIdRequisicaoLiberacao()== 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.findByIdRequisicaoMudanca(atividadePeriodicaDTO.getIdRequisicaoMudanca());
Collection colAgendamentos = atividadePeriodicaService.findByIdRequisicaoLiberacao(atividadePeriodicaDTO.getIdRequisicaoLiberacao());
String strBufferAgend = "<table width='100%'>";
strBufferAgend += "<tr>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b> </b>";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b>"+ UtilI18N.internacionaliza(request, "citcorpore.comum.criacao")+"</b>";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.datahoraAgendamento")+"</b>";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.grupo")+"</b>";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.orientacao")+"</b>";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.execucao")+"</b>";
strBufferAgend += "</td>";
strBufferAgend += "</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();
strBufferAgend += "<tr>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "#CONTROLE#";
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += UtilI18N.internacionaliza(request, "citcorpore.comum.data")+": " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaAux.getDataCriacao(), WebUtil.getLanguage(request));
strBufferAgend += "<br>" + UtilI18N.internacionaliza(request, "login.usuario")+ ": " + atividadePeriodicaAux.getCriadoPor();
strBufferAgend += "<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.codagendamento") + ": " + atividadePeriodicaAux.getIdAtividadePeriodica();
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += "<b><u>" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, programacaoAtividadeDTO.getDataInicio(), WebUtil.getLanguage(request)) + " " + programacaoAtividadeDTO.getHoraInicio() + "</u></b>";
strBufferAgend += "<br><br>" + UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.duracaoestimada") + ": " + programacaoAtividadeDTO.getDuracaoEstimada() + "min";
strBufferAgend += "</td>";
GrupoAtvPeriodicaDTO grupoAtvPeriodicaDTO = new GrupoAtvPeriodicaDTO();
grupoAtvPeriodicaDTO.setIdGrupoAtvPeriodica(atividadePeriodicaAux.getIdGrupoAtvPeriodica());
grupoAtvPeriodicaDTO = (GrupoAtvPeriodicaDTO) grupoAtvPeriodicaService.restore(grupoAtvPeriodicaDTO);
String grupoAtv = "--";
if (grupoAtvPeriodicaDTO != null){
grupoAtv = grupoAtvPeriodicaDTO.getNomeGrupoAtvPeriodica();
}
strBufferAgend += "<td style='border:1px solid black'>";
strBufferAgend += grupoAtv;
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
String strOr = atividadePeriodicaAux.getOrientacaoTecnica();
if (strOr != null){
strOr = strOr.replaceAll("\n", "<br>");
}else{
strOr = " ";
}
strBufferAgend += strOr;
strBufferAgend += "</td>";
strBufferAgend += "<td style='border:1px solid black'>";
String strExecucao = "";
String finalizado = "";
Collection colExecucoes = execucaoAtividadePeriodicaService.findByIdAtividadePeriodica(atividadePeriodicaAux.getIdAtividadePeriodica());
if (colExecucoes != null){
for (Iterator itExc = colExecucoes.iterator(); itExc.hasNext();){
ExecucaoAtividadePeriodicaDTO execucaoAtividadePeriodicaDTO = (ExecucaoAtividadePeriodicaDTO) itExc.next();
strExecucao += UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataexecucao")+ " " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataExecucao(), WebUtil.getLanguage(request)) + " " + execucaoAtividadePeriodicaDTO.getHoraExecucao();
strExecucao += "<br>"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataregistro")+ " " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataRegistro(), WebUtil.getLanguage(request)) + " " + execucaoAtividadePeriodicaDTO.getHoraRegistro();
strExecucao += "<br>"+ UtilI18N.internacionaliza(request, "colaborador.situacao") +":<b><u>" + execucaoAtividadePeriodicaDTO.getSituacaoDescr() + "</u></b>";
strExecucao += "<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.equalsIgnoreCase("")){
strBufferAgend += UtilI18N.internacionaliza(request, "gerenciaservico.semregistro");
}else{
strBufferAgend += strExecucao;
}
strBufferAgend += "</td>";
strBufferAgend += "</tr>";
if (finalizado.equalsIgnoreCase("S")){
strBufferAgend = strBufferAgend.replaceAll("\\#CONTROLE\\#", "<img src='" + Constantes.getValue("SERVER_ADDRESS") +
Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/tick.png' border='0'/>");
}else{
strBufferAgend = strBufferAgend.replaceAll("\\#CONTROLE\\#", "<img src='" + Constantes.getValue("SERVER_ADDRESS") +
Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/relogio.png' border='0'/>");
}
}
}
}
}
strBufferAgend += "</table>";
document.getElementById("divAgendamentos").setInnerHTML(strBufferAgend);
}
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;
}
RequisicaoLiberacaoService requisicaoLiberacaoService= (RequisicaoLiberacaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoService.class, WebUtil.getUsuarioSistema(request));
GrupoAtvPeriodicaService grupoAtvPeriodicaService = (GrupoAtvPeriodicaService) ServiceLocator.getInstance().getService(GrupoAtvPeriodicaService.class, null);
RequisicaoLiberacaoDTO requisicaoLiberacaoDTO = requisicaoLiberacaoService.restoreAll(atividadePeriodicaDTO.getIdRequisicaoLiberacao());
String orient = "";
String ocorr = "";
if (!ocorr.equalsIgnoreCase("")) ocorr += "\n";
ocorr += UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.dataagendamento") +" " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, atividadePeriodicaDTO.getDataInicio(), WebUtil.getLanguage(request));
if (!ocorr.equalsIgnoreCase("")) ocorr += "\n";
ocorr += UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.horaagendamento") + " " + atividadePeriodicaDTO.getHoraInicio();
if (!ocorr.equalsIgnoreCase("")) ocorr += "\n";
ocorr += 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 += "\n"+UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.grupo") + ": " + grupoAtvPeriodicaDTO.getNomeGrupoAtvPeriodica();
}
if (atividadePeriodicaDTO.getOrientacaoTecnica() != null){
orient = atividadePeriodicaDTO.getOrientacaoTecnica();
ocorr += "\n"+ UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.orientacaotecnica") +": \n" + atividadePeriodicaDTO.getOrientacaoTecnica();
}
orient += "\n\n"+ UtilI18N.internacionaliza(request, "requisicaoLiberacao.requisicaoLiberacao") +": \n" + requisicaoLiberacaoDTO.getDescricao();
atividadePeriodicaDTO.setTituloAtividade(UtilI18N.internacionaliza(request, "gerenciaservico.agendaratividade.solicitacaoliberacao") +" " + atividadePeriodicaDTO.getIdRequisicaoLiberacao());
atividadePeriodicaDTO.setDescricao(requisicaoLiberacaoDTO.getDescricao());
atividadePeriodicaDTO.setDataCriacao(UtilDatas.getDataAtual());
atividadePeriodicaDTO.setCriadoPor(usuario.getNomeUsuario());
//atividadePeriodicaDTO.setIdContrato(requisicaoMudancaDto.getIdContrato());
atividadePeriodicaDTO.setIdContrato(requisicaoLiberacaoDTO.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);
ocorrenciaSolicitacaoDTO.setOrigem(Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString());
ocorrenciaSolicitacaoDTO.setCategoria(Enumerados.CategoriaOcorrencia.Agendamento.getSigla());
ocorrenciaSolicitacaoDTO.setIdItemTrabalho(requisicaoLiberacaoDTO.getIdTarefa());
ocorrenciaSolicitacaoService.create(ocorrenciaSolicitacaoDTO);
document.executeScript("fechar();");
}
@Override
public Class getBeanClass() {
return AtividadePeriodicaDTO.class;
}
}