public async Task Process(CreateTransactionRequest request, CreateTransactionResponse response, CancellationToken cancellationToken) { var budget = await _budgetPlannerService.GetBudgetPlanner(request.BudgetId, cancellationToken); response.Reference = budget.Reference; budget.LastTransactionId = response.Result.Id; await _budgetPlannerService.Save(budget, cancellationToken); }
public async Task <RetrieveBudgetPlannerResponse> Handle(RetrieveBudgetPlannerRequest request, CancellationToken cancellationToken) { Budget budget; if (request.BudgetPlannerId.HasValue) { budget = await _budgetPlannerService.GetBudgetPlanner(request.BudgetPlannerId.Value, cancellationToken); } else { budget = await _budgetPlannerService.GetBudgetPlanner(request.Reference, cancellationToken); } if (budget.AccountId == request.AccountId) { return(Response.Success <RetrieveBudgetPlannerResponse>(budget)); } return(Response.Failed <RetrieveBudgetPlannerResponse>()); }
public async Task <CreateTransactionResponse> Handle(CreateTransactionRequest request, CancellationToken cancellationToken) { var transaction = _mapperProvider.Map <CreateTransactionRequest, Transaction>(request); var budgetPlanner = await _budgetPlannerService.GetBudgetPlanner(transaction.BudgetId, cancellationToken); budgetPlanner.LastUpdated = SqlDateTime.MinValue.Value; var previousBalance = await _transactionProvider.GetBalance(transaction.BudgetId, cancellationToken, true); if (transaction.Id != default) { transaction = await _transactionService.SaveTransaction(transaction, cancellationToken); return(Response.Success <CreateTransactionResponse>(transaction)); } transaction = await _transactionService.SaveTransaction(transaction, cancellationToken, false); var transactionLedger = new TransactionLedger { Transaction = transaction, Amount = transaction.Type == Domains.Enumerations.TransactionType.Expense ? -transaction.Amount : transaction.Amount, PreviousBalance = previousBalance, NewBalance = transaction.Type == Domains.Enumerations.TransactionType.Expense ? previousBalance - transaction.Amount : previousBalance + transaction.Amount }; await _transactionLedgerService .SaveTransactionLedger(transactionLedger, true, cancellationToken); return(Response.Success <CreateTransactionResponse>(transaction)); }
private async Task <bool> BudgetPlannerExists(int budgetPlannerId, CancellationToken cancellationToken) { var budgetPlanner = await _budgetPlannerService.GetBudgetPlanner(budgetPlannerId, cancellationToken); return(budgetPlanner != null); }