package br.com.centralit.citcorpore.negocio;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ResultadosEsperadosDTO;
import br.com.centralit.citcorpore.integracao.AcordoNivelServicoContratoDao;
import br.com.centralit.citcorpore.integracao.AcordoNivelServicoDao;
import br.com.centralit.citcorpore.integracao.ResultadosEsperadosDAO;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings({"rawtypes", "unchecked"})
public class AcordoNivelServicoContratoServiceEjb extends CrudServiceImpl implements AcordoNivelServicoContratoService {
private AcordoNivelServicoContratoDao dao;
@Override
protected AcordoNivelServicoContratoDao getDao() {
if (dao == null) {
dao = new AcordoNivelServicoContratoDao();
}
return dao;
}
@Override
public Collection findByIdContrato(final Integer parm) throws Exception {
try {
return this.getDao().findByIdContrato(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdContrato(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdContrato(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public boolean verificaDataContrato(final HashMap mapFields) throws Exception {
final String dtInicioSLA = (String) mapFields.get("DATAINICIO");
final Integer idContrato = Integer.parseInt((String) mapFields.get("SESSION.NUMERO_CONTRATO_EDICAO"));
Date dataInicioSLA = null;
try {
dataInicioSLA = new SimpleDateFormat("dd/MM/yyyy").parse(dtInicioSLA);
} catch (final ParseException e) {
e.printStackTrace();
}
ContratoDTO contratoDto = new ContratoDTO();
final ContratoServiceEjb contratoService = new ContratoServiceEjb();
Date dataInicioContrato = null;
Date dataFimContrato = null;
if (idContrato != null) {
contratoDto.setIdContrato(idContrato);
contratoDto = (ContratoDTO) contratoService.restore(contratoDto);
dataInicioContrato = contratoDto.getDataContrato();
dataFimContrato = contratoDto.getDataFimContrato();
} else {
return false;
}
if (dataFimContrato != null && dataInicioSLA != null && dataInicioContrato != null) {
final boolean resp = UtilDatas.dataEntreIntervalo(dataInicioSLA, dataInicioContrato, dataFimContrato);
if (resp) {
return true;
} else {
return false;
}
} else {
return false;
}
}
@Override
public Collection consultaResultadosEsperados(final ResultadosEsperadosDTO resultadosEsperadosDTO) throws Exception {
final ResultadosEsperadosDAO dao = new ResultadosEsperadosDAO();
final Collection colRetorno = new ArrayList();
try {
final Collection col = dao.findByIdServicoContrato(resultadosEsperadosDTO.getIdServicoContrato());
if (col != null && col.size() > 0) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final ResultadosEsperadosDTO resultados = (ResultadosEsperadosDTO) it.next();
if (resultados.getDeleted() != null) {
resultados.setDeleted(resultados.getDeleted().trim());
}
if (resultados.getDeleted() == null || resultados.getDeleted().equalsIgnoreCase("N") || resultados.getDeleted().trim().equals("")) {
if (!this.consultaAcordoNivelServicoAtivo(resultados)) {
colRetorno.add(resultados);
}
}
}
}
return colRetorno;
} catch (final Exception e) {
throw new ServiceException(e);
}
}
private boolean consultaAcordoNivelServicoAtivo(final ResultadosEsperadosDTO resultadosEsperadosDTO) throws ServiceException {
final AcordoNivelServicoDao dao = new AcordoNivelServicoDao();
AcordoNivelServicoDTO acordoNivelServicoContratoDTO = new AcordoNivelServicoDTO();
acordoNivelServicoContratoDTO.setIdAcordoNivelServico(resultadosEsperadosDTO.getIdAcordoNivelServico());
try {
acordoNivelServicoContratoDTO = (AcordoNivelServicoDTO) dao.restore(acordoNivelServicoContratoDTO);
final String situacao = acordoNivelServicoContratoDTO.getSituacao();
if (!situacao.equalsIgnoreCase("A")) {
return true;
} else {
return false;
}
} catch (final Exception e) {
throw new ServiceException(e);
}
}
}