package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
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.ContratoDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.SuspensaoReativacaoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.GrupoService;
import br.com.centralit.citcorpore.negocio.JustificativaSolicitacaoService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoSLA;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
public class SuspensaoReativacaoSolicitacao extends AjaxFormAction {
@SuppressWarnings("rawtypes")
@Override
public Class getBeanClass() {
return SuspensaoReativacaoSolicitacaoDTO.class;
}
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
preencherComboContratoeGrupoeJustificativa(document,request,response);
}
public void processarSolicitacoes(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
SuspensaoReativacaoSolicitacaoDTO suspensaoReativacaoSolicitacaoDTO = (SuspensaoReativacaoSolicitacaoDTO) document.getBean();
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request));
Collection<SolicitacaoServicoDTO> listaEmAndamento = null;
Collection<SolicitacaoServicoDTO> listaSuspensas = null;
if(suspensaoReativacaoSolicitacaoDTO.getTipoAcao().equals("suspender")){
listaEmAndamento = solicitacaoServicoService.listarSolicitacoesAbertasEmAndamentoPorGrupo(Integer.parseInt(suspensaoReativacaoSolicitacaoDTO.getIdGrupo()), "A");
}else{
listaSuspensas = solicitacaoServicoService.listarSolicitacoesMultadasSuspensasPorGrupo(Integer.parseInt(suspensaoReativacaoSolicitacaoDTO.getIdGrupo()), "M");
}
if(listaEmAndamento!=null){
for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaEmAndamento) {
SolicitacaoServicoDTO solicitacaoServicoDto = solicitacaoServicoService.restoreAll(solicitacaoServicoDTO.getIdSolicitacaoServico());
solicitacaoServicoDto.setIdJustificativa(suspensaoReativacaoSolicitacaoDTO.getIdJustificativa());
solicitacaoServicoDto.setComplementoJustificativa(suspensaoReativacaoSolicitacaoDTO.getSolicitante()+" - "+suspensaoReativacaoSolicitacaoDTO.getJustificativa());
if(solicitacaoServicoDto!=null){
if(suspensaoReativacaoSolicitacaoDTO.getTipoAcao().equals("suspender") && solicitacaoServicoDto.emAtendimento()){
solicitacaoServicoDto.setSituacaoSLA(SituacaoSLA.M.name());
solicitacaoServicoService.suspende(usuario, solicitacaoServicoDto);
}
}
}
document.executeScript("parent.refreshTelaGerenciamento();");
document.executeScript("parent.fecharModalSuspensaoReativacaoSolicitacao();");
document.alert(UtilI18N.internacionaliza(request, "suspensaoReativacaoSolicitacao.solicitacaoGrupoSuspensa"));
} else if(listaSuspensas!=null){
for (SolicitacaoServicoDTO solicitacaoServicoDTO : listaSuspensas) {
SolicitacaoServicoDTO solicitacaoServicoDto = solicitacaoServicoService.restoreAll(solicitacaoServicoDTO.getIdSolicitacaoServico());
solicitacaoServicoDto.setIdJustificativa(suspensaoReativacaoSolicitacaoDTO.getIdJustificativa());
solicitacaoServicoDto.setComplementoJustificativa(suspensaoReativacaoSolicitacaoDTO.getJustificativa());
if(solicitacaoServicoDto!=null){
if(suspensaoReativacaoSolicitacaoDTO.getTipoAcao().equals("reativar") && solicitacaoServicoDto.suspensa()){
//solicitacaoServicoDto.setSituacaoSLA("A");
solicitacaoServicoService.reativa(usuario, solicitacaoServicoDto);
}
}
}
document.executeScript("parent.refreshTelaGerenciamento();");
document.executeScript("parent.fecharModalSuspensaoReativacaoSolicitacao();");
document.alert(UtilI18N.internacionaliza(request, "suspensaoReativacaoSolicitacao.solicitacaoGrupoReativada"));
} else{
document.executeScript("parent.refreshTelaGerenciamento();");
document.executeScript("parent.fecharModalSuspensaoReativacaoSolicitacao();");
document.alert(UtilI18N.internacionaliza(request, "suspensaoReativacaoSolicitacao.naoHaSolicitacaoSeremReativadaSuspensa"));
}
}
public void preencherComboContratoeGrupoeJustificativa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null);
GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null);
JustificativaSolicitacaoService justificativaService = (JustificativaSolicitacaoService) ServiceLocator.getInstance().getService(JustificativaSolicitacaoService.class, null);
Collection<ContratoDTO> listaContrato = new ArrayList<ContratoDTO>();
Collection<GrupoDTO> listaGrupo = new ArrayList<GrupoDTO>();
listaContrato = contratoService.listAtivos();
listaGrupo = grupoService.listGruposPorUsuario(usuario.getIdUsuario());
Collection colJustificativas = justificativaService.listAtivasParaSuspensao();
HTMLSelect comboContrato = document.getSelectById("idContrato");
HTMLSelect comboGrupo = document.getSelectById("idGrupo");
HTMLSelect comboJustificativa = document.getSelectById("idJustificativa");
comboContrato.removeAllOptions();
comboGrupo.removeAllOptions();
comboJustificativa.removeAllOptions();
comboJustificativa.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboGrupo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
comboContrato.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if(listaContrato!=null){
for (ContratoDTO contratoDTO : listaContrato) {
comboContrato.addOption(contratoDTO.getIdContrato().toString(), StringEscapeUtils.escapeJavaScript(contratoDTO.getNumero() + " de "+UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, contratoDTO.getDataContrato(), WebUtil.getLanguage(request))));
}
}
if(listaGrupo!=null){
for (GrupoDTO grupoDTO : listaGrupo) {
comboGrupo.addOption(grupoDTO.getIdGrupo().toString(), StringEscapeUtils.escapeJavaScript(grupoDTO.getNome()));
}
}
if(colJustificativas!=null){
comboJustificativa.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null);
}
}
}