示例#1
0
        public IActionResult WithdrawRequest([FromBody] WalletWithdrawRequestModel request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            if (request.Amount <= 0)
            {
                return(BadRequest(ErrorResult.GetResult("Wrong amount")));
            }

            var result = walletService.WithdrawRequest(request, CurrentUser.Id);

            if (!result.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            return(Ok());
        }
示例#2
0
        public OperationResult WithdrawRequest(WalletWithdrawRequestModel request, Guid userId)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var wallet = context.Wallets.First(w => w.UserId == userId && w.Currency == request.Currency);
                if (wallet.Amount < request.Amount)
                {
                    throw new ApplicationException("Not enough funds");
                }

                // TODO wallet relation
                var transaction = new PaymentTransactions
                {
                    Id = Guid.NewGuid(),
                    Amount = request.Amount,
                    Type = PaymentTransactionType.Withdrawn,
                    DateCreated = DateTime.UtcNow,
                    DestAddress = request.BlockchainAddress,
                    Status = PaymentTransactionStatus.New
                };

                context.Add(transaction);
            }));
        }