コード例 #1
0
        public async Task <ActionResult <MessageModel> > Withdraw(ChargeAccountRequestModel requestModel)
        {
            var    currentUser = HttpContext.User;
            string username    = currentUser.Claims.FirstOrDefault(currentUser => currentUser.Type == "Username").Value;

            return(await _chargeAccService.Withdraw(requestModel, currentUser, username));
        }
コード例 #2
0
        public async Task <ActionResult <MessageModel> > Withdraw(string cardNumber, string CVV, DateTime expireDate, ClaimsPrincipal currentUser, string username, decimal amount, string reciever, /*ITransactionService _transactionService*/ IChargeAccountsService _chargeAccService)
        {
            var userAuthenticate = await dbContext.Users.FirstOrDefaultAsync(x => x.Username == username);

            ChargeAccount bankAccountsExists = null;
            Card          cardsExists        = null;

            if (currentUser.HasClaim(c => c.Type == "Roles"))
            {
                if (userAuthenticate != null)
                {
                    try
                    {
                        cardsExists = await dbContext.Cards.FirstOrDefaultAsync(x => x.CardNumber == cardNumber);

                        if (_BCrypt.AuthenticateDebitCardCVV(CVV, cardsExists))
                        {
                            if (cardsExists == null)
                            {
                                responseMessage.Message = "Debit Card not found";
                                return(StatusCode(404, responseMessage));
                            }

                            bankAccountsExists = await dbContext.ChargeAccounts.FirstOrDefaultAsync(x => x.Card == cardsExists);
                        }
                        else
                        {
                            responseMessage.Message = "Invalid Credentials";
                            return(StatusCode(400, responseMessage));
                        }
                    }
                    catch (NullReferenceException)
                    {
                        responseMessage.Message = "Debit Card not found";
                        return(StatusCode(404, responseMessage));
                    }
                }
                else
                {
                    responseMessage.Message = "User not found!";
                    return(StatusCode(404, responseMessage));
                }

                if (bankAccountsExists != null)
                {
                    try
                    {
                        if (cardsExists.CardExpirationDate < DateTime.Now)
                        {
                            responseMessage.Message = "Debit Card is expired";
                            return(StatusCode(406, responseMessage));
                        }
                        ChargeAccountRequestModel requestModel = new ChargeAccountRequestModel();
                        requestModel.ChargeAccount = bankAccountsExists;

                        requestModel.Amount   = amount;
                        requestModel.Reciever = reciever;
                        await _chargeAccService.Withdraw(requestModel, currentUser, username);

                        responseMessage.Message = "Withdraw successfull";
                        return(StatusCode(200, responseMessage));
                    }
                    catch (NullReferenceException)
                    {
                        responseMessage.Message = "Bank Account not found";
                        return(StatusCode(404, responseMessage));
                    }
                }
                else if (bankAccountsExists == null)
                {
                    responseMessage.Message = "Bank Account not found";
                    return(StatusCode(404, responseMessage));
                }
            }

            responseMessage.Message = "You are not autorized to do such actions!";
            return(StatusCode(403, responseMessage));
        }