Пример #1
0
        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));
        }
Пример #2
0
        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());
        }
Пример #3
0
        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));
        }