Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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"));
        }