Пример #1
0
        public async Task <ISaida> ExcluirConta(int idConta, int idUsuario)
        {
            this.NotificarSeMenorOuIgualA(idConta, 0, ContaMensagem.Id_Conta_Invalido);
            this.NotificarSeMenorOuIgualA(idUsuario, 0, Mensagem.Id_Usuario_Invalido);

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

            var conta = await _contaRepositorio.ObterPorId(idConta);

            // Verifica se a conta existe
            this.NotificarSeNulo(conta, ContaMensagem.Id_Conta_Nao_Existe);

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

            // Verifica se a conta pertece ao usuário informado.
            this.NotificarSeDiferentes(conta.IdUsuario, idUsuario, ContaMensagem.Conta_Excluir_Nao_Pertence_Usuario);

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

            _lancamentoRepositorio.DeletarPorConta(idConta);
            _agendamentoRepositorio.DeletarPorConta(idConta);

            _contaRepositorio.Deletar(conta);

            await _uow.Commit();

            return(new Saida(true, new[] { ContaMensagem.Conta_Excluida_Com_Sucesso }, new ContaSaida(conta)));
        }