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.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.comparacao.ObjectSimpleComparator;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilStrings;
public class ListaServicosContrato extends AjaxFormAction {
@SuppressWarnings("rawtypes")
@Override
public Class getBeanClass() {
return ServicoContratoDTO.class;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
String pathInfo = request.getRequestURI();
String ext = "";
String paginacao = "";
ext = getObjectExt(pathInfo);
ext = ext.replaceAll("#", "");
Integer totalPag = 1;
Integer pagAtual = 0;
Integer pagAtualAux = 0;
Integer idContrato;
String campoPesquisa="";
ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO)document.getBean();
if ("load".equalsIgnoreCase(ext)) {
if (request.getParameter("paginacao") != null) {
paginacao = UtilStrings.decodeCaracteresEspeciais(request.getParameter("paginacao"));
idContrato = Integer.parseInt(UtilStrings.decodeCaracteresEspeciais(request.getParameter("idContrato")));
servicoContratoDTO.setIdContrato(idContrato);
}
if (request.getParameter("paginacao") == null || request.getParameter("paginacao") == "") {
paginacao = "0";
}
if (request.getParameter("paginacao") == null) {
paginacao = "0";
}
if (request.getParameter("pesquisa") != null && request.getParameter("pesquisa") != "") {
campoPesquisa = UtilStrings.decodeCaracteresEspeciais(request.getParameter("pesquisa"));
idContrato = Integer.parseInt(UtilStrings.decodeCaracteresEspeciais(request.getParameter("idContrato")));
servicoContratoDTO.setIdContrato(idContrato);
}
}
Integer quantidadePaginator = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.QUANT_RETORNO_PESQUISA, "5"));
if(paginacao.equalsIgnoreCase(quantidadePaginator.toString())){
pagAtual = quantidadePaginator;
}else if(new Integer(paginacao) == 1){
pagAtual = (new Integer(request.getSession(true).getAttribute("pagAtual").toString()) + quantidadePaginator);
pagAtualAux = (new Integer(request.getSession(true).getAttribute("pagAtualAux").toString())+1);
if(pagAtual >= new Integer(request.getSession(true).getAttribute("totalItens").toString())){
pagAtual = new Integer(request.getSession(true).getAttribute("pagAtual").toString());
}
if(pagAtualAux >= new Integer(request.getSession(true).getAttribute("totalPag").toString())){
pagAtualAux = new Integer(request.getSession(true).getAttribute("totalPag").toString());
}
}else if(new Integer(paginacao) < 0){
pagAtual = (new Integer(request.getSession(true).getAttribute("pagAtual").toString()) - quantidadePaginator);
pagAtualAux = (new Integer(request.getSession(true).getAttribute("pagAtualAux").toString()) - 1);
if(pagAtual < 1){
pagAtual = 0;
pagAtualAux = 1;
}
}else if(new Integer(paginacao) == 0){
pagAtual = 0;
pagAtualAux = 1;
}else{
pagAtualAux = new Integer(request.getSession(true).getAttribute("totalPag").toString()) + 1;
Integer modulo = (new Integer(request.getSession(true).getAttribute("totalItens").toString()) % quantidadePaginator);
if(modulo.intValue() == quantidadePaginator.intValue() || modulo.intValue() == 0){
pagAtual = new Integer(paginacao) - quantidadePaginator;
}else{
pagAtual = new Integer(paginacao) - modulo;
}
if(pagAtualAux > new Integer(request.getSession(true).getAttribute("totalPag").toString())){
pagAtualAux = new Integer(request.getSession(true).getAttribute("totalPag").toString());
}
}
request.getSession(true).setAttribute("pagAtual", pagAtual);
request.getSession(true).setAttribute("pagAtualAux", pagAtualAux);
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.findByIdContratoPaginada(servicoContratoDTO, paginacao, pagAtual, pagAtualAux, totalPag, quantidadePaginator,campoPesquisa);
request.getSession(true).setAttribute("totalPag", servicoContratoDTO.getTotalPagina());
request.getSession(true).setAttribute("totalItens", (servicoContratoDTO.getTotalItens() ));
List colFinal = new ArrayList();
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);
}
colFinal.add(servicoContratoAux);
}
}
}
}
Collections.sort(colFinal, new ObjectSimpleComparator("getNomeServico", ObjectSimpleComparator.ASC));
request.setAttribute("listaServicos", colFinal);
}
public String getObjectExt(String path) {
String strResult = "";
for (int i = path.length() - 1; i >= 0; i--) {
if (path.charAt(i) == '.') {
return strResult;
} else {
strResult = path.charAt(i) + strResult;
}
}
return strResult;
}
}