package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import br.com.centralit.bpm.negocio.ItemTrabalho;
import br.com.centralit.citcorpore.bean.AprovacaoSolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.integracao.AprovacaoSolicitacaoServicoDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao;
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.util.UtilDatas;
import br.com.citframework.util.WebUtil;
@SuppressWarnings("rawtypes")
public class AprovacaoSolicitacaoServicoServiceEjb extends ComplemInfSolicitacaoServicoServiceEjb implements AprovacaoSolicitacaoServicoService {
private AprovacaoSolicitacaoServicoDao dao;
@Override
protected AprovacaoSolicitacaoServicoDao getDao() {
if (dao == null) {
dao = new AprovacaoSolicitacaoServicoDao();
}
return dao;
}
@Override
public Collection findByIdSolicitacaoServico(final Integer parm) throws Exception {
try {
return this.getDao().findByIdSolicitacaoServico(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public void deleteByIdSolicitacaoServico(final Integer parm) throws Exception {
try {
this.getDao().deleteByIdSolicitacaoServico(parm);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public IDto create(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
return null;
}
@Override
public void delete(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
}
@Override
public IDto deserializaObjeto(final String serialize) throws Exception {
AprovacaoSolicitacaoServicoDTO aprovacaoDto = null;
if (serialize != null) {
aprovacaoDto = (AprovacaoSolicitacaoServicoDTO) WebUtil.deserializeObject(AprovacaoSolicitacaoServicoDTO.class, serialize);
}
return aprovacaoDto;
}
@Override
public void update(final TransactionControler tc, final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
this.validaUpdate(solicitacaoServicoDto, model);
AprovacaoSolicitacaoServicoDTO aprovacaoDto = (AprovacaoSolicitacaoServicoDTO) model;
this.getDao().setTransactionControler(tc);
aprovacaoDto.setIdResponsavel(solicitacaoServicoDto.getUsuarioDto().getIdEmpregado());
aprovacaoDto.setDataHora(UtilDatas.getDataHoraAtual());
aprovacaoDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
aprovacaoDto.setIdTarefa(solicitacaoServicoDto.getIdTarefa());
aprovacaoDto = (AprovacaoSolicitacaoServicoDTO) this.getDao().create(aprovacaoDto);
solicitacaoServicoDto.setIdUltimaAprovacao(aprovacaoDto.getIdAprovacaoSolicitacaoServico());
final SolicitacaoServicoDao solicitacaoDao = new SolicitacaoServicoDao();
solicitacaoDao.setTransactionControler(tc);
solicitacaoDao.atualizaIdUltimaAprovacao(solicitacaoServicoDto);
solicitacaoServicoDto.setAprovacao(aprovacaoDto.getAprovacao());
}
public void validaAtualizacao(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
final AprovacaoSolicitacaoServicoDTO aprovacaoDto = (AprovacaoSolicitacaoServicoDTO) model;
if (aprovacaoDto.getAprovacao() == null || aprovacaoDto.getAprovacao().trim().length() == 0) {
throw new LogicException("Aprova��o n�o informada");
}
if (aprovacaoDto.getAprovacao().equalsIgnoreCase("N") && aprovacaoDto.getIdJustificativa() == null) {
throw new LogicException("Justificativa n�o informada");
}
}
@Override
public void validaCreate(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
this.validaAtualizacao(solicitacaoServicoDto, model);
}
@Override
public void validaDelete(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {}
@Override
public void validaUpdate(final SolicitacaoServicoDTO solicitacaoServicoDto, final IDto model) throws Exception {
this.validaAtualizacao(solicitacaoServicoDto, model);
}
@Override
public AprovacaoSolicitacaoServicoDTO findNaoAprovadaBySolicitacaoServico(final SolicitacaoServicoDTO solicitacaoServicoDto) {
return this.getDao().findNaoAprovadaBySolicitacaoServico(solicitacaoServicoDto);
}
@Override
public void preparaSolicitacaoParaAprovacao(final SolicitacaoServicoDTO solicitacaoDto, final ItemTrabalho itemTrabalho, final String aprovacao, final Integer idJustificativa,
final String observacoes) throws Exception {
final AprovacaoSolicitacaoServicoDTO aprovacaoDto = new AprovacaoSolicitacaoServicoDTO();
aprovacaoDto.setAprovacao(aprovacao);
if (aprovacao.equalsIgnoreCase("N")) {
aprovacaoDto.setIdJustificativa(idJustificativa);
aprovacaoDto.setComplementoJustificativa(observacoes);
}
solicitacaoDto.setInformacoesComplementares(aprovacaoDto);
solicitacaoDto.setAcaoFluxo(br.com.centralit.bpm.util.Enumerados.ACAO_EXECUTAR);
solicitacaoDto.setIdTarefa(itemTrabalho.getIdItemTrabalho());
}
}