// TODO - GenerateCreditCardPayment().
        public object GenerateCreditCardPayment(
            Models.Customer loggedInCustomer,
            ShippingInformation shippingInfo,
            Models.Address customerAddress,
            List <CartItem> cartItems,
            CreditCard creditCart)
        {
            try
            {
                SetKeys();

                decimal totalPrice = CalculateTotalPrice(cartItems, shippingInfo);

                Transaction transaction = new Transaction()
                {
                    Amount   = PriceConverter.ConvertDecimalPriceToPriceInCents(totalPrice),
                    Billing  = BillingFactory(loggedInCustomer, customerAddress),
                    Card     = CardFactory(creditCart),
                    Customer = CustomerFactory(loggedInCustomer),
                    Item     = ItemArrayFactory(cartItems),
                    Shipping = ShippingFactory(loggedInCustomer, shippingInfo, customerAddress)
                };

                transaction.Save();

                return(new { TransactionId = transaction.Id });
            }
            catch (Exception e)
            {
                return(new { Error = e.Message });
            }
        }
Esempio n. 2
0
        public IActionResult Index()
        {
            List <CartItem>            cartItems     = cartCookieManager.GetCookieData();
            List <ShippingInformation> shippingInfos = shippingInfoCookieManager.GetCookieData();

            if (cartItems.Count == 0 || shippingInfos.Count == 0)
            {
                return(RedirectToAction("Index", "Cart"));
            }

            ShippingInformation selectedShippingRate = shippingInfos.Find(s => s.IsSelected == true);

            if (selectedShippingRate.SelectedAddressId == 0)
            {
                return(RedirectToAction("Index", "Cart"));
            }

            foreach (var cartItem in cartItems)
            {
                cartItem.Product = productRepository.GetProduct(cartItem.Id);
            }

            ViewData["CartItems"]           = cartItems;
            ViewData["ShippingInformation"] = selectedShippingRate;
            ViewData["SelectedAddress"]     = addressRepository.GetAddress(selectedShippingRate.SelectedAddressId);

            return(View());
        }
Esempio n. 3
0
        public IActionResult Index([FromForm] CreditCard creditCard)
        {
            if (ModelState.IsValid)
            {
                List <CartItem> cartItems = cartCookieManager.GetCookieData();
                foreach (var cartItem in cartItems)
                {
                    cartItem.Product = productRepository.GetProduct(cartItem.Id);
                }

                Customer loggedInCustomer = customerSession.GetLoggedInCustomer();

                ShippingInformation selectedShippingRate =
                    shippingInfoCookieManager.GetCookieData()
                    .Find(s => s.IsSelected == true);
                Address selectedAddress = addressRepository.GetAddress(selectedShippingRate.SelectedAddressId);

                dynamic transactionResult =
                    pagarMeManager.GenerateCreditCardPayment(loggedInCustomer, selectedShippingRate, selectedAddress, cartItems, creditCard);

                // return new ContentResult{ Content = $"OK! Transaction ID = {transactionResult.TransactionId}" };
                return(new ContentResult {
                    Content = "OK!"
                });
            }

            return(Index());
        }
Esempio n. 4
0
        /// <summary>
        /// <see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/>
        /// </summary>
        /// <param name="shippingData"><see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/></param>
        /// <returns><see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/></returns>
        public List <Order> GetOrdersByShippingData(ShippingInformation shippingData)
        {
            //Resolve root dependencies and perform operation
            ISalesManagementService salesManagement = IoCFactory.Instance.CurrentContainer.Resolve <ISalesManagementService>();

            return(salesManagement.FindOrdersByShippingData(shippingData.ShippingName,
                                                            shippingData.ShippingAddress,
                                                            shippingData.ShippingCity,
                                                            shippingData.ShippingZip));
        }
Esempio n. 5
0
        public void CreatePurchaseBulgaria_AndValidateNoVATTax()
        {
            IWebDriver driver = new FirefoxDriver();

            ShoppingCartPage         shoppingCartPage       = new ShoppingCartPage(driver);
            BillingInformationPage   billingInformationPage = new BillingInformationPage(driver);
            OnlineShoppingCartFacade onlineShoppingCart     = new OnlineShoppingCartFacade(shoppingCartPage, billingInformationPage);
            BillingInformation       billingInfo            = new BillingInformation("Anton", "Angelov", "Kaspichan");
            ShippingInformation      shippingInfo           = new ShippingInformation("Anton", "Angelov", "Kalofer");

            onlineShoppingCart.PerformPurchase(billingInfo, shippingInfo);
        }
        private decimal CalculateTotalPrice(List <CartItem> cartItems, ShippingInformation shippingInfo)
        {
            decimal totalPrice = 0;

            foreach (var cartItem in cartItems)
            {
                totalPrice += cartItem.Amount * cartItem.Product.UnitPrice;
            }
            totalPrice += (decimal)shippingInfo.Price;

            return(totalPrice);
        }
