/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.negocio;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.NotificacaoDTO;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.service.CrudService;
/**
* Service de Pasta.
*
* @author valdoilo.damasceno
*/
/**
* @author Thays
*
*/
@SuppressWarnings("rawtypes")
public interface PastaService extends CrudService {
/**
* Lista Pasta e Subpastas conforme PERFIL DE ACESSO do Usu�rio LOGADO.
*
* @param usuario
* @return Collection<PastaDTO>
* @throws Exception
*/
public Collection<PastaDTO> listPastasESubpastas(UsuarioDTO usuario) throws Exception;
/**
* Lista Pasta e Subpastas.
*
* @param usuario
* @return Collection<PastaDTO>
* @throws Exception
*/
public Collection<PastaDTO> listPastasESubpastas() throws Exception;
/**
* Consulta Pastas Ativas. Pastas que n�o possuem dataFim.
*
* @return pastasAtivas
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public Collection<PastaDTO> consultarPastasAtivas() throws ServiceException, Exception;
/**
* Cria uma Nova Pasta no CITSmart.
*
* @param pastaBean
* @return PastaDTO
* @throws LogicException
* @throws ServiceException
* @author valdoilo.damasceno
*/
public PastaDTO create(PastaDTO pastaBean) throws LogicException, ServiceException;
/**
* Atualiza pasta.
*
* @param pastaBean
* @return
* @throws LogicException
* @throws ServiceException
*/
public void update(PastaDTO pastaBean) throws LogicException, ServiceException;
/**
* Exclui Pasta.
*
* @param pastaBean
* @return boolean
* @author valdoilo.damasceno
* @throws Exception
*/
public boolean excluirPasta(PastaDTO pastaBean) throws Exception;
/**
* Lista Pastas Ativas que n�o possuem pasta pai.
*
* @return listaPastas
* @throws ServiceException
* @throws Exception
* @author thays.araujo
*/
public Collection listPastaSuperiorSemPai() throws Exception;
/**
* Consulta Pastas que n�o possuam Pastas Filhas.
*
* @return listaPastas
* @throws ServiceException
* @throws Exception
* @author thays.araujo
*/
public Collection<PastaDTO> listSubPastaByPerfilAcessoUsuario(PastaDTO subPastas, UsuarioDTO usuario) throws Exception;
/**
* Busca somente pastas com perfil de acesso onde usuario logado tenha acesso... Funcionalidade #340
*
* @param usuario
* @param idgrupo
* @return
* @throws Exception
* @author thiago.cardoso
*/
public List<PastaDTO> listPastaByUsuario(UsuarioDTO usuario) throws Exception;
/**
* M�todo para verificar se caso exista uma pasta com o mesmo nome
*
* @author rodrigo.oliveira
* @param pastaDTO
* @return Se caso exista pasta com o mesmo nome retorna true
* @throws Exception
*/
public boolean verificaSeExistePasta(PastaDTO pastaDTO) throws Exception;
/**
* Verifica se Usu�rio possui acesso a pasta informada.
*
* @param pastaDto
* @param usuarioDto
* @return true - caso possua; false - se n�o possuir.
* @throws Exception
* @throws ServiceException
*/
public boolean verificarSeUsuarioPossuiAcessoPasta(PastaDTO pastaDto, UsuarioDTO usuarioDto) throws Exception;
/**
* Verifica se usu�rio possui acesso a pasta, considerando a sua hierarquia superior de pastas. Caso o usu�rio n�o possua acesso a alguma pasta superior, o usu�rio n�o possuir� acesso a subpasta
* informada.
*
* @param pastaDto
* @param usuarioDto
* @return true - se possuir acesso; false - se n�o possuir acesso.
* @throws ServiceException
* @throws Exception
*/
public boolean verificaPermissaoDeAcessoPasta(PastaDTO pastaDto, UsuarioDTO usuarioDto) throws ServiceException, Exception;
/**
* Retorna PastaDTO que da permiss�o para Pasta Informada.
*
* @param subPasta
* @return PastaDTO
* @throws ServiceException
* @throws LogicException
* @author Vadoilo Damasceno
*/
public PastaDTO obterHerancaDePermissao(PastaDTO subPasta) throws ServiceException, LogicException;
/**
* Retorna lista de subpastas
*
* @param pastaSuperior
* @return
* @throws Exception
* @author thays.araujo
*/
public Collection<PastaDTO> listSubPastas(PastaDTO pastaSuperior) throws Exception;
/**
* Cria Notifica��o
*
* @param pastaDto
* @param transactionControler
* @return
* @throws ServiceException
* @throws Exception
* @author Thays
*/
public NotificacaoDTO criarNotificacao(PastaDTO pastaDto, TransactionControler transactionControler) throws ServiceException, Exception;
/**
* Lista Pasta Pai.
*
* @return Collection<PastaDTO>
* @throws Exception
* @author Thays.araujo
*/
public Collection<PastaDTO> listPastaSuperiorFAQSemPai() throws Exception;
/**
* Lista SubPastas do Tipo FAQ.
*
* @param pasta
* @return Collection<PastaDTO>
* @throws Exception
* @author Thays
*/
public Collection<PastaDTO> listSubPastasFAQ(PastaDTO pasta) throws Exception;
/**
* Lista Pasta Pai.
*
* @return Collection<PastaDTO>
* @throws Exception
* @author Thays.araujo
*/
public Collection<PastaDTO> listPastaSuperiorErroConhecidoSemPai() throws Exception;
/**
* Lista SubPastas do Tipo Erro Conhecido.
*
* @param pasta
* @return Collection<PastaDTO>
* @throws Exception
* @author Thays
*/
public Collection<PastaDTO> listSubPastasErroConhecido(PastaDTO pasta) throws Exception;
/**
* Verifica se existe pasta pai e se ele herda.
* @param idPastaFilho
* @return
* @throws Exception
* @author mario.haysaki
*/
public PastaDTO idpastaPaiEHerdaDaPastaPai(Integer idPastaFilho) throws Exception;
}