Example #1
0
        public async Task <ISaida> LancarParcela(LancarParcelaEntrada lancarEntrada)
        {
            // Verifica se as informações para o lançamento foram informadas corretamente
            if (lancarEntrada.Invalido)
            {
                return(new Saida(false, lancarEntrada.Mensagens, null));
            }

            var parcela = await _parcelaRepositorio.ObterPorId(lancarEntrada.IdParcela, true);

            // Verifica se a parcela existe
            this.NotificarSeNulo(parcela, ParcelaMensagem.Id_Parcela_Nao_Existe);

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

            // Verifica se a parcela pertece a um agendamento do usuário informado.
            this.NotificarSeDiferentes(parcela.Agendamento.IdUsuario, lancarEntrada.IdUsuario, ParcelaMensagem.Parcela_Lancar_Nao_Pertence_Usuario);

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

            // Verifica se a parcela já foi lançada ou descartada
            this.NotificarSeVerdadeiro(parcela.Lancada, ParcelaMensagem.Parcela_Lancar_Ja_Lancada);
            this.NotificarSeVerdadeiro(parcela.Descartada, ParcelaMensagem.Parcela_Lancar_Ja_Descartada);

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

            parcela.Lancar(lancarEntrada);

            _parcelaRepositorio.Atualizar(parcela);

            // Cadastro o lançamento
            var cadastrarEntrada = new CadastrarLancamentoEntrada(
                parcela.Agendamento.IdUsuario,
                parcela.Agendamento.IdConta.Value,
                parcela.Agendamento.IdCategoria,
                lancarEntrada.Data,
                lancarEntrada.Valor,
                parcela.Agendamento.IdPessoa,
                parcela.Id,
                lancarEntrada.Observacao);

            var lancamento = new Lancamento(cadastrarEntrada);

            await _lancamentoRepositorio.Inserir(lancamento);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { ParcelaMensagem.Parcela_Lancada_Com_Sucesso }, new ParcelaSaida(parcela)));
        }
        public async Task <ISaida> CadastrarLancamento([FromBody, SwaggerParameter("Informações de cadastro do lançamento.", Required = true)] CadastrarLancamentoViewModel model)
        {
            var cadastrarEntrada = new CadastrarLancamentoEntrada(
                base.ObterIdUsuarioClaim(),
                model.IdConta.Value,
                model.IdCategoria.Value,
                model.Data.Value,
                model.Valor.Value,
                model.IdPessoa,
                null,
                model.Observacao);

            return(await _lancamentoServico.CadastrarLancamento(cadastrarEntrada));
        }
Example #3
0
        public Lancamento(CadastrarLancamentoEntrada cadastrarEntrada)
            : this()
        {
            if (cadastrarEntrada.Invalido)
            {
                return;
            }

            this.IdUsuario   = cadastrarEntrada.IdUsuario;
            this.IdConta     = cadastrarEntrada.IdConta;
            this.IdCategoria = cadastrarEntrada.IdCategoria;
            this.IdParcela   = cadastrarEntrada.IdParcela;
            this.Data        = cadastrarEntrada.Data;
            this.Valor       = cadastrarEntrada.Valor;
            this.IdPessoa    = cadastrarEntrada.IdPessoa;
            this.Observacao  = cadastrarEntrada.Observacao;
        }
        public async Task <ISaida> CadastrarLancamento(CadastrarLancamentoEntrada cadastroEntrada)
        {
            // Verifica se as informações para cadastro foram informadas corretamente
            if (cadastroEntrada.Invalido)
            {
                return(new Saida(false, cadastroEntrada.Mensagens, null));
            }

            // Verifica se a categoria existe a partir do ID informado.
            this.NotificarSeFalso(await _categoriaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdCategoria), CategoriaMensagem.Id_Categoria_Nao_Existe);

            // Verifica se a conta existe a partir do ID informado.
            this.NotificarSeFalso(await _contaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdConta), ContaMensagem.Id_Conta_Nao_Existe);

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

            // Verifica se a parcela existe a partir do ID informado.
            if (cadastroEntrada.IdParcela.HasValue)
            {
                this.NotificarSeFalso(await _parcelaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdParcela.Value), ParcelaMensagem.Id_Parcela_Nao_Existe);
            }

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

            var lancamento = new Lancamento(cadastroEntrada);

            await _lancamentoRepositorio.Inserir(lancamento);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { LancamentoMensagem.Lancamento_Cadastrado_Com_Sucesso }, new LancamentoSaida(await _lancamentoRepositorio.ObterPorId(lancamento.Id))));
        }