package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
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.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoDTO;
import br.com.centralit.citcorpore.bean.TipoDemandaServicoDTO;
import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService;
import br.com.centralit.citcorpore.negocio.AcordoServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.TipoDemandaServicoService;
import br.com.centralit.citgerencial.generateservices.incidentes.ControleGenerateSLAPorServicoContrato;
import br.com.citframework.comparacao.ObjectSimpleComparator;
import br.com.citframework.service.ServiceLocator;
public class VisualizarDesempenhoServicosContrato extends AjaxFormAction {
@Override
public Class getBeanClass() {
return ServicoContratoDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO)document.getBean();
ServicoContratoService serviceContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null);
TipoDemandaServicoService tipoDemandaServicoService = (TipoDemandaServicoService) ServiceLocator.getInstance().getService(TipoDemandaServicoService.class, null);
AcordoNivelServicoService acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator.getInstance().getService(AcordoNivelServicoService.class, null);
AcordoServicoContratoService acordoServicoContratoService = (AcordoServicoContratoService) ServiceLocator.getInstance().getService(AcordoServicoContratoService.class, null);
Collection colServicosContrato = serviceContratoService.findByIdContrato(servicoContratoDTO.getIdContrato());
List colFinal = new ArrayList();
ControleGenerateSLAPorServicoContrato controleGenerateSLAPorServicoContrato = new ControleGenerateSLAPorServicoContrato();
if (colServicosContrato != null){
for(Iterator it = colServicosContrato.iterator(); it.hasNext();){
ServicoContratoDTO servicoContratoAux = (ServicoContratoDTO)it.next();
if (servicoContratoAux.getDeleted() != null && !servicoContratoAux.getDeleted().equalsIgnoreCase("N")){
continue;
}
if (servicoContratoAux.getIdServico() != null){
ServicoDTO servicoDto = new ServicoDTO();
servicoDto.setIdServico(servicoContratoAux.getIdServico());
servicoDto = (ServicoDTO) servicoService.restore(servicoDto);
if (servicoDto != null){
if (servicoDto.getDeleted() != null && !servicoDto.getDeleted().equalsIgnoreCase("N")){
continue;
}
servicoContratoAux.setTemSLA(false);
servicoContratoAux.setNomeServico(servicoDto.getNomeServico());
servicoContratoAux.setServicoDto(servicoDto);
servicoContratoAux.setSituacaoServico(servicoDto.getIdSituacaoServico());
if (servicoDto.getIdTipoDemandaServico() != null){
TipoDemandaServicoDTO tipoDemandaServicoDto = new TipoDemandaServicoDTO();
tipoDemandaServicoDto.setIdTipoDemandaServico(servicoDto.getIdTipoDemandaServico());
tipoDemandaServicoDto = (TipoDemandaServicoDTO) tipoDemandaServicoService.restore(tipoDemandaServicoDto);
if (tipoDemandaServicoDto != null){
servicoContratoAux.setNomeTipoDemandaServico(tipoDemandaServicoDto.getNomeTipoDemandaServico());
}
}
Collection col = acordoNivelServicoService.findByIdServicoContrato(servicoContratoAux.getIdServicoContrato());
Collection colVincs = acordoServicoContratoService.findByIdServicoContrato(servicoContratoAux.getIdServicoContrato());
if ((col != null && col.size() > 0) || (colVincs != null && colVincs.size() > 0)){
servicoContratoAux.setTemSLA(true);
}
List lst = controleGenerateSLAPorServicoContrato.execute(servicoContratoAux.getIdServicoContrato());
double qtdeDentroPrazo = 0;
double qtdeForaPrazo = 0;
if (lst != null && lst.size() > 0){
for (Iterator itSLA = lst.iterator(); itSLA.hasNext();){
Object[] objs = (Object[]) itSLA.next();
if (((String)objs[0]).indexOf("Fora") > -1 || ((String)objs[0]).indexOf("Out") > -1){
qtdeForaPrazo = (Double)objs[2];
}else{
qtdeDentroPrazo = (Double)objs[2];
}
}
}
double qtdeDentroPrazoPerc = qtdeDentroPrazo / (qtdeDentroPrazo + qtdeForaPrazo);
double qtdeForaPrazoPerc = qtdeForaPrazo / (qtdeDentroPrazo + qtdeForaPrazo);
servicoContratoAux.setDentroPrazo((qtdeDentroPrazoPerc * 100));
servicoContratoAux.setForaPrazo((qtdeForaPrazoPerc * 100));
servicoContratoAux.setQtdeDentroPrazo((int)qtdeDentroPrazo);
servicoContratoAux.setQtdeForaPrazo((int)qtdeForaPrazo);
colFinal.add(servicoContratoAux);
}
}
}
}
Collections.sort(colFinal, new ObjectSimpleComparator("getNomeServico", ObjectSimpleComparator.ASC));
request.setAttribute("listaServicos", colFinal);
}
}