/**
*
*/
package br.com.centralit.citcorpore.ajaxForms;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
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.HTMLSelect;
import br.com.centralit.citcorpore.bean.GanttSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.TipoDemandaServico;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
/**
* @author valdoilo.damasceno
*
*/
@SuppressWarnings("rawtypes")
public class GanttSolicitacaoServico extends AjaxFormAction {
private UsuarioDTO usuarioDto;
private GanttSolicitacaoServicoDTO ganttSolicitacaoServicoBean;
@Override
public Class getBeanClass() {
return GanttSolicitacaoServicoDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.setUsuarioDto(WebUtil.getUsuario(request));
this.gerarComboTipoDemandaServico(document,request);
this.gerarComboGrupoSeguranca(document,request);
/*
* Retirado por Emauri - nao estava apresentando corretamente!
Collection<SolicitacaoServicoDTO> listaSolicitacaoServico = this.getSolicitacaoServicoService().listSolicitacaoServico(null, null, this.getUsuarioDto());
if (listaSolicitacaoServico != null && !listaSolicitacaoServico.isEmpty()) {
StringBuilder gantt = gerarGantt(listaSolicitacaoServico);
document.executeScript(gantt.toString());
} else {
document.executeScript("alert('Nenhum registro encontrado!')");
CITCorporeUtil.limparFormulario(document);
}
*/
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
}
/**
* Filtra GANTT de acordo com Tipo de Solicitacao e Grupo de Seguran�a selecionado.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author valdoilo
*/
public void filtrarGantt(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.setGanttSolicitacaoServicoBean((IDto) document.getBean());
if (this.getGanttSolicitacaoServicoBean().getDataInicio() == null){
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datainicio"));
return;
}
if (this.getGanttSolicitacaoServicoBean().getDataFim() == null){
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacao.datafim"));
return;
}
String tipoDemandaServico = new String();
if (this.getGanttSolicitacaoServicoBean().getTipoDemandaServico() != null && !this.getGanttSolicitacaoServicoBean().getTipoDemandaServico().trim().isEmpty()) {
if (this.getGanttSolicitacaoServicoBean().getTipoDemandaServico().equalsIgnoreCase("R")) {
tipoDemandaServico = TipoDemandaServico.REQUISICAO.getClassificacao();
}
if (this.getGanttSolicitacaoServicoBean().getTipoDemandaServico().equalsIgnoreCase("I")) {
tipoDemandaServico = TipoDemandaServico.INCIDENTE.getClassificacao();
}
if (this.getGanttSolicitacaoServicoBean().getTipoDemandaServico().equalsIgnoreCase("O")) {
tipoDemandaServico = TipoDemandaServico.OS.getClassificacao();
}
}
GrupoDTO grupoSeguranca = new GrupoDTO();
if (this.getGanttSolicitacaoServicoBean().getIdGruposSeguranca() != null && !this.getGanttSolicitacaoServicoBean().getIdGruposSeguranca().trim().isEmpty()) {
grupoSeguranca.setIdGrupo(Integer.parseInt(this.getGanttSolicitacaoServicoBean().getIdGruposSeguranca()));
}
Collection<SolicitacaoServicoDTO> listaSolicitacaoServico = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(this.getGanttSolicitacaoServicoBean().getDataFim());
calendar.add(GregorianCalendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
java.sql.Date sqlDate = new java.sql.Date(calendar.getTime().getTime());
this.getGanttSolicitacaoServicoBean().setDataFim(sqlDate);
listaSolicitacaoServico = this.getSolicitacaoServicoService().listSolicitacaoServico(tipoDemandaServico, grupoSeguranca, null, this.getGanttSolicitacaoServicoBean().getDataInicio(), this.getGanttSolicitacaoServicoBean().getDataFim(), this.getGanttSolicitacaoServicoBean().getSituacao());
if (listaSolicitacaoServico != null && !listaSolicitacaoServico.isEmpty()) {
StringBuilder gantt = gerarGantt(listaSolicitacaoServico, this.getGanttSolicitacaoServicoBean(), request);
document.executeScript(gantt.toString());
document.executeScript("ocultarInformacao();");
} else {
document.executeScript("setGantt('');");
document.executeScript("alert(i18n_message('MSG04'))");
}
}
/**
* Gera GANTT a partir da Lista de Solicita��es de Servi�o.
*
* @param listaSolicitacaoServico
* @return <code>StringBuilder</code>
* @author valdoilo
*/
private StringBuilder gerarGantt(Collection<SolicitacaoServicoDTO> listaSolicitacaoServico, GanttSolicitacaoServicoDTO ganttSolicitacaoServicoDTO, HttpServletRequest request) {
StringBuilder gantt = new StringBuilder();
gantt.append("$(function() {");
gantt.append("'use strict';");
gantt.append("$('.gantt').gantt({");
gantt.append("source: [");
for (SolicitacaoServicoDTO solicitacao : listaSolicitacaoServico) {
gantt.append("{");
if(solicitacao.getNomeTipoDemandaServico().equalsIgnoreCase("Requisi��o")){
gantt.append("name: '" + UtilI18N.internacionaliza(request, "requisicaoProduto.requisicao") + " " + solicitacao.getIdSolicitacaoServico() + "',");
} else if (solicitacao.getNomeTipoDemandaServico().equalsIgnoreCase("Incidente")) {
gantt.append("name: '" + UtilI18N.internacionaliza(request, "requisitosla.incidente") + " " + solicitacao.getIdSolicitacaoServico() + "',");
} else {
gantt.append("name: '" + solicitacao.getNomeTipoDemandaServico() + " " + solicitacao.getIdSolicitacaoServico() + "',");
}
if(solicitacao.getSituacao().equalsIgnoreCase("EmAndamento")){
gantt.append("desc: '" + UtilI18N.internacionaliza(request, "solicitacaoServico.situacao.EmAndamento") + "', ");
} else if(solicitacao.getSituacao().equalsIgnoreCase("Fechada")){
gantt.append("desc: '" + UtilI18N.internacionaliza(request, "solicitacaoServico.situacao.Fechada") + "', ");
} else if(solicitacao.getSituacao().equalsIgnoreCase("Resolvida")){
gantt.append("desc: '" + UtilI18N.internacionaliza(request, "solicitacaoServico.situacao.Resolvida") + "', ");
} else if(solicitacao.getSituacao().equalsIgnoreCase("Cancelada")){
gantt.append("desc: '" + UtilI18N.internacionaliza(request, "solicitacaoServico.situacao.Cancelada") + "', ");
} else{
gantt.append("desc: '" + solicitacao.getSituacao() + "', ");
}
gantt.append("values:[{ ");
Date date = new Date(solicitacao.getDataHoraSolicitacao().getTime());
Date dateFim = null;
String styleCustomClass = "ganttRed";
if (solicitacao.getDataHoraLimite() != null && solicitacao.getDataHoraLimite().after(UtilDatas.getDataHoraAtual())){
styleCustomClass = "ganttBlue";
}
if (solicitacao.getSituacao().equalsIgnoreCase(Enumerados.SituacaoSolicitacaoServico.Resolvida.getDescricao())){
dateFim = (solicitacao.getDataHoraFim() == null ? new Date() : solicitacao.getDataHoraFim());
styleCustomClass = "ganttBlue";
}else{
dateFim = new Date();
}
gantt.append("from: '/Date(" + date.getTime() + ")/',");
gantt.append("to: '/Date(" + dateFim.getTime() + ")/', ");
if(solicitacao.getNomeTipoDemandaServico().equalsIgnoreCase("Requisi��o")){
gantt.append("label: '" + UtilI18N.internacionaliza(request, "requisicaoProduto.requisicao") + " " + solicitacao.getIdSolicitacaoServico() + "',");
} else if (solicitacao.getNomeTipoDemandaServico().equalsIgnoreCase("Incidente")) {
gantt.append("label: '" + UtilI18N.internacionaliza(request, "requisitosla.incidente") + " " + solicitacao.getIdSolicitacaoServico() + "',");
} else {
gantt.append("label: '" + solicitacao.getNomeTipoDemandaServico() + " " + solicitacao.getIdSolicitacaoServico() + "',");
}
gantt.append("customClass: '" + styleCustomClass + "',");
gantt.append("}]");
gantt.append("},");
}
gantt.append("],");
gantt.append("navigate: 'scroll',");
gantt.append("scale: 'days',");
gantt.append("maxScale: 'months',");
gantt.append("minScale: 'days',");
gantt.append("itemsPerPage: 10,");
gantt.append("onItemClick: function(data) {");
gantt.append("},");
gantt.append("onAddClick: function(dt, rowId) {");
gantt.append("}");
gantt.append("});");
gantt.append("});");
return gantt;
}
/**
* Gera Combo de Pastas que n�o possuem SubPastas.
*
* Somente elas podem armazenar Base de Conhecimento.
*
* @param document
* @throws Exception
* @author valdoilo.damasceno
*/
public void gerarComboTipoDemandaServico(DocumentHTML document,HttpServletRequest request) throws Exception {
HTMLSelect comboTipoDemanda = (HTMLSelect) document.getSelectById("comboTipoDemanda");
comboTipoDemanda.removeAllOptions();
comboTipoDemanda.addOption("",UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboTipoDemanda.addOption(Enumerados.TipoDemandaServico.INCIDENTE.getClassificacao(), Enumerados.TipoDemandaServico.INCIDENTE.getCampo());
comboTipoDemanda.addOption(Enumerados.TipoDemandaServico.OS.getClassificacao(), Enumerados.TipoDemandaServico.OS.getCampo());
comboTipoDemanda.addOption(Enumerados.TipoDemandaServico.REQUISICAO.getClassificacao(), Enumerados.TipoDemandaServico.REQUISICAO.getCampo());
}
/**
* Gera combo de Grupos de Seguran�a.
*
* @param document
* @throws Exception
* @author valdoilo
*/
public void gerarComboGrupoSeguranca(DocumentHTML document,HttpServletRequest request) throws Exception {
HTMLSelect comboGrupoSeguranca = (HTMLSelect) document.getSelectById("comboGruposSeguranca");
comboGrupoSeguranca.removeAllOptions();
comboGrupoSeguranca.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
for (GrupoDTO grupoSeguranca : this.getGrupoService().listGruposServiceDesk()) {
if (grupoSeguranca.getNome() != null) {
comboGrupoSeguranca.addOption(grupoSeguranca.getIdGrupo().toString(), grupoSeguranca.getNome());
}
}
}
/**
* Retorna service de solicitacaoServico.
*
* @return SolicitacaoServicoService
* @throws ServiceException
* @throws Exception
* @author valdoilo
*/
private SolicitacaoServicoService getSolicitacaoServicoService() throws ServiceException, Exception {
return (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null);
}
/**
* Retorna service de GrupoSegurancaService.
*
* @return GrupoSegurancaService
* @throws ServiceException
* @throws Exception
* @author valdoilo
*/
private GrupoService getGrupoService() throws ServiceException, Exception {
return (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null);
}
/**
* @return valor do atributo usuarioDto.
*/
public UsuarioDTO getUsuarioDto() {
return usuarioDto;
}
/**
* Define valor do atributo usuarioDto.
*
* @param usuarioDto
*/
public void setUsuarioDto(UsuarioDTO usuarioDto) {
this.usuarioDto = usuarioDto;
}
/**
* @return valor do atributo ganttSolicitacaoServicoBean.
*/
public GanttSolicitacaoServicoDTO getGanttSolicitacaoServicoBean() {
return ganttSolicitacaoServicoBean;
}
/**
* Define valor do atributo ganttSolicitacaoServicoBean.
*
* @param ganttSolicitacaoServicoBean
*/
public void setGanttSolicitacaoServicoBean(IDto ganttSolicitacaoServicoBean) {
this.ganttSolicitacaoServicoBean = (GanttSolicitacaoServicoDTO) ganttSolicitacaoServicoBean;
}
}