Example #1
0
        public async Task <IActionResult> AlterarParcela(
            [FromQuery, SwaggerParameter("ID da parcela.", Required = true)] int idParcela,
            [FromBody, SwaggerParameter("Informações para alteração de uma parcela.", Required = true)] ParcelaViewModel model)
        {
            var entrada = new ParcelaEntrada(
                base.ObterIdUsuarioClaim(),
                model.Data.Value,
                model.Valor.Value,
                model.Observacao);

            return(new ApiResult(await _agendamentoServico.AlterarParcela(idParcela, entrada)));
        }
Example #2
0
        public void Alterar(ParcelaEntrada entrada)
        {
            if (entrada.Invalido)
            {
                return;
            }

            this.Data       = entrada.Data;
            this.Valor      = entrada.Valor;
            this.Observacao = entrada.Observacao;

            this.Agendamento?.AjustarNumeroParcelas();
        }
Example #3
0
        public Parcela(int idAgendamento, ParcelaEntrada entrada)
            : this()
        {
            if (entrada.Invalido)
            {
                return;
            }

            this.IdAgendamento = idAgendamento;
            this.Data          = entrada.Data;
            this.Valor         = entrada.Valor;
            this.Observacao    = entrada.Observacao;
        }
Example #4
0
        public async Task <ISaida> CadastrarParcela(int idAgendamento, ParcelaEntrada entrada)
        {
            this.NotificarSeMenorOuIgualA(idAgendamento, 0, AgendamentoMensagem.Id_Agendamento_Invalido);

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

            // Verifica se as informações para cadastro foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            var agendamento = await _agendamentoRepositorio.ObterPorId(idAgendamento);

            // Verifica se o agendamento existe
            this.NotificarSeNulo(agendamento, AgendamentoMensagem.Id_Agendamento_Nao_Existe);

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

            this
            // Verifica se o agendamento pertece ao usuário informado.
            .NotificarSeDiferentes(agendamento.IdUsuario, entrada.IdUsuario, ParcelaMensagem.Agendamento_Parcela_Nao_Pertence_Usuario);

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

            var parcela = new Parcela(idAgendamento, entrada);

            await _parcelaRepositorio.Inserir(parcela);

            agendamento.AjustarNumeroParcelas();

            await _uow.Commit();

            return(new Saida(true, new[] { ParcelaMensagem.Parcela_Cadastrada_Com_Sucesso }, new ParcelaSaida(parcela)));
        }
Example #5
0
        public async Task <ISaida> AlterarParcela(int idParcela, ParcelaEntrada entrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            var parcela = await _parcelaRepositorio.ObterPorId(idParcela);

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

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

            this
            // Verifica se a parcela pertece a um agendamento do usuário informado.
            .NotificarSeDiferentes(parcela.Agendamento.IdUsuario, entrada.IdUsuario, ParcelaMensagem.Agendamento_Parcela_Nao_Pertence_Usuario)
            // Verifica se a parcela está fechada (lançada ou descartada)
            .NotificarSeVerdadeiro(parcela.ObterStatus() == StatusParcela.Fechada, ParcelaMensagem.Parcela_Alterar_Ja_Fechada);

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

            parcela.Alterar(entrada);

            _parcelaRepositorio.Atualizar(parcela);

            await _uow.Commit();

            return(new Saida(true, new[] { ParcelaMensagem.Parcela_Alterada_Com_Sucesso }, new ParcelaSaida(parcela)));
        }