package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import br.com.centralit.citcorpore.bean.NotificacaoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoGrupoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoServicoDTO;
import br.com.centralit.citcorpore.bean.NotificacaoUsuarioDTO;
import br.com.centralit.citcorpore.integracao.NotificacaoDao;
import br.com.centralit.citcorpore.integracao.NotificacaoGrupoDao;
import br.com.centralit.citcorpore.integracao.NotificacaoServicoDao;
import br.com.centralit.citcorpore.integracao.NotificacaoUsuarioDao;
import br.com.citframework.dto.IDto;
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;
public class NotificacaoServiceEjb extends CrudServiceImpl implements NotificacaoService {
private NotificacaoDao dao;
@Override
protected NotificacaoDao getDao() {
if (dao == null) {
dao = new NotificacaoDao();
}
return dao;
}
public void deletarNotificacao(final IDto model) throws ServiceException, Exception {
final NotificacaoDTO notificacaoDto = (NotificacaoDTO) model;
final TransactionControler transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
this.validaUpdate(model);
transactionControler.start();
notificacaoDto.setDataFim(UtilDatas.getDataAtual());
this.getDao().update(model);
transactionControler.commit();
transactionControler.close();
} catch (final Exception e) {
this.rollbackTransaction(transactionControler, e);
}
}
@Override
public boolean consultarNotificacaoAtivos(final NotificacaoDTO obj) throws Exception {
return this.getDao().consultarNotificacaoAtivos(obj);
}
@Override
public void update(final NotificacaoDTO notificacaoDto, TransactionControler transactionControler) throws Exception {
final NotificacaoGrupoDao notificacaoGrupoDao = new NotificacaoGrupoDao();
final NotificacaoUsuarioDao notificacaoUsuarioDao = new NotificacaoUsuarioDao();
final NotificacaoServicoDao notificacaoServicoDao = new NotificacaoServicoDao();
if (transactionControler == null) {
transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB());
transactionControler.start();
}
final NotificacaoGrupoDTO notificacaoGrupoDto = new NotificacaoGrupoDTO();
final NotificacaoUsuarioDTO notificacaoUsuarioDto = new NotificacaoUsuarioDTO();
final NotificacaoServicoDTO notificacaoServicoDto = new NotificacaoServicoDTO();
this.getDao().setTransactionControler(transactionControler);
notificacaoGrupoDao.setTransactionControler(transactionControler);
notificacaoUsuarioDao.setTransactionControler(transactionControler);
this.getDao().update(notificacaoDto);
/* deletando as notifica��es para usuario */
notificacaoUsuarioDao.deleteByIdNotificacaoUsuario(notificacaoDto.getIdNotificacao());
if (notificacaoDto.getListaDeUsuario() != null) {
if (notificacaoDto.getIdNotificacao() != null && notificacaoDto.getIdNotificacao() != 0) {
notificacaoUsuarioDao.deleteByIdNotificacaoUsuario(notificacaoDto.getIdNotificacao());
for (final NotificacaoUsuarioDTO notificacaoUsuario : notificacaoDto.getListaDeUsuario()) {
notificacaoUsuarioDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoUsuarioDto.setIdUsuario(notificacaoUsuario.getIdUsuario());
notificacaoUsuarioDao.create(notificacaoUsuarioDto);
}
}
}
/* deletando as notifica��es para grupo */
notificacaoGrupoDao.deleteByIdNotificacaoGrupo(notificacaoDto.getIdNotificacao());
if (notificacaoDto.getListaDeGrupo() != null) {
if (notificacaoDto.getIdNotificacao() != null && notificacaoDto.getIdNotificacao() != 0) {
notificacaoGrupoDao.deleteByIdNotificacaoGrupo(notificacaoDto.getIdNotificacao());
for (final NotificacaoGrupoDTO notificacaoGrupo : notificacaoDto.getListaDeGrupo()) {
notificacaoGrupoDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoGrupoDto.setIdGrupo(notificacaoGrupo.getIdGrupo());
notificacaoGrupoDao.create(notificacaoGrupoDto);
}
}
}
/* deletando as notifica��es para servi�o */
notificacaoServicoDao.deleteByIdNotificacaoServico(notificacaoDto.getIdNotificacao());
if (notificacaoDto.getListaDeServico() != null) {
for (final NotificacaoServicoDTO notificacaoServico : notificacaoDto.getListaDeServico()) {
if (notificacaoServico.getIdServico() != null && notificacaoServico.getIdServico() != 0) {
notificacaoServicoDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoServicoDto.setIdServico(notificacaoServico.getIdServico());
notificacaoServicoDao.create(notificacaoServicoDto);
}
}
}
}
@Override
public NotificacaoDTO create(NotificacaoDTO notificacaoDto, final TransactionControler transactionControler) throws Exception {
final NotificacaoGrupoDao notificacaoGrupoDao = new NotificacaoGrupoDao();
final NotificacaoUsuarioDao notificacaoUsuarioDao = new NotificacaoUsuarioDao();
final NotificacaoServicoDao notificacaoServicoDao = new NotificacaoServicoDao();
final NotificacaoGrupoDTO notificacaoGrupoDto = new NotificacaoGrupoDTO();
final NotificacaoUsuarioDTO notificacaoUsuarioDto = new NotificacaoUsuarioDTO();
final NotificacaoServicoDTO notificacaoServicoDto = new NotificacaoServicoDTO();
this.getDao().setTransactionControler(transactionControler);
notificacaoGrupoDao.setTransactionControler(transactionControler);
notificacaoUsuarioDao.setTransactionControler(transactionControler);
notificacaoServicoDao.setTransactionControler(transactionControler);
notificacaoDto.setDataInicio(UtilDatas.getDataAtual());
notificacaoDto = (NotificacaoDTO) this.getDao().create(notificacaoDto);
if (notificacaoDto.getListaDeUsuario() != null) {
for (final NotificacaoUsuarioDTO notificacaoUsuario : notificacaoDto.getListaDeUsuario()) {
if (notificacaoUsuario.getIdUsuario() != null && notificacaoUsuario.getIdUsuario() != 0) {
notificacaoUsuarioDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoUsuarioDto.setIdUsuario(notificacaoUsuario.getIdUsuario());
notificacaoUsuarioDao.create(notificacaoUsuarioDto);
}
}
}
if (notificacaoDto.getListaDeGrupo() != null) {
for (final NotificacaoGrupoDTO notificacaoGrupo : notificacaoDto.getListaDeGrupo()) {
if (notificacaoGrupo.getIdGrupo() != null && notificacaoGrupo.getIdGrupo() != 0) {
notificacaoGrupoDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoGrupoDto.setIdGrupo(notificacaoGrupo.getIdGrupo());
notificacaoGrupoDao.create(notificacaoGrupoDto);
}
}
}
if (notificacaoDto.getListaDeServico() != null) {
for (final NotificacaoServicoDTO notificacaoServico : notificacaoDto.getListaDeServico()) {
if (notificacaoServico.getIdServico() != null && notificacaoServico.getIdServico() != 0) {
notificacaoServicoDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoServicoDto.setIdServico(notificacaoServico.getIdServico());
notificacaoServicoDao.create(notificacaoServicoDto);
}
}
}
return notificacaoDto;
}
@Override
public Collection<NotificacaoDTO> consultarNotificacaoAtivosOrigemServico(final Integer idContrato) throws Exception {
return this.getDao().consultarNotificacaoAtivosOrigemServico(idContrato);
}
@Override
public IDto create(final IDto model) throws ServiceException, br.com.citframework.excecao.LogicException {
final NotificacaoGrupoDao notificacaoGrupoDao = new NotificacaoGrupoDao();
final NotificacaoUsuarioDao notificacaoUsuarioDao = new NotificacaoUsuarioDao();
final NotificacaoServicoDao notificacaoServicoDao = new NotificacaoServicoDao();
NotificacaoDTO notificacaoDto = (NotificacaoDTO) model;
final NotificacaoGrupoDTO notificacaoGrupoDto = new NotificacaoGrupoDTO();
final NotificacaoUsuarioDTO notificacaoUsuarioDto = new NotificacaoUsuarioDTO();
final NotificacaoServicoDTO notificacaoServicoDTO = new NotificacaoServicoDTO();
final TransactionControler transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
this.getDao().setTransactionControler(transactionControler);
notificacaoGrupoDao.setTransactionControler(transactionControler);
notificacaoUsuarioDao.setTransactionControler(transactionControler);
notificacaoServicoDao.setTransactionControler(transactionControler);
transactionControler.start();
notificacaoDto.setDataInicio(UtilDatas.getDataAtual());
notificacaoDto = (NotificacaoDTO) this.getDao().create(notificacaoDto);
if (notificacaoDto.getListaDeUsuario() != null) {
for (final NotificacaoUsuarioDTO notificacaoUsuario : notificacaoDto.getListaDeUsuario()) {
if (notificacaoUsuario.getIdUsuario() != null && notificacaoUsuario.getIdUsuario() != 0) {
notificacaoUsuarioDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoUsuarioDto.setIdUsuario(notificacaoUsuario.getIdUsuario());
notificacaoUsuarioDao.create(notificacaoUsuarioDto);
}
}
}
if (notificacaoDto.getListaDeGrupo() != null) {
for (final NotificacaoGrupoDTO notificacaoGrupo : notificacaoDto.getListaDeGrupo()) {
if (notificacaoGrupo.getIdGrupo() != null && notificacaoGrupo.getIdGrupo() != 0) {
notificacaoGrupoDto.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoGrupoDto.setIdGrupo(notificacaoGrupo.getIdGrupo());
notificacaoGrupoDao.create(notificacaoGrupoDto);
}
}
}
if (notificacaoDto.getListaDeServico() != null) {
for (final NotificacaoServicoDTO notificacaoServico : notificacaoDto.getListaDeServico()) {
if (notificacaoServico.getIdServico() != null && notificacaoServico.getIdServico() != 0) {
notificacaoServicoDTO.setIdNotificacao(notificacaoDto.getIdNotificacao());
notificacaoServicoDTO.setIdServico(notificacaoServico.getIdServico());
notificacaoServicoDao.create(notificacaoServicoDTO);
}
}
}
transactionControler.commit();
transactionControler.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(transactionControler, e);
}
return notificacaoDto;
}
@Override
public Collection<NotificacaoDTO> listaIdContrato(final Integer idContrato) throws Exception {
return this.getDao().listaIdContrato(idContrato);
}
@Override
public void updateNotNull(final IDto obj) throws Exception {
this.getDao().updateNotNull(obj);
}
}