package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.AcordoServicoContratoDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.integracao.AcordoNivelServicoDao;
import br.com.centralit.citcorpore.integracao.AcordoServicoContratoDao;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings("rawtypes")
public class AcordoServicoContratoServiceEjb extends CrudServiceImpl implements AcordoServicoContratoService {
private AcordoServicoContratoDao dao;
@Override
protected AcordoServicoContratoDao getDao() {
if (dao == null) {
dao = new AcordoServicoContratoDao();
}
return dao;
}
@Override
public Collection findByIdAcordoNivelServico(final Integer parm) throws Exception {
try {
return this.getDao().findByIdAcordoNivelServico(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdAcordoNivelServicoAndContrato(final Integer idAcordoNivelServico, final Integer idContrato) throws Exception {
try {
final List<AcordoServicoContratoDTO> lista = this.getDao().findBylistByIdAcordoNivelServicoAndContrato(idAcordoNivelServico, idContrato);
if (lista != null) {
for (final AcordoServicoContratoDTO acordoServicoContratoDTO : lista) {
this.getDao().deleteByIdAcordoServicoContrato(acordoServicoContratoDTO.getIdAcordoServicoContrato());
}
}
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection findByIdServicoContrato(final Integer parm) throws Exception {
try {
return this.getDao().findByIdServicoContrato(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdServicoContrato(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdServicoContrato(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
final AcordoServicoContratoDTO acordoServicoContratoDTO = (AcordoServicoContratoDTO) model;
AcordoNivelServicoDTO acordoNivelServico = new AcordoNivelServicoDTO();
acordoNivelServico.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
final TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
final AcordoNivelServicoDao acordoNivelServicoDao = new AcordoNivelServicoDao();
try {
tc.start();
acordoNivelServicoDao.setTransactionControler(tc);
if (acordoServicoContratoDTO.getListaServicoContrato() != null) {
acordoNivelServico = (AcordoNivelServicoDTO) acordoNivelServicoDao.restore(acordoNivelServico);
for (final ServicoContratoDTO servicoContratoDTO : acordoServicoContratoDTO.getListaServicoContrato()) {
if (acordoServicoContratoDTO.getHabilitado() != null && acordoNivelServico.getTipo() != null && acordoNivelServico.getTipo().equalsIgnoreCase("T")) {
final List<AcordoServicoContratoDTO> acordoServicoContratoDTOs = this.getDao().listAtivoByIdServicoContrato(servicoContratoDTO.getIdServicoContrato(), "T");
if (acordoServicoContratoDTOs != null) {
for (final AcordoServicoContratoDTO acordo : acordoServicoContratoDTOs) {
acordo.setHabilitado("N");
this.getDao().updateNotNull(acordo);
}
}
}
final AcordoServicoContratoDTO obj = new AcordoServicoContratoDTO();
obj.setIdServicoContrato(servicoContratoDTO.getIdServicoContrato());
obj.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
if (acordoServicoContratoDTO.getHabilitado() != null && acordoNivelServico.getTipo() != null && acordoNivelServico.getTipo().equalsIgnoreCase("T")) {
obj.setHabilitado("S");
}
obj.setDataCriacao(UtilDatas.getDataAtual());
obj.setDataInicio(UtilDatas.getDataAtual());
super.create(obj);
}
}
tc.commit();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
tc.closeQuietly();
}
return acordoServicoContratoDTO;
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
final AcordoServicoContratoDTO acordoServicoContratoDTO = (AcordoServicoContratoDTO) model;
AcordoNivelServicoDTO acordoNivelServico = new AcordoNivelServicoDTO();
acordoNivelServico.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
final TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
final AcordoNivelServicoDao acordoNivelServicoDao = new AcordoNivelServicoDao();
try {
tc.start();
acordoNivelServicoDao.setTransactionControler(tc);
this.deleteByIdAcordoNivelServicoAndContrato(acordoServicoContratoDTO.getIdAcordoNivelServico(), acordoServicoContratoDTO.getIdContrato());
if (acordoServicoContratoDTO.getListaServicoContrato() != null) {
acordoNivelServico = (AcordoNivelServicoDTO) acordoNivelServicoDao.restore(acordoNivelServico);
for (final ServicoContratoDTO servicoContratoDTO : acordoServicoContratoDTO.getListaServicoContrato()) {
if (acordoServicoContratoDTO.getHabilitado() != null && acordoNivelServico.getTipo() != null && acordoNivelServico.getTipo().equalsIgnoreCase("T")) {
final List<AcordoServicoContratoDTO> acordoServicoContratoDTOs = this.getDao().listAtivoByIdServicoContrato(servicoContratoDTO.getIdServicoContrato(), "T");
if (acordoServicoContratoDTOs != null) {
for (final AcordoServicoContratoDTO acordo : acordoServicoContratoDTOs) {
acordo.setHabilitado("N");
this.getDao().updateNotNull(acordo);
}
}
}
final AcordoServicoContratoDTO obj = new AcordoServicoContratoDTO();
obj.setIdServicoContrato(servicoContratoDTO.getIdServicoContrato());
obj.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico());
if (acordoServicoContratoDTO.getHabilitado() != null && acordoNivelServico.getTipo() != null && acordoNivelServico.getTipo().equalsIgnoreCase("T")) {
obj.setHabilitado("S");
}
obj.setDataCriacao(UtilDatas.getDataAtual());
obj.setDataInicio(UtilDatas.getDataAtual());
super.create(obj);
}
}
tc.commit();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
tc.closeQuietly();
}
}
@Override
public AcordoServicoContratoDTO findAtivoByIdServicoContrato(final Integer idServicoContrato, final String tipo) throws Exception {
try {
return this.getDao().findAtivoByIdServicoContrato(idServicoContrato, tipo);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public boolean existeAcordoServicoContrato(final Integer idAcordoNivelServico, final Integer idContrato) throws Exception {
try {
return this.getDao().existeAcordoServicoContrato(idAcordoNivelServico, idContrato);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public Collection<AcordoServicoContratoDTO> findByIdAcordoNivelServicoIdServicoContrato(final Integer idAcordoNivelServico, final Integer idServicoContrato) throws Exception {
try {
return this.getDao().findByIdAcordoNivelServicoIdServicoContrato(idAcordoNivelServico, idServicoContrato);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void updateNotNull(final IDto obj) throws Exception {
final AcordoServicoContratoDTO acordoServicoContratoDTO = (AcordoServicoContratoDTO) obj;
try {
if (acordoServicoContratoDTO.getHabilitado().equalsIgnoreCase("S")) {
final List<AcordoServicoContratoDTO> lista = this.getDao().listAtivoByIdServicoContrato(acordoServicoContratoDTO.getIdAcordoServicoContrato(),
acordoServicoContratoDTO.getIdServicoContrato(), "T");
if (lista != null) {
for (final AcordoServicoContratoDTO acordo : lista) {
acordo.setHabilitado("N");
this.getDao().updateNotNull(acordo);
}
}
}
this.getDao().updateNotNull(obj);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public List<AcordoServicoContratoDTO> listAtivoByIdServicoContrato(final Integer idAcordoServicoContrato, final Integer idServicoContrato, final String tipo) throws Exception {
try {
return this.getDao().listAtivoByIdServicoContrato(idAcordoServicoContrato, idServicoContrato, tipo);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
}