Esempio n. 7
0
        public void CreatePurchaseBulgaria_AndValidateNoVATTax()
        {
            IWebDriver driver = new FirefoxDriver();

            var shoppingCartPage = new ShoppingCartPage(driver);
            var billingInformationPage = new BillingInformationPage(driver);
            var onlineShoppingCart = new OnlineShoppingCartFacade(billingInformationPage, shoppingCartPage);
            var billingInfo = new BillingInformation("Anton", "Angelov", "Kaspichan");
            var shippingInfo = new ShippingInformation("Anton", "Angelov", "Kalofer");

            onlineShoppingCart.PerformPurchase(billingInfo, shippingInfo);
        }
Esempio n. 8
0
        public void PerformPurchase(BillingInformation billingInfo, ShippingInformation shippingInfo)
        {
            ////shoppingCartPage.ChangeQuantity(1);
            shoppingCartPage.Checkout.Click();
            shoppingCartPage.AssertCheckoutButtonIsEnabled();
            shoppingCartPage.AssertCheckoutButtonIsEnabled();

            billingInformationPage.Asserter.AssertCityLabel();
            billingInformationPage.Asserter.AssertFirstNameLabel();
            billingInformationPage.Asserter.AssertLastNameLabel();
            billingInformationPage.FillBillingInformation(billingInfo.FirstName, billingInfo.LastName, billingInfo.City);
            billingInformationPage.FillShippingInformation(shippingInfo.FirstName, shippingInfo.LastName, shippingInfo.City);
            billingInformationPage.Map.ProceedToPayment.Click();
        }
        private PagarMe.Shipping ShippingFactory(Models.Customer customer, ShippingInformation shippingInfo, Models.Address address)
        {
            string deliveryDate =
                DateTime.Now
                .AddDays(shippingInfo.EstimatedTimeOfArrivalInDays)
                .ToString("yyyy-MM-dd");

            return(new PagarMe.Shipping
            {
                Name = customer.Name,
                Fee = PriceConverter.ConvertDoublePriceToPriceInCents(shippingInfo.Price),
                DeliveryDate = deliveryDate,
                Expedited = false,
                Address = AddressFactory(address)
            });
        }
        public async Task <IActionResult> CalculateShippingRate(string destinationCep)
        {
            List <CartItem> cartItems = cartCookieManager.GetCookieData();

            foreach (var cartItem in cartItems)
            {
                cartItem.Product = productRepository.GetProduct(cartItem.Id);
            }
            var packages = shippingPackageFactory.CreateShippingPackages(cartItems);

            ShippingInformation shippingInfoPAC =
                await shippingRateCalculator.CalculateShippingRateAndETA(shippingOriginCep, destinationCep, FreightTypes.PAC, packages);

            ShippingInformation shippingInfoSEDEX =
                await shippingRateCalculator.CalculateShippingRateAndETA(shippingOriginCep, destinationCep, FreightTypes.SEDEX, packages);

            if (shippingInfoPAC == null || shippingInfoSEDEX == null)
            {
                shippingInfoCookieManager.DeleteCookie();
                return(BadRequest());
            }

            var  shippingInfosInCookie  = shippingInfoCookieManager.GetCookieData();
            bool theCookieAlreadyExists = shippingInfosInCookie.Count != 0;

            if (theCookieAlreadyExists)
            {
                _ = shippingInfosInCookie[0].IsSelected ?
                    shippingInfoPAC.IsSelected = true :
                                                 shippingInfoSEDEX.IsSelected = true;
            }
            else
            {
                shippingInfoPAC.IsSelected = true;
            }

            var shippingInfos = new List <ShippingInformation>()
            {
                shippingInfoPAC, shippingInfoSEDEX
            };

            shippingInfoCookieManager.SetCookie(shippingInfos);

            return(Ok(shippingInfos));
        }
        public void PerformPurchase(BillingInformation billingInfo, ShippingInformation shippingInfo)
        {
            ////shoppingCartPage.ChangeQuantity(1);
            this.ShoppingCartPage.Checkout.Click();
            this.ShoppingCartPage.AssertCheckoutButtonIsEnabled();
            this.ShoppingCartPage.AssertCheckoutButtonIsEnabled();

            this.BillingInformationPage.AssertCityLabel();
            this.BillingInformationPage.AssertFirstNameLabel();
            this.BillingInformationPage.AssertLastNameLabel();
            this.BillingInformationPage.FillBillingInformation(billingInfo.FirstName,
                billingInfo.LastName,
                billingInfo.City);
            this.BillingInformationPage.FillShippingInformation(shippingInfo.FirstName,
                shippingInfo.LastName,
                shippingInfo.City);
            this.BillingInformationPage.ProceedToPayment.Click();
        }
