private async Task <bool> IsOwnerAccount(ModifyBalanceDto modifyBalance) { var userId = GetRole() == Roles.User ? GetUser() : modifyBalance.UserId; var isOwnner = await _accountService.IsOwnerAccountAsync(userId, modifyBalance.AccountId); return(!(GetRole() == Roles.User && !isOwnner || GetRole() == Roles.Admin && !isOwnner)); }
public async Task <IActionResult> RemoveBalanceAsync(int id, ModifyBalanceDto modifyBalance) { if (!await IsOwnerAccount(modifyBalance)) { return(Forbid()); } modifyBalance.AccountId = id; modifyBalance.Amount = -Math.Abs(modifyBalance.Amount); var result = await _accountTransactionService.ModifyBalanceAsync(modifyBalance); return(result ? (IActionResult)Ok() : NotFound()); }
public async Task <bool> ModifyBalanceAsync(ModifyBalanceDto modifyBalance) { var lastTotal = await BalanceManagementDbContext.AccountTransactions .Where(w => w.AccountId == modifyBalance.AccountId).OrderByDescending(m => m.Id) .Select(s => s.Total).FirstOrDefaultAsync(); var balance = modifyBalance.MapTo <AccountTransaction>(); balance.Total = lastTotal + modifyBalance.Amount; balance.TransferDate = DateTime.Now; await BalanceManagementDbContext.AccountTransactions.AddAsync(balance); await SaveChangesAsync(); await UpdateBalanceOfUser(modifyBalance.UserId); return(await Task.FromResult(true)); }