public async Task <ActionResult <MessageModel> > Purchase(ChargeAccountRequestModel requestModel) { var currentUser = HttpContext.User; string username = currentUser.Claims.FirstOrDefault(currentUser => currentUser.Type == "Username").Value; return(await _chargeAccService.SimulatePurchase(requestModel, currentUser, username)); }
public async Task <ActionResult <MessageModel> > SimulatePurchase(string cardNumber, string CVV, DateTime expireDate, string product, ClaimsPrincipal currentUser, string username, decimal amount, string reciever, 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.Product = product; requestModel.Amount = amount; requestModel.Reciever = reciever; await _chargeAccService.SimulatePurchase(requestModel, currentUser, username); responseMessage.Message = "Purchase 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)); }