Esempio n. 12
0
 public bool SetShippingInformation(string paymentId, ShippingInformation data)
 {
     return(this.Update(paymentId, "shippingInformation", null, data, null));
 }
Esempio n. 13
0
        public bool LaunchPurchase(DesiredShoe shoe)
        {
            ShippingInformation shipping = _shippingAndBillingService.GetShippingInformation();
            BillingInformation  billing  = _shippingAndBillingService.GetBillingInformation();
            IWebDriver          driver   = _webDriver;

            driver.Navigate().GoToUrl(shoe.URL);

            bool unreleased = false;

            while (!unreleased)
            {
                try
                {
                    driver.Navigate().GoToUrl(shoe.URL);

                    var notifyButton = driver.FindElement(By.CssSelector(".product-info .cta-btn"));
                    if (notifyButton.Text.Contains("Notify", StringComparison.OrdinalIgnoreCase))
                    {
                        unreleased = false;
                    }
                    //else
                    //{
                    //    driver.Quit();
                    //}
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    unreleased = true;
                }
                //if (notifyButton.Text.Contains("Notify", StringComparison.OrdinalIgnoreCase))
                //{
                //    unreleased = true;
                //}
                System.Threading.Thread.Sleep(shoe.RefreshInterval);
                Console.WriteLine("refreshed at " + DateTime.Now.ToString());
            }

            // Select Size
            SeleniumSetMethods.Click(driver, "label", FindBy.Class);
            System.Threading.Thread.Sleep(250); ////////////////////////////////

            // 10.5 on Chrome???
            // 11.5 on Firefox
            //SeleniumSetMethods.Click(driver, ".size:nth-child(12) > .size-grid-dropdown", FindBy.CssSelector);
            //SeleniumSetMethods.Click(driver, ".size:nth-child(17) > .size-grid-dropdown", FindBy.CssSelector);
            bool foundSize = false;

            for (int i = 1; i < 20; ++i)
            {
                if (SeleniumSetMethods.ClickAndVerifyText(driver,
                                                          ".size:nth-child(" + i.ToString() + ") > .size-grid-dropdown",
                                                          FindBy.CssSelector,
                                                          shoe.TargetSize))
                {
                    foundSize = true;
                    break;
                }
                //else
                //{
                //    //Console.WriteLine("attempted nth-child: " + i.ToString());
                //}
            }
            if (!foundSize)
            {
                //Console.WriteLine("Unable to find correct shoe size.");
                return(false);
            }
            System.Threading.Thread.Sleep(500); ////////////////////////////////

            // Add to cart
            SeleniumSetMethods.Click(driver, ".ncss-btn-black", FindBy.CssSelector);

            System.Threading.Thread.Sleep(500); ////////////////////////////////

            // Checkout
            SeleniumSetMethods.Click(driver, ".ncss-btn-black:nth-child(2)", FindBy.CssSelector);

            System.Threading.Thread.Sleep(500); ////////////////////////////////

            // Continue as guest
            SeleniumSetMethods.Click(driver, "qa-guest-checkout", FindBy.Id);

            System.Threading.Thread.Sleep(500); ////////////////////////////////

            // Shipping Information
            SeleniumSetMethods.EnterText(driver, "firstName", shipping.FirstName, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "lastName", shipping.LastName, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "address1", shipping.Address1, FindBy.Id);
            // need to expand address2 section here
            SeleniumSetMethods.EnterText(driver, "city", shipping.City, FindBy.Id);
            SeleniumSetMethods.SelectDropDown(driver, "state", shipping.State, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "postalCode", shipping.ZipCode, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "email", shipping.Email, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "phoneNumber", shipping.PhoneNumber, FindBy.Id);

            // Save and Continue Button
            SeleniumSetMethods.Click(driver, ".js-next-step", FindBy.CssSelector);

            // Continue to Payment
            SeleniumSetMethods.Click(driver, ".js-next-step", FindBy.CssSelector);

            System.Threading.Thread.Sleep(1000); ///////////////////////////////

            driver.SwitchTo().Frame(4);

            // Billing Information
            string ccn = billing.CreditCardNumber;

            SeleniumSetMethods.EnterText(driver, "creditCardNumber", ccn.Substring(0, 4), FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "creditCardNumber", ccn.Substring(4, 4), FindBy.Id);
            string creditCardNumber = ccn.Substring(8);

            foreach (var c in creditCardNumber.ToCharArray())
            {
                SeleniumSetMethods.EnterText(driver, "creditCardNumber", c.ToString(), FindBy.Id);
            }

            SeleniumSetMethods.EnterText(driver, "expirationDate", billing.ExpirationDate, FindBy.Id);
            SeleniumSetMethods.EnterText(driver, "cvNumber", billing.CVV2, FindBy.Id);

            if (Constants.DEBUG_MODE)
            {
                driver.Quit();
                return(false); //works
            }

            driver.SwitchTo().ParentFrame();//relative=parent
            // Purchase
            SeleniumSetMethods.Click(driver, ".d-lg-ib", FindBy.CssSelector);
            return(true);
        }
Esempio n. 14
0
 public CreateOrder(IEnumerable <OrderLine> lines, PaymentInformation payment, ShippingInformation shipping)
 {
     Lines    = lines;
     Payment  = payment;
     Shipping = shipping;
 }
Esempio n. 15
0
        public GiftClaimResponse ClaimRewardGift(string giftId)
        {
            // --- Buscar Regalo solicitado ---
            RewardGift rewardGift
                = Database.RewardGiftStore.Get(giftId);

            if (rewardGift == null)
            {
                throw new HttpNotFoundException(
                          ControllerStrings.Warning701_GiftNotFound
                          );
            }

            // --- Verificar que el Regalo haya sido obtenido por el Usuario ---
            UserEarnedReward userEarnedReward
                = Database.UserEarnedRewardStore.GetFirst(
                      filter: f =>
                      f.User.Guid == CurrentUser.Guid &&
                      f.Reward.RewardGift.Any(r => r.Guid == rewardGift.Guid)
                      );

            if (userEarnedReward == null)
            {
                throw new HttpNotFoundException(
                          ControllerStrings.Warning701_GiftNotFound
                          );
            }

            // --- Verificar que el Regalo no haya sido Reclamado por el Usuario ---
            bool userClaimedGift
                = rewardGift.UserRewardGiftClaimed.Where(w =>
                                                         w.RedeemedByUser.Guid == CurrentUser.Guid &&
                                                         w.RewardGift.Guid == rewardGift.Guid
                                                         ).FirstOrDefault() != null;

            if (userClaimedGift)
            {
                throw new HttpNotFoundException(
                          ControllerStrings.Warning701_GiftNotFound
                          );
            }

            // --- Verificar que el Usuario tenga Información de Envío si el Regalo se envía ---
            if (rewardGift.IsShipped)
            {
                ShippingInformation shippingInformation
                    = CurrentUser.ShippingInformation;

                if (shippingInformation == null)
                {
                    throw new HttpConflictException(
                              ControllerStrings.Warning205_ShippingInfoNotSet
                              );
                }
            }

            // --- Obtener un objeto de Reclamo ---
            UserRewardGiftClaimed giftClaim
                = Database.UserRewardGiftClaimedStore.GetFirst(
                      filter: f =>
                      f.RedeemedByUser == null &&
                      f.RewardGift.Guid == rewardGift.Guid
                      );

            if (giftClaim == null)
            {
                throw new HttpNoContentException(
                          ControllerStrings.Warning702_GiftOutOfStock
                          );
            }

            // --- Asociar al Usuario con el Reclamo (efectivamente reclamando el regalo del usuario) ---
            giftClaim.RedeemedByUser
                = CurrentUser;

            Database.UserRewardGiftClaimedStore.Update(giftClaim);
            Database.SaveChanges();

            // Devolver estatus "204 No Content" si el Regalo lo envía KMS.
            if (rewardGift.IsShipped)
            {
                throw new HttpNoContentException("703" + ControllerStrings.Warning703_GiftShippingPending);
            }

            // --- Devolver detalles de canje ---
            return(new GiftClaimResponse()
            {
                ExpirationDate
                    = giftClaim.ExpirationDate.HasValue
                    ? giftClaim.ExpirationDate.Value
                    : DateTime.MaxValue,
                RedeemCode
                    = giftClaim.RedeemCode,
                RedeemPicture
                    = GetDynamicResourceUri(giftClaim)
            });
        }