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()); } }
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()); } }