public async Task <IActionResult> PurchaseCreditsAsync(string redirect, CreditPurchaseDto puchase) { var client = new HttpClient(); if (puchase != null && puchase.NumberOfCredits > 0) { var user = db.AspNetUsers.Where(i => i.Email == User.Identity.Name).FirstOrDefault(); puchase.UserID = user.UserName; var responsey = await client.PostAsJsonAsync <CreditPurchaseDto>($"http://localhost:800/Payments/PurchaseCredits", puchase).Result.Content.ReadAsStringAsync(); if (redirect.Equals("PaymentHistory")) { return(RedirectToAction("PaymentHistory")); } else { return(Redirect("/Home/Dashboard")); } } return(BadRequest()); }
public IActionResult PurchaseCredits([FromBody] CreditPurchaseDto purchaseDetails) { using (var db = new db()) { var constants = new ServiceConstants(); var payments = (from payment in db.payments where payment.UserId == purchaseDetails.UserID select payment).ToList(); if (payments == null) { return(NotFound("You have no enough topup to fund this purchase")); } PaymentsHelper helper = new PaymentsHelper(payments); if (helper.CanPurchaseNameSearch(purchaseDetails.NumberOfCredits)) { Payment payment = new Payment(); payment.UserId = purchaseDetails.UserID; payment.PaymentId = Guid.NewGuid().ToString(); payment.Date = DateTime.Now.ToString(); payment.Description = purchaseDetails.Service + " Credit Purchase"; if (purchaseDetails.Service.Equals(constants.NAMESEARCH)) { payment.AmountDr = helper.getTotalNameSearchPrice(purchaseDetails.NumberOfCredits); } if (purchaseDetails.Service.Equals(constants.PVTLIMITEDENTITY)) { payment.AmountDr = helper.getTotalPvtPrice(purchaseDetails.NumberOfCredits); } List <Credit> credits = new List <Credit>(); if (db.Insert(payment) == 1) { for (var i = 0; i < purchaseDetails.NumberOfCredits; i++) { Credit credit = new Credit(); credit.UserId = purchaseDetails.UserID; credit.CreditId = Guid.NewGuid().ToString(); credit.PaymentId = payment.PaymentId; credit.Service = purchaseDetails.Service; DateTime expDate = DateTime.Now.AddDays(30); credit.ExpiryDate = expDate.ToString(); if (db.Insert(credit) == 1) { credits.Add(credit); continue; } else { return(BadRequest(payment)); } } payments.Add(payment); CreditPurchaseResponseDto response = new CreditPurchaseResponseDto(); response.payment = payment; response.credits = credits; return(Ok(response)); } } } return(BadRequest("You have no enough topup to fund this purchase")); }