package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Calendar;
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.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.AvaliacaoContratoDTO;
import br.com.centralit.citcorpore.bean.ClienteDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ContratosGruposDTO;
import br.com.centralit.citcorpore.bean.FornecedorDTO;
import br.com.centralit.citcorpore.bean.OpiniaoDTO;
import br.com.centralit.citcorpore.bean.PesquisaSatisfacaoDTO;
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.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService;
import br.com.centralit.citcorpore.negocio.AcordoServicoContratoService;
import br.com.centralit.citcorpore.negocio.ClienteService;
import br.com.centralit.citcorpore.negocio.ContratoService;
import br.com.centralit.citcorpore.negocio.ContratosGruposService;
import br.com.centralit.citcorpore.negocio.FornecedorService;
import br.com.centralit.citcorpore.negocio.OpiniaoService;
import br.com.centralit.citcorpore.negocio.PesquisaSatisfacaoService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.negocio.ServicoService;
import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService;
import br.com.centralit.citcorpore.negocio.TipoDemandaServicoService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.centralit.citgerencial.generateservices.incidentes.ControleGenerateSLAPorServicoContratoPeriodo;
import br.com.citframework.comparacao.ObjectSimpleComparator;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
@SuppressWarnings({"rawtypes", "unused", "unchecked"})
public class AvaliacaoContrato extends AjaxFormAction {
private Boolean acao = false;
@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;
}
ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null);
ClienteService clienteService = (ClienteService) ServiceLocator.getInstance().getService(ClienteService.class, null);
FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null);
ContratosGruposService contratosGruposService = (ContratosGruposService) ServiceLocator.getInstance().getService(ContratosGruposService.class, null);
String COLABORADORES_VINC_CONTRATOS = ParametroUtil.getValorParametroCitSmartHashMap(br.com.centralit.citcorpore.util.Enumerados.ParametroSistema.COLABORADORES_VINC_CONTRATOS, "N");
if (COLABORADORES_VINC_CONTRATOS == null) {
COLABORADORES_VINC_CONTRATOS = "N";
}
Collection colContratosColab = null;
if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) {
colContratosColab = contratosGruposService.findByIdEmpregado(usuario.getIdEmpregado());
}
Collection colContratos = contratoService.list();
Collection<ContratoDTO> listaContratos = new ArrayList<ContratoDTO>();
if (colContratos != null) {
if (colContratos.size() > 1) {
((HTMLSelect) document.getSelectById("idContrato")).addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
} else {
acao = true;
}
for (Iterator it = colContratos.iterator(); it.hasNext();) {
ContratoDTO contratoDto = (ContratoDTO) it.next();
if (contratoDto.getDeleted() == null || !contratoDto.getDeleted().equalsIgnoreCase("y")) {
if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) { // Se parametro de colaboradores por contrato ativo, entao filtra.
if (colContratosColab == null) {
continue;
}
if (!isContratoInList(contratoDto.getIdContrato(), colContratosColab)) {
continue;
}
}
ContratoDTO contratoDtoAux = new ContratoDTO();
String nomeCliente = "";
String nomeForn = "";
ClienteDTO clienteDto = new ClienteDTO();
clienteDto.setIdCliente(contratoDto.getIdCliente());
clienteDto = (ClienteDTO) clienteService.restore(clienteDto);
if (clienteDto != null) {
nomeCliente = clienteDto.getNomeRazaoSocial();
}
FornecedorDTO fornecedorDto = new FornecedorDTO();
fornecedorDto.setIdFornecedor(contratoDto.getIdFornecedor());
fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto);
if (fornecedorDto != null) {
nomeForn = fornecedorDto.getRazaoSocial();
}
contratoDtoAux.setIdContrato(contratoDto.getIdContrato());
if (contratoDto.getSituacao().equalsIgnoreCase("A")) {
String nomeContrato = "" + contratoDto.getNumero() + " de " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, contratoDto.getDataContrato(), WebUtil.getLanguage(request)) + " (" + nomeCliente + " - " + nomeForn + ")";
((HTMLSelect) document.getSelectById("idContrato")).addOption("" + contratoDto.getIdContrato(), nomeContrato);
contratoDto.setNome(nomeContrato);
listaContratos.add(contratoDto);
}
}
}
}
AvaliacaoContratoDTO avaliacaoContratoDTO = (AvaliacaoContratoDTO)document.getBean();
if (avaliacaoContratoDTO.getIdContrato() != null){
pesquisar(document, request, response);
document.getForm("form").setValues(avaliacaoContratoDTO);
}
}
private boolean isContratoInList(Integer idContrato, Collection colContratosColab) {
if (colContratosColab != null) {
for (Iterator it = colContratosColab.iterator(); it.hasNext();) {
ContratosGruposDTO contratosGruposDTO = (ContratosGruposDTO) it.next();
if (contratosGruposDTO.getIdContrato().intValue() == idContrato.intValue()) {
return true;
}
}
}
return false;
}
public void pesquisar(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;
}
String strTable = "";
AvaliacaoContratoDTO avaliacaoContratoDTO = (AvaliacaoContratoDTO)document.getBean();
OpiniaoService opiniaoService = (OpiniaoService) ServiceLocator.getInstance().getService(OpiniaoService.class, null);
Collection col = opiniaoService.findByTipoAndPeriodo(OpiniaoDTO.QUEIXA, avaliacaoContratoDTO.getIdContrato(), avaliacaoContratoDTO.getDataInicio(), avaliacaoContratoDTO.getDataFim());
if (col != null && col.size() > 0){
strTable += "<b><u>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.queixasregistradas") + "</u>:</b>";
strTable += "<table>";
for (Iterator it = col.iterator(); it.hasNext();){
OpiniaoDTO opiniaoDTO = (OpiniaoDTO)it.next();
strTable += "<tr>";
strTable += "<td>";
strTable += UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, opiniaoDTO.getData(), WebUtil.getLanguage(request));
strTable += "</td>";
strTable += "<td>";
strTable += " ";
strTable += "</td>";
strTable += "<td>";
strTable += opiniaoDTO.getObservacoes();
strTable += "</td>";
strTable += "</tr>";
}
strTable += "</table>";
}else{
strTable += "<b>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.naohaqueixas") + "</b><br>";
}
col = opiniaoService.findByTipoAndPeriodo(OpiniaoDTO.ELOGIO, avaliacaoContratoDTO.getIdContrato(), avaliacaoContratoDTO.getDataInicio(), avaliacaoContratoDTO.getDataFim());
if (col != null && col.size() > 0){
strTable += "<b><u>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.elogiosregistrados") + "</u>:</b>";
strTable += "<table>";
for (Iterator it = col.iterator(); it.hasNext();){
OpiniaoDTO opiniaoDTO = (OpiniaoDTO)it.next();
strTable += "<tr>";
strTable += "<td>";
strTable += UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, opiniaoDTO.getData(), WebUtil.getLanguage(request));
strTable += "</td>";
strTable += "<td>";
strTable += " ";
strTable += "</td>";
strTable += "<td>";
strTable += opiniaoDTO.getObservacoes();
strTable += "</td>";
strTable += "</tr>";
}
strTable += "</table>";
}else{
strTable += "<b>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.naohaelogios") + "</b><br>";
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(avaliacaoContratoDTO.getDataFim());
/*calendar.add(GregorianCalendar.DATE, 1);*/
java.sql.Date datafim = new java.sql.Date(calendar.getTime().getTime());
PesquisaSatisfacaoService pesquisaSatisfacaoService = (PesquisaSatisfacaoService) ServiceLocator.getInstance().getService(PesquisaSatisfacaoService.class, null);
PesquisaSatisfacaoDTO pesquisaSatisfacaoDTO = new PesquisaSatisfacaoDTO();
pesquisaSatisfacaoDTO.setIdContrato(avaliacaoContratoDTO.getIdContrato());
pesquisaSatisfacaoDTO.setNota(Enumerados.Nota.REGULAR.getNota());
pesquisaSatisfacaoDTO.setDataInicio(avaliacaoContratoDTO.getDataInicio());
pesquisaSatisfacaoDTO.setDataFim(datafim);
Collection colPesqRegular = pesquisaSatisfacaoService.relatorioPesquisaSatisfacao(pesquisaSatisfacaoDTO);
if (colPesqRegular != null && colPesqRegular.size() > 0){
strTable += "<b><u>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.pesqregularregistradas") + "</u>:</b>";
strTable += "<table>";
for (Iterator it = colPesqRegular.iterator(); it.hasNext();){
PesquisaSatisfacaoDTO pesquisaSatisfacaoAux = (PesquisaSatisfacaoDTO)it.next();
strTable += "<tr>";
strTable += "<td>";
strTable += pesquisaSatisfacaoAux.getIdSolicitacaoServico();
strTable += "</td>";
strTable += "<td>";
strTable += " ";
strTable += "</td>";
strTable += "<td>";
strTable += pesquisaSatisfacaoAux.getComentario();
strTable += "</td>";
strTable += "</tr>";
}
strTable += "</table>";
}else{
strTable += "<b>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.naohapesqsatisfacaoregular") + "</b><br>";
}
pesquisaSatisfacaoDTO.setNota(Enumerados.Nota.RUIM.getNota());
Collection colPesqRuim = pesquisaSatisfacaoService.relatorioPesquisaSatisfacao(pesquisaSatisfacaoDTO);
if (colPesqRuim != null && colPesqRuim.size() > 0){
strTable += "<b><u>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.pesqruimregistradas") + "</u>:</b>";
strTable += "<table>";
for (Iterator it = colPesqRuim.iterator(); it.hasNext();){
PesquisaSatisfacaoDTO pesquisaSatisfacaoAux = (PesquisaSatisfacaoDTO)it.next();
strTable += "<tr>";
strTable += "<td>";
strTable += pesquisaSatisfacaoAux.getIdSolicitacaoServico();
strTable += "</td>";
strTable += "<td>";
strTable += " ";
strTable += "</td>";
strTable += "<td>";
strTable += pesquisaSatisfacaoAux.getComentario();
strTable += "</td>";
strTable += "</tr>";
}
strTable += "</table>";
}else{
strTable += "<b>" + UtilI18N.internacionaliza(request, "avaliacaocontrato.naohapesqsatisfacaoruim") + "</b><br>";
}
request.setAttribute("info", strTable);
ServicoContratoService serviceContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.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(avaliacaoContratoDTO.getIdContrato());
List colFinal = new ArrayList();
ControleGenerateSLAPorServicoContratoPeriodo controleGenerateSLAPorServicoContratoPeriodo = new ControleGenerateSLAPorServicoContratoPeriodo();
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());
}
}
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 = controleGenerateSLAPorServicoContratoPeriodo.execute(servicoContratoAux.getIdServicoContrato(), avaliacaoContratoDTO.getDataInicio(), avaliacaoContratoDTO.getDataFim());
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);
Integer qtde = solicitacaoServicoService.getQuantidadeByIdServicoContrato(servicoContratoAux.getIdServicoContrato());
servicoContratoAux.setQuantidade(qtde);
colFinal.add(servicoContratoAux);
}
}
}
}
Collections.sort(colFinal, new ObjectSimpleComparator("getNomeServico", ObjectSimpleComparator.ASC));
request.setAttribute("listaServicos", colFinal);
}
@Override
public Class getBeanClass() {
return AvaliacaoContratoDTO.class;
}
}