Esempio n. 1
0
 public virtual void ExcluirCategoria(Categoria Categoria)
 {
     try
     {
         _CategoriaRepositorio.Deletar(c => c == Categoria);
         _CategoriaRepositorio.Commit();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Esempio n. 2
0
        public async Task <ISaida> ExcluirCategoria(int idCategoria, int idUsuario)
        {
            this.NotificarSeMenorOuIgualA(idCategoria, 0, CategoriaMensagem.Id_Categoria_Invalido);
            this.NotificarSeMenorOuIgualA(idUsuario, 0, Mensagem.Id_Usuario_Invalido);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            var categoria = await _categoriaRepositorio.ObterPorId(idCategoria);

            // Verifica se a categoria existe
            this.NotificarSeNulo(categoria, CategoriaMensagem.Id_Categoria_Nao_Existe);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se a categoria pertece ao usuário informado.
            this.NotificarSeDiferentes(categoria.IdUsuario, idUsuario, CategoriaMensagem.Categoria_Excluir_Nao_Pertence_Usuario);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verificar se a categoria tem filhas. Se for pai, obrigar a exclusão de todas as filhas primeiro
            this.NotificarSeVerdadeiro(categoria.Pai, CategoriaMensagem.Categoria_Pai_Nao_Pode_Ser_Excluida);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            _categoriaRepositorio.Deletar(categoria);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { CategoriaMensagem.Categoria_Excluida_Com_Sucesso }, new CategoriaSaida(categoria)));
        }