/// <inheritdoc />
        public async Task DeleteTransaction(int id, int sessionUserId)
        {
            var transaction = await _transactionsRepository.GetTransaction(id);

            if (transaction == null)
            {
                throw new BusinessException("The transaction does not exist", ErrorStatus.DataNotFound);
            }
            if (transaction.UserId != sessionUserId)
            {
                throw new BusinessException("No permissions to perform this action", ErrorStatus.AccessDenied);
            }

            var user = await _userRepository.GetUser(sessionUserId);

            if (user == null)
            {
                throw new BusinessException("The user does not exist", ErrorStatus.DataNotFound);
            }

            var value = transaction.Quantity * transaction.Price;

            user.Budget += value;
            await _userRepository.Save();

            _transactionsRepository.Remove(transaction);
            var saveTransactionTask = _transactionsRepository.Save();
            var clearCacheTask      = _transactionsRepository.ClearTransactionsCache(sessionUserId);

            await Task.WhenAll(saveTransactionTask, clearCacheTask);
        }
예제 #2
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            return(PartialView(await _transactionRepository.GetTransaction(id)));
        }
예제 #3
0
        public async Task <IActionResult> GetTransaction(int tId)
        {
            var userId      = HttpContext.GetUserId();
            var transaction = await _repo.GetTransaction(userId, tId);

            if (transaction == null)
            {
                return(RedirectToAction("Error", "Home"));
            }

            var userClient = await _usersRepository.GetClient(userId, transaction.ToId);

            ViewData["client"] = userClient;
            return(View("TransactionDetails", transaction));
        }
 /// <inheritdoc />
 public async Task <UserTransaction> GetTransaction(int id)
 {
     return(await _baseRepository.GetTransaction(id));
 }
 public ActionResult GetOne(string settlementId, Guid transactionId)
 {
     return(Ok(_transactionsRepository.GetTransaction(settlementId, transactionId)));
 }
예제 #6
0
 public Transaction GetTransaction(int id)
 {
     return(_transactionsRepository.GetTransaction(id));
 }