/** CentralIT - CITSmart. */
package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoMenuDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoSituacaoFaturaDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoSituacaoOSDTO;
import br.com.centralit.citcorpore.integracao.PerfilAcessoDao;
import br.com.centralit.citcorpore.integracao.PerfilAcessoGrupoDao;
import br.com.centralit.citcorpore.integracao.PerfilAcessoMenuDao;
import br.com.centralit.citcorpore.integracao.PerfilAcessoPastaDAO;
import br.com.centralit.citcorpore.integracao.PerfilAcessoSituacaoFaturaDao;
import br.com.centralit.citcorpore.integracao.PerfilAcessoSituacaoOSDao;
import br.com.centralit.citcorpore.integracao.PerfilAcessoUsuarioDAO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
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.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
/**
* EJB de PerfilAcesso.
*
* @author thays.araujo
*
*/
@SuppressWarnings("unchecked")
public class PerfilAcessoServiceEjb extends CrudServiceImpl implements PerfilAcessoService {
private PerfilAcessoDTO perfilAcessoBean;
private PerfilAcessoDao dao;
@Override
protected PerfilAcessoDao getDao() {
if (dao == null) {
dao = new PerfilAcessoDao();
}
return dao;
}
private Collection<PerfilAcessoMenuDTO> acessoMenuDto;
@Override
public void gerarGridPerfilAcesso(final DocumentHTML document, final Collection<PerfilAcessoDTO> perfisDeAcessoDaPasta) throws Exception {
final Collection<PerfilAcessoDTO> todosOsPerfisDeAcesso = this.getDao().consultarPerfisDeAcessoAtivos();
if (todosOsPerfisDeAcesso != null && !todosOsPerfisDeAcesso.isEmpty()) {
int count = 0;
document.executeScript("count = 0");
for (final PerfilAcessoDTO perfil : todosOsPerfisDeAcesso) {
count++;
document.executeScript("restoreRow()");
document.executeScript("seqSelecionada = " + count);
String perfilAcesso = perfil.getNomePerfilAcesso() != null ? perfil.getNomePerfilAcesso() : "";
final String aprovaBaseConhecimento = perfil.getAprovaBaseConhecimento() != null ? perfil.getAprovaBaseConhecimento() : "S";
if (perfilAcesso != null) {
perfilAcesso = perfilAcesso.replaceAll("'", "");
}
document.executeScript("setRestorePerfilAcesso('" + perfil.getIdPerfilAcesso() + "'," + "'" + br.com.citframework.util.WebUtil.codificaEnter(perfilAcesso) + "',"
+ "'" + br.com.citframework.util.WebUtil.codificaEnter(aprovaBaseConhecimento) + "')");
if (perfisDeAcessoDaPasta != null && !perfisDeAcessoDaPasta.isEmpty()) {
for (final PerfilAcessoDTO perfilAcessoPasta : perfisDeAcessoDaPasta) {
document.executeScript("atribuirChecked('" + perfilAcessoPasta.getIdPerfilAcesso() + "'," + "'"
+ br.com.citframework.util.WebUtil.codificaEnter(perfilAcessoPasta.getAprovaBaseConhecimento()) + "')");
}
}
}
document.executeScript("exibeGrid()");
} else {
document.executeScript("ocultaGrid()");
}
}
@Override
public Collection<PerfilAcessoDTO> consultarPerfisDeAcesso(final PastaDTO pastaBean) throws ServiceException, Exception {
if (pastaBean == null) {
return this.getDao().consultarPerfisDeAcessoAtivos();
} else {
return this.getDao().consultarPerfisDeAcessoAtivos(pastaBean);
}
}
@Override
public IDto create(final IDto model) throws ServiceException, LogicException {
this.setPerfilAcessoBean(model);
final TransactionControler transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
this.validaCreate(this.getPerfilAcessoBean());
this.getDao().setTransactionControler(transactionControler);
final PerfilAcessoMenuDao perfilAcessoMenuDao = new PerfilAcessoMenuDao();
final PerfilAcessoSituacaoOSDao perfilAcessoSituacaoOSDao = new PerfilAcessoSituacaoOSDao();
final PerfilAcessoSituacaoFaturaDao perfilAcessoSituacaoFaturaDao = new PerfilAcessoSituacaoFaturaDao();
perfilAcessoMenuDao.setTransactionControler(transactionControler);
perfilAcessoSituacaoOSDao.setTransactionControler(transactionControler);
perfilAcessoSituacaoFaturaDao.setTransactionControler(transactionControler);
transactionControler.start();
this.getPerfilAcessoBean().setDataInicio(UtilDatas.getDataAtual());
this.setPerfilAcessoBean(this.getDao().create(this.getPerfilAcessoBean()));
for (final PerfilAcessoMenuDTO dto : this.getPerfilAcessoBean().getAcessoMenus()) {
dto.setIdPerfilAcesso(this.getPerfilAcessoBean().getIdPerfilAcesso());
dto.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoMenuDao.create(dto);
}
if (this.getPerfilAcessoBean().getSituacaoos() != null) {
for (int i = 0; i < this.getPerfilAcessoBean().getSituacaoos().length; i++) {
final PerfilAcessoSituacaoOSDTO perfilAcessoSituacaoOSDTO = new PerfilAcessoSituacaoOSDTO();
perfilAcessoSituacaoOSDTO.setIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
perfilAcessoSituacaoOSDTO.setSituacaoOs(this.getPerfilAcessoBean().getSituacaoos()[i]);
perfilAcessoSituacaoOSDTO.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoSituacaoOSDao.create(perfilAcessoSituacaoOSDTO);
}
}
if (this.getPerfilAcessoBean().getSituacaoFatura() != null) {
for (int i = 0; i < this.getPerfilAcessoBean().getSituacaoFatura().length; i++) {
final PerfilAcessoSituacaoFaturaDTO perfilAcessoSituacaoFaturaDTO = new PerfilAcessoSituacaoFaturaDTO();
perfilAcessoSituacaoFaturaDTO.setIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
perfilAcessoSituacaoFaturaDTO.setSituacaoFatura(this.getPerfilAcessoBean().getSituacaoFatura()[i]);
perfilAcessoSituacaoFaturaDTO.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoSituacaoFaturaDao.create(perfilAcessoSituacaoFaturaDTO);
}
}
transactionControler.commit();
transactionControler.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(transactionControler, e);
}
return this.getPerfilAcessoBean();
}
@Override
public void update(final IDto model) throws ServiceException, LogicException {
this.setPerfilAcessoBean(model);
final PerfilAcessoMenuDao perfilAcessoMenuDao = new PerfilAcessoMenuDao();
final PerfilAcessoDao perfilAcessoDao = this.getDao();
final PerfilAcessoSituacaoOSDao perfilAcessoSituacaoOSDao = new PerfilAcessoSituacaoOSDao();
final PerfilAcessoSituacaoFaturaDao perfilAcessoSituacaoFaturaDao = new PerfilAcessoSituacaoFaturaDao();
final TransactionControler transactionControler = new TransactionControlerImpl(perfilAcessoDao.getAliasDB());
try {
this.validaCreate(this.getPerfilAcessoBean());
perfilAcessoDao.setTransactionControler(transactionControler);
perfilAcessoMenuDao.setTransactionControler(transactionControler);
perfilAcessoSituacaoOSDao.setTransactionControler(transactionControler);
perfilAcessoSituacaoFaturaDao.setTransactionControler(transactionControler);
transactionControler.start();
this.getPerfilAcessoBean().setDataInicio(UtilDatas.getDataAtual());
perfilAcessoDao.update(this.getPerfilAcessoBean());
final List<PerfilAcessoMenuDTO> perfisAcessoMenu = (List<PerfilAcessoMenuDTO>) perfilAcessoMenuDao.findByPerfilAcesso(this.getPerfilAcessoBean().getIdPerfilAcesso());
if (perfisAcessoMenu != null) {
for (final PerfilAcessoMenuDTO perfilAcessoMenu : perfisAcessoMenu) {
perfilAcessoMenuDao.delete(perfilAcessoMenu);
}
}
if (this.getPerfilAcessoBean().getAcessoMenus() != null) {
for (final PerfilAcessoMenuDTO dto : this.getPerfilAcessoBean().getAcessoMenus()) {
dto.setIdPerfilAcesso(this.getPerfilAcessoBean().getIdPerfilAcesso());
dto.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoMenuDao.create(dto);
}
}
perfilAcessoSituacaoOSDao.deleteByIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
if (this.getPerfilAcessoBean().getSituacaoos() != null) {
for (int i = 0; i < this.getPerfilAcessoBean().getSituacaoos().length; i++) {
final PerfilAcessoSituacaoOSDTO perfilAcessoSituacaoOSDTO = new PerfilAcessoSituacaoOSDTO();
perfilAcessoSituacaoOSDTO.setIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
perfilAcessoSituacaoOSDTO.setSituacaoOs(this.getPerfilAcessoBean().getSituacaoos()[i]);
perfilAcessoSituacaoOSDTO.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoSituacaoOSDao.create(perfilAcessoSituacaoOSDTO);
}
}
perfilAcessoSituacaoFaturaDao.deleteByIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
if (this.getPerfilAcessoBean().getSituacaoFatura() != null) {
for (int i = 0; i < this.getPerfilAcessoBean().getSituacaoFatura().length; i++) {
final PerfilAcessoSituacaoFaturaDTO perfilAcessoSituacaoFaturaDTO = new PerfilAcessoSituacaoFaturaDTO();
perfilAcessoSituacaoFaturaDTO.setIdPerfil(this.getPerfilAcessoBean().getIdPerfilAcesso());
perfilAcessoSituacaoFaturaDTO.setSituacaoFatura(this.getPerfilAcessoBean().getSituacaoFatura()[i]);
perfilAcessoSituacaoFaturaDTO.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoSituacaoFaturaDao.create(perfilAcessoSituacaoFaturaDTO);
}
}
transactionControler.commit();
transactionControler.close();
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(transactionControler, e);
}
}
@Override
public boolean excluirPerfilDeAcesso(final PerfilAcessoDTO perfilDeAcesso) throws Exception {
this.setPerfilAcessoBean(perfilDeAcesso);
final PerfilAcessoDao perfilAcessoDao = this.getDao();
final PerfilAcessoMenuDao perfilAcessoMenuDao = new PerfilAcessoMenuDao();
final PerfilAcessoPastaDAO perfilAcessoPastaDao = new PerfilAcessoPastaDAO();
final PerfilAcessoUsuarioDAO perfilAcessoUsuarioDao = new PerfilAcessoUsuarioDAO();
final PerfilAcessoGrupoDao perfilAcessoGrupoDao = new PerfilAcessoGrupoDao();
if (perfilAcessoGrupoDao.findByIdPerfil(perfilDeAcesso.getIdPerfilAcesso()) != null || perfilAcessoUsuarioDao.findByIdPerfil(perfilDeAcesso.getIdPerfilAcesso()) != null
|| perfilAcessoPastaDao.findByIdPerfil(perfilDeAcesso.getIdPerfilAcesso()) != null) {
return false;
} else {
final TransactionControler transaction = new TransactionControlerImpl(this.getDao().getAliasDB());
perfilAcessoDao.setTransactionControler(transaction);
perfilAcessoMenuDao.setTransactionControler(transaction);
try {
transaction.start();
this.getPerfilAcessoBean().setDataFim(UtilDatas.getDataAtual());
perfilAcessoDao.update(this.getPerfilAcessoBean());
perfilAcessoMenuDao.excluirPerfisAcessoMenu(this.getPerfilAcessoBean());
transaction.commit();
transaction.close();
return true;
} catch (final Exception e) {
e.printStackTrace();
this.rollbackTransaction(transaction, e);
return false;
}
}
}
/**
* Configura Bean de PerfilAcesso.
*
* @param baseItemConfiguracaoBean
* @author valdoilo.damasceno
*/
private void setPerfilAcessoBean(final IDto perfilAcessobean) {
perfilAcessoBean = (PerfilAcessoDTO) perfilAcessobean;
}
/**
* Retorna Bean de BaseItemConfiguracao.
*
* @return valor do atributo baseItemConfiguracaoBean.
* @author valdoilo.damasceno
*/
public PerfilAcessoDTO getPerfilAcessoBean() {
return perfilAcessoBean;
}
/**
* Retorna Service de AcessoMenuService.
*
* @return ValorService
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public PerfilAcessoMenuService getAcessoMenuService() throws ServiceException, Exception {
return (PerfilAcessoMenuService) ServiceLocator.getInstance().getService(PerfilAcessoMenuService.class, null);
}
/**
* @return valor do atributo perfisDeAcesso.
*/
public Collection<PerfilAcessoMenuDTO> getAcessoMenu() {
return acessoMenuDto;
}
/**
* Define valor do atributo perfisDeAcesso.
*
* @param perfisDeAcesso
*/
public void setAcessoMenu(final Collection<PerfilAcessoMenuDTO> acessoMenu) {
acessoMenuDto = acessoMenu;
}
@Override
public PerfilAcessoDTO listByName(final PerfilAcessoDTO obj) throws Exception {
try {
return this.getDao().listByName(obj);
} catch (final Exception e) {
throw new ServiceException(e);
}
}
@Override
public boolean verificarSePerfilAcessoExiste(final PerfilAcessoDTO perfilAcesso) throws PersistenceException {
return this.getDao().verificarSePerfilAcessoExiste(perfilAcesso);
}
@Override
public Collection<PerfilAcessoDTO> consultarPerfisDeAcessoAtivos() throws Exception {
return this.getDao().consultarPerfisDeAcessoAtivos();
}
@Override
public PerfilAcessoDTO findByIdPerfilAcesso(final PerfilAcessoDTO perfilAcessoDTO) throws Exception {
return this.getDao().findByIdPerfilAcesso(perfilAcessoDTO);
}
@Override
public String getAcessoCitsmartByUsuario(final Integer idUsuario) throws PersistenceException, ServiceException {
final String retorno = this.getDao().getAcessoCitsmartByUsuario(idUsuario);
if (retorno != null && !retorno.isEmpty()) {
return retorno;
} else {
return "N";
}
}
}