public async Task <ISaida> AlterarLancamento(AlterarLancamentoEntrada alterarEntrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (alterarEntrada.Invalido)
            {
                return(new Saida(false, alterarEntrada.Mensagens, null));
            }

            var lancamento = await _lancamentoRepositorio.ObterPorId(alterarEntrada.IdLancamento, true);

            // Verifica se o lançamento existe
            this.NotificarSeNulo(lancamento, LancamentoMensagem.Id_Lancamento_Nao_Existe);

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

            // Verifica se o lançamento pertece ao usuário informado.
            this.NotificarSeDiferentes(lancamento.IdUsuario, alterarEntrada.IdUsuario, LancamentoMensagem.Lancamento_Alterar_Nao_Pertence_Usuario);

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

            // Verifica se a categoria existe a partir do ID informado.
            if (lancamento.IdCategoria != alterarEntrada.IdCategoria)
            {
                this.NotificarSeFalso(await _categoriaRepositorio.VerificarExistenciaPorId(alterarEntrada.IdUsuario, alterarEntrada.IdCategoria), CategoriaMensagem.Id_Categoria_Nao_Existe);
            }

            // Verifica se a conta existe a partir do ID informado.
            if (lancamento.IdConta != alterarEntrada.IdConta)
            {
                this.NotificarSeFalso(await _contaRepositorio.VerificarExistenciaPorId(alterarEntrada.IdUsuario, alterarEntrada.IdConta), ContaMensagem.Id_Conta_Nao_Existe);
            }

            // Verifica se a pessoa existe a partir do ID informado.
            if (lancamento.IdPessoa != alterarEntrada.IdPessoa && alterarEntrada.IdPessoa.HasValue)
            {
                this.NotificarSeFalso(await _pessoaRepositorio.VerificarExistenciaPorId(alterarEntrada.IdUsuario, alterarEntrada.IdPessoa.Value), PessoaMensagem.Id_Pessoa_Nao_Existe);
            }

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

            lancamento.Alterar(alterarEntrada);

            _lancamentoRepositorio.Atualizar(lancamento);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { LancamentoMensagem.Lancamento_Alterado_Com_Sucesso }, new LancamentoSaida(lancamento)));
        }
Esempio n. 2
0
        public void Alterar(AlterarLancamentoEntrada alterarEntrada)
        {
            if (alterarEntrada.Invalido || alterarEntrada.IdLancamento != this.Id)
            {
                return;
            }

            this.IdConta     = alterarEntrada.IdConta;
            this.IdCategoria = alterarEntrada.IdCategoria;
            this.Data        = alterarEntrada.Data;
            this.Valor       = alterarEntrada.Valor;
            this.IdPessoa    = alterarEntrada.IdPessoa;
            this.Observacao  = alterarEntrada.Observacao;
        }
        public async Task <ISaida> AlterarLancamento([FromBody, SwaggerParameter("Informações para alteração de um lançamento.", Required = true)] AlterarLancamentoViewModel model)
        {
            var alterarEntrada = new AlterarLancamentoEntrada(
                model.IdLancamento.Value,
                model.IdConta.Value,
                model.IdCategoria.Value,
                model.Data.Value,
                model.Valor.Value,
                base.ObterIdUsuarioClaim(),
                model.IdPessoa,
                model.Observacao);

            return(await _lancamentoServico.AlterarLancamento(alterarEntrada));
        }