Exemple #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)));
        }
Exemple #2
0
        public void Lancar(LancarParcelaEntrada lancarEntrada)
        {
            if (lancarEntrada.Invalido || lancarEntrada.IdParcela != this.Id)
            {
                return;
            }

            this.Lancada    = true;
            this.Valor      = lancarEntrada.Valor;
            this.Observacao = lancarEntrada.Observacao;
        }
Exemple #3
0
        public async Task <ISaida> LancarParcela([FromBody, SwaggerParameter("Informações de lançamento da parcela.", Required = true)] LancarParcelaViewModel model)
        {
            var lancarEntrada = new LancarParcelaEntrada(
                model.IdParcela.Value,
                model.Data.Value,
                model.Valor.Value,
                base.ObterIdUsuarioClaim(),
                model.Observacao);

            return(await _agendamentoServico.LancarParcela(lancarEntrada));
        }
Exemple #4
0
        public async Task <IActionResult> LancarParcela(
            [FromQuery, SwaggerParameter("ID da parcela.", Required = true)] int idParcela,
            [FromBody, SwaggerParameter("Informações de lançamento da parcela.", Required = true)] LancarParcelaViewModel model)
        {
            var entrada = new LancarParcelaEntrada(
                base.ObterIdUsuarioClaim(),
                model.Data.Value,
                model.Valor.Value,
                model.Observacao);

            return(new ApiResult(await _agendamentoServico.LancarParcela(idParcela, entrada)));
        }
Exemple #5
0
        public void Lancar(LancarParcelaEntrada entrada)
        {
            if (entrada.Invalido)
            {
                return;
            }

            this.Lancada        = true;
            this.Valor          = entrada.Valor;
            this.DataLancamento = entrada.Data;
            this.Observacao     = entrada.Observacao;

            this.Agendamento?.AjustarNumeroParcelas();
        }