Esempio n. 1
0
        public async Task <IResult <HistoryModel> > History(FilterMovementModel filter)
        {
            try
            {
                var account = await _sharedService.AccountValidate(filter.Cpf, filter.Password);

                if (!account.Success)
                {
                    return(Result <HistoryModel> .BuildError(account.Messages).LoggerError());
                }

                var movements = await _movementRepository.GetAccountHistory(account.Model.Id, filter.StartDate, filter.EndDate);

                if (movements == null || !movements.Any())
                {
                    return(Result <HistoryModel> .BuildError("Você não possui movimentos na conta nesse período.").LoggerError());
                }

                return(Result <HistoryModel> .BuildSucess(BuildHistoryModel(account.Model, movements)));
            }
            catch (Exception error)
            {
                return(Result <HistoryModel> .BuildError("Erro ao obter histórico da conta, favor tente novamente!", error)
                       .LoggerError());
            }
        }
Esempio n. 2
0
        public async Task <IResult <DepositModel> > Deposit(DepositModel movementModel)
        {
            try
            {
                if (movementModel.Amount <= 0)
                {
                    return(Result <DepositModel> .BuildError("Favor inserir um valor válido.").LoggerError());
                }

                var account = await _sharedService.AccountValidate(movementModel.Cpf, movementModel.Password);

                if (!account.Success)
                {
                    return(Result <DepositModel> .BuildError(account.Messages).LoggerError());
                }

                var result = new Result <DepositModel>();
                var exist  = await _movementService.ExistDeposit(account.Model.Id);

                decimal bonus = 0;
                if (!exist)
                {
                    bonus = movementModel.Amount.GetPercentage(10);
                    result.AddMessage("Parábens você acabou de realizar seu primeiro depósito," +
                                      $" você recebeu 10% do valor a título de boas vindas!");
                }
                account.Model.Balance += (movementModel.Amount + bonus);
                await _movementService.CreateMovement(movementModel.Amount, MovementType.Deposit,
                                                      account.Model, account.Model.Balance, bonus : bonus);

                await _accountRepository.SaveAsync();

                return(result.AddSuccess(movementModel, "Depósito realizado com sucesso!"));
            }
            catch (Exception error)
            {
                return(Result <DepositModel> .BuildError("Erro ao realizar desosito, favor tente novamento", error)
                       .LoggerError());
            }
        }