private void HandleAutomaticSelections(ShoppingCartInfo currentShoppingCart) { if ((currentShoppingCart.ShippingOption == null) && currentShoppingCart.IsShippingNeeded) { // Try to select shipping option if there is only one in system var query = ShippingOptionInfoProvider.GetShippingOptions(currentShoppingCart.ShoppingCartSiteID, true).Column("ShippingOptionID"); if (query.Count == 1) { currentShoppingCart.ShoppingCartShippingOptionID = DataHelper.GetIntegerValues(query.Tables[0], "ShippingOptionID").FirstOrDefault(); } } if (currentShoppingCart.PaymentOption == null) { // Try to select payment option if there is only one in system var query = PaymentOptionInfoProvider.GetPaymentOptions(currentShoppingCart.ShoppingCartSiteID, true).Column("PaymentOptionID"); if (query.Count == 1) { int paymentOptionId = DataHelper.GetIntegerValues(query.Tables[0], "PaymentOptionID").FirstOrDefault(); // Check if payment is allowed for shipping, or shipping is not set if (CheckPaymentIsAllowedForShipping(currentShoppingCart, paymentOptionId)) { currentShoppingCart.ShoppingCartPaymentOptionID = paymentOptionId; } } } }
// Prepares a shipping option select list together with calculated shipping prices private SelectList CreateShippingOptionList(ShoppingCartInfo cart) { // Gets the shipping options configured and enabled for the current site IEnumerable <ShippingOptionInfo> shippingOptions = ShippingOptionInfoProvider.GetShippingOptions(SiteContext.CurrentSiteID, true); // Creates a collection of SelectListItems IEnumerable <SelectListItem> selectList = shippingOptions.Select(shippingOption => { // Calculates the shipping price for a given shipping option based on the contents of the current // shopping cart and currently running store promotions (e.g., free shipping offers) decimal shippingPrice = shoppingService.CalculateShippingOptionPrice(shippingOption); // Gets the currency information from the shopping cart CurrencyInfo currency = cart.Currency; // Creates a select list item with shipping option name and a calculate shipping price return(new SelectListItem { Value = shippingOption.ShippingOptionID.ToString(), Text = $"{shippingOption.ShippingOptionDisplayName} ({String.Format(currency.CurrencyFormatString, shippingPrice)})" }); }); // Returns a new SelectList instance return(new SelectList(selectList, "Value", "Text")); }
public ActionResult DeliveryDetails(DeliveryDetailsViewModel model) { // Gets the user's current shopping cart ShoppingCartInfo cart = shoppingService.GetCurrentShoppingCart(); // Gets all enabled shipping options for the shipping option selector SelectList shippingOptions = new SelectList(ShippingOptionInfoProvider.GetShippingOptions(SiteContext.CurrentSiteID, true).ToList(), "ShippingOptionID", "ShippingOptionDisplayName"); // If the ModelState is not valid, assembles the country list and the shipping option list and displays the step again if (!ModelState.IsValid) { model.BillingAddress.Countries = new SelectList(CountryInfoProvider.GetCountries(), "CountryID", "CountryDisplayName"); model.ShippingOption.ShippingOptions = new ShippingOptionViewModel(ShippingOptionInfoProvider.GetShippingOptionInfo(shoppingService.GetShippingOption()), shippingOptions).ShippingOptions; return(View(model)); } // Gets the shopping cart's customer and applies the customer details from the checkout process step var customer = shoppingService.GetCurrentCustomer(); if (customer == null) { UserInfo userInfo = cart.User; if (userInfo != null) { customer = CustomerHelper.MapToCustomer(cart.User); } else { customer = new CustomerInfo(); } } model.Customer.ApplyToCustomer(customer); // Sets the updated customer object to the current shopping cart shoppingService.SetCustomer(customer); // Gets the shopping cart's billing address and applies the billing address from the checkout process step var address = AddressInfoProvider.GetAddressInfo(model.BillingAddress.AddressID) ?? new AddressInfo(); model.BillingAddress.ApplyTo(address); // Sets the address personal name address.AddressPersonalName = $"{customer.CustomerFirstName} {customer.CustomerLastName}"; // Saves the billing address shoppingService.SetBillingAddress(address); // Sets the selected shipping option and evaluates the cart shoppingService.SetShippingOption(model.ShippingOption.ShippingOptionID); // Redirects to the next step of the checkout process return(RedirectToAction("PreviewAndPay")); }
/// <summary> /// Checks shipping methods. /// </summary> private void CheckShippingMethods() { if (ShippingMethodsCheck) { // Check if at least one shipping option exists DataSet ds = ShippingOptionInfoProvider.GetShippingOptions("ShippingOptionEnabled = 1", "ShippingOptionID", 1, "ShippingOptionID", CMSContext.CurrentSiteID); if (DataHelper.DataSourceIsEmpty(ds)) { DisplayMessage("com.settingschecker.noshippingmethods"); } } }
public DeliveryOption[] GetShippingOptions() { var services = ShippingOptionInfoProvider.GetShippingOptions(SiteContext.CurrentSiteID).Where(s => s.ShippingOptionEnabled).ToArray(); var result = mapper.Map <DeliveryOption[]>(services); foreach (var item in result) { item.Title = resources.ResolveMacroString(item.Title); } GetShippingPrice(result); return(result); }
/// <summary> /// Checks shipping methods. /// </summary> private void CheckShippingMethods() { if (ShippingMethodsCheck) { // Check if at least one shipping option exists DataSet ds = ShippingOptionInfoProvider.GetShippingOptions(SiteContext.CurrentSiteID, true) .TopN(1) .Column("ShippingOptionID") .OrderBy("ShippingOptionID"); if (DataHelper.DataSourceIsEmpty(ds)) { DisplayMessage("com.settingschecker.noshippingmethods"); } } }
//EndDocSection:DisplayDelivery //DocSection:DisplayDeliveryAddressSelector /// <summary> /// Displays the customer details checkout process step with an address selector for known customers. /// </summary> public ActionResult DeliveryDetailsAddressSelector() { // Gets the current user's shopping cart ShoppingCartInfo cart = shoppingService.GetCurrentShoppingCart(); // If the shopping cart is empty, redirects to the shopping cart view if (cart.IsEmpty) { return(RedirectToAction("ShoppingCart")); } // Gets all countries for the country selector SelectList countries = new SelectList(CountryInfoProvider.GetCountries(), "CountryID", "CountryDisplayName"); // Gets the current customer CustomerInfo customer = shoppingService.GetCurrentCustomer(); // Gets all customer billing addresses for the address selector IEnumerable <AddressInfo> customerAddresses = Enumerable.Empty <AddressInfo>(); if (customer != null) { customerAddresses = AddressInfoProvider.GetAddresses(customer.CustomerID).ToList(); } // Prepares address selector options SelectList addresses = new SelectList(customerAddresses, "AddressID", "AddressName"); // Gets all enabled shipping options for the shipping option selector SelectList shippingOptions = new SelectList(ShippingOptionInfoProvider.GetShippingOptions(SiteContext.CurrentSiteID, true).ToList(), "ShippingOptionID", "ShippingOptionDisplayName"); // Loads the customer details DeliveryDetailsViewModel model = new DeliveryDetailsViewModel { Customer = new CustomerViewModel(shoppingService.GetCurrentCustomer()), BillingAddress = new BillingAddressViewModel(shoppingService.GetBillingAddress(), countries, addresses), ShippingOption = new ShippingOptionViewModel(ShippingOptionInfoProvider.GetShippingOptionInfo(shoppingService.GetShippingOption()), shippingOptions) }; // Displays the customer details step return(View(model)); }
/// <summary> /// This will bind Shipping options to dropdown /// </summary> private void BindShippingOptions() { try { if (ShippingOptions == null) { ShippingOptions = ShippingOptionInfoProvider.GetShippingOptions() .OnSite(CurrentSite.SiteID).Where(x => x.ShippingOptionEnabled == true).ToList(); } ddlShippingOption.DataSource = ShippingOptions; ddlShippingOption.DataValueField = "ShippingOptionID"; ddlShippingOption.DataTextField = "ShippingOptionName"; ddlShippingOption.DataBind(); } catch (Exception ex) { EventLogProvider.LogInformation("Kadena_CMSWebParts_Kadena_Cart_DistributorCartDetails", "BindShippingOptions", ex.Message); } }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check permissions CheckConfigurationModification(ConfiguredSiteID); string errorMessage = new Validator() .NotEmpty(txtShippingOptionDisplayName.Text.Trim(), rfvDisplayName.ErrorMessage) .NotEmpty(txtShippingOptionName.Text.Trim(), rfvName.ErrorMessage).Result; if (!ValidationHelper.IsCodeName(txtShippingOptionName.Text.Trim())) { errorMessage = GetString("General.ErrorCodeNameInIdentifierFormat"); } if (errorMessage == "") { errorMessage = txtShippingOptionCharge.Validate(false); } if (errorMessage == "") { // ShippingOptionName must be unique ShippingOptionInfo shippingOptionObj = null; string siteWhere = (ConfiguredSiteID > 0) ? " AND (ShippingOptionSiteID = " + ConfiguredSiteID + " OR ShippingOptionSiteID IS NULL)" : ""; DataSet ds = ShippingOptionInfoProvider.GetShippingOptions("ShippingOptionName = '" + txtShippingOptionName.Text.Trim().Replace("'", "''") + "'" + siteWhere, null, 1, null); if (!DataHelper.DataSourceIsEmpty(ds)) { shippingOptionObj = new ShippingOptionInfo(ds.Tables[0].Rows[0]); } // If shippingOptionName value is unique if ((shippingOptionObj == null) || (shippingOptionObj.ShippingOptionID == mShippingOptionID)) { // If shippingOptionName value is unique -> determine whether it is update or insert if ((shippingOptionObj == null)) { // Get ShippingOptionInfo object by primary key shippingOptionObj = ShippingOptionInfoProvider.GetShippingOptionInfo(mShippingOptionID); if (shippingOptionObj == null) { // Create new item -> insert shippingOptionObj = new ShippingOptionInfo(); shippingOptionObj.ShippingOptionSiteID = ConfiguredSiteID; } } shippingOptionObj.ShippingOptionDisplayName = txtShippingOptionDisplayName.Text.Trim(); shippingOptionObj.ShippingOptionDescription = txtDescription.Text.Trim(); shippingOptionObj.ShippingOptionCharge = txtShippingOptionCharge.Price; shippingOptionObj.ShippingOptionName = txtShippingOptionName.Text.Trim(); shippingOptionObj.ShippingOptionEnabled = chkShippingOptionEnabled.Checked; // Save record ShippingOptionInfoProvider.SetShippingOptionInfo(shippingOptionObj); // Upload file file.ObjectID = shippingOptionObj.ShippingOptionID; file.UploadFile(); URLHelper.Redirect("ShippingOption_Edit_Frameset.aspx?ShippingOptionID=" + Convert.ToString(shippingOptionObj.ShippingOptionID) + "&saved=1&siteId=" + SiteID); } else { // Show error message ShowError(GetString("ShippingOption_Edit.ShippingOptionNameExists")); } } else { // Show error message ShowError(errorMessage); } }
private void GenerateEcommerceData(int siteID) { var siteName = SiteInfoProvider.GetSiteName(siteID); var currencyInfo = CurrencyInfoProvider.GetCurrencies(siteID) .Where("CurrencyIsMain", QueryOperator.Equals, 1).TopN(1).FirstOrDefault(); var list1 = PaymentOptionInfoProvider.GetPaymentOptions(siteID).ToList(); var list2 = ShippingOptionInfoProvider.GetShippingOptions(siteID).ToList(); var orderStatusList = OrderStatusInfoProvider.GetOrderStatuses(siteID).ToDictionary(status => status.StatusName); var manufacturerExceptionList = new List <int> { ManufacturerInfoProvider.GetManufacturerInfo("Aerobie", siteName).ManufacturerID, //ManufacturerInfoProvider.GetManufacturerInfo("Chemex", siteName).ManufacturerID, //ManufacturerInfoProvider.GetManufacturerInfo("Espro", siteName).ManufacturerID }; var list3 = SKUInfoProvider.GetSKUs(siteID).ToList().Where(sku => { if (sku.IsProduct) { return(!manufacturerExceptionList.Contains(sku.SKUManufacturerID)); } return(false); }).ToList(); int num1; IList <int> intList; if (CustomerInfoProvider.GetCustomers().WhereEquals("CustomerSiteID", siteID).Count < 50) { num1 = customerNames.Length; intList = new List <int>(); for (var index = 0; index < num1; ++index) { intList.Add(GenerateCustomer(customerNames[index], siteID).CustomerID); } } else { intList = DataHelper.GetIntegerValues(CustomerInfoProvider.GetCustomers().Column("CustomerID") .WhereEquals("CustomerSiteID", siteID).WhereNotEquals("CustomerEmail", "alex").Tables[0], "CustomerID"); num1 = intList.Count; } var num2 = 0; var num3 = 0; for (var index1 = 0; index1 <= 30; ++index1) { ++num2; var num4 = 0; if (index1 > 5) { num4 = rand.Next(-1, 2); } for (var index2 = 0; index2 < num2 / 2 + num4; ++index2) { var orderStatusInfo = index1 >= 25 ? index1 >= 29 ? orderStatusList["New"] : orderStatusList["InProgress"] : orderStatusList["Completed"]; var orderInfo = new OrderInfo { OrderCustomerID = intList[num3 % num1], OrderCurrencyID = currencyInfo.CurrencyID, OrderSiteID = siteID, OrderStatusID = orderStatusInfo.StatusID, OrderIsPaid = "Completed".Equals(orderStatusInfo.StatusName, StringComparison.Ordinal) || (uint)rand.Next(0, 2) > 0U, OrderShippingOptionID = list2[rand.Next(list2.Count)].ShippingOptionID, OrderPaymentOptionID = list1[rand.Next(list1.Count)].PaymentOptionID, OrderGrandTotal = decimal.Zero, OrderGrandTotalInMainCurrency = decimal.Zero, OrderTotalPrice = decimal.Zero, OrderTotalPriceInMainCurrency = decimal.Zero, OrderTotalShipping = new decimal(10), OrderTotalTax = new decimal(10) }; OrderInfoProvider.SetOrderInfo(orderInfo); var orderItems = GenerateOrderItems(orderInfo, list3); GenerateOrderAddress(orderInfo.OrderID, GetRandomCountryId(), AddressType.Billing); GenerateOrderAddress(orderInfo.OrderID, GetRandomCountryId(), AddressType.Shipping); orderInfo.OrderDate = DateTime.Now.AddDays(index1 - 30); orderInfo.OrderTotalPrice = orderItems; orderInfo.OrderTotalPriceInMainCurrency = orderItems; orderInfo.OrderGrandTotal = orderItems; orderInfo.OrderGrandTotalInMainCurrency = orderItems; var cartInfoFromOrder = ShoppingCartInfoProvider.GetShoppingCartInfoFromOrder(orderInfo.OrderID); orderInfo.OrderInvoiceNumber = OrderInfoProvider.GenerateInvoiceNumber(cartInfoFromOrder); orderInfo.OrderInvoice = ShoppingCartInfoProvider.GetOrderInvoice(cartInfoFromOrder); OrderInfoProvider.SetOrderInfo(orderInfo); ++num3; } } if (UserInfoProvider.GetUserInfo("alex") != null) { return; } var customerInfo = new CustomerInfo { CustomerEmail = "*****@*****.**", CustomerFirstName = "Alexander", CustomerLastName = "Adams", CustomerSiteID = siteID, CustomerCompany = "Alex & Co. Ltd", CustomerTaxRegistrationID = "12S379BDF798", CustomerOrganizationID = "WRQ7987VRG79" }; CustomerInfoProvider.SetCustomerInfo(customerInfo); var userInfo = CustomerInfoProvider.RegisterCustomer(customerInfo, "", "alex"); var roleInfo = RoleInfoProvider.GetRoleInfo("SilverPartner", siteID); if (roleInfo != null) { UserInfoProvider.AddUserToRole(userInfo.UserID, roleInfo.RoleID); } for (var index = 0; index < 5; ++index) { var cart = new ShoppingCartInfo(); cart.ShoppingCartCulture = CultureHelper.GetDefaultCultureCode(siteName); cart.ShoppingCartCurrencyID = currencyInfo.CurrencyID; cart.ShoppingCartSiteID = siteID; cart.ShoppingCartCustomerID = customerInfo.CustomerID; cart.ShoppingCartBillingAddress = GenerateAddress(GetRandomCountryId(), customerInfo.CustomerID); cart.ShoppingCartShippingAddress = GenerateAddress(GetRandomCountryId(), customerInfo.CustomerID); cart.User = userInfo; ShoppingCartInfoProvider.SetShoppingCartInfo(cart); ShoppingCartInfoProvider.SetShoppingCartItem(cart, new ShoppingCartItemParameters(list3.ElementAt(rand.Next(list3.Count)).SKUID, rand.Next(5))); cart.Evaluate(); ShoppingCartInfoProvider.SetOrder(cart); } }
/// <summary> /// Sets data to database. /// </summary> protected void btnOK_Click(object sender, EventArgs e) { // Check permissions CheckConfigurationModification(mEditedSiteId); string errorMessage = new Validator() .NotEmpty(txtShippingOptionDisplayName.Text.Trim(), rfvDisplayName.ErrorMessage) .NotEmpty(txtShippingOptionName.Text.Trim(), rfvName.ErrorMessage).Result; if (!ValidationHelper.IsCodeName(txtShippingOptionName.Text.Trim())) { errorMessage = GetString("General.ErrorCodeNameInIdentificatorFormat"); } if (errorMessage == "") { errorMessage = txtShippingOptionCharge.ValidatePrice(false); } if (errorMessage == "") { // ShippingOptionName must be unique ShippingOptionInfo shippingOptionObj = null; string siteWhere = (mEditedSiteId > 0) ? " AND (ShippingOptionSiteID = " + mEditedSiteId + " OR ShippingOptionSiteID IS NULL)" : ""; DataSet ds = ShippingOptionInfoProvider.GetShippingOptions("ShippingOptionName = '" + txtShippingOptionName.Text.Trim().Replace("'", "''") + "'" + siteWhere, null, 1, null); if (!DataHelper.DataSourceIsEmpty(ds)) { shippingOptionObj = new ShippingOptionInfo(ds.Tables[0].Rows[0]); } if ((shippingOptionObj == null) || (shippingOptionObj.ShippingOptionID == mShippingOptionID)) { // Get object if ((shippingOptionObj == null)) { shippingOptionObj = ShippingOptionInfoProvider.GetShippingOptionInfo(mShippingOptionID); if (shippingOptionObj == null) { shippingOptionObj = new ShippingOptionInfo(); shippingOptionObj.ShippingOptionSiteID = mEditedSiteId; } } shippingOptionObj.ShippingOptionDisplayName = txtShippingOptionDisplayName.Text.Trim(); shippingOptionObj.ShippingOptionCharge = txtShippingOptionCharge.Value; shippingOptionObj.ShippingOptionName = txtShippingOptionName.Text.Trim(); shippingOptionObj.ShippingOptionEnabled = chkShippingOptionEnabled.Checked; // Save changes ShippingOptionInfoProvider.SetShippingOptionInfo(shippingOptionObj); URLHelper.Redirect("ShippingOption_Edit_General.aspx?shippingOptionID=" + shippingOptionObj.ShippingOptionID + "&saved=1&siteId=" + SiteID); } else { lblError.Visible = true; lblError.Text = GetString("ShippingOption_Edit.ShippingOptionNameExists"); } } else { lblError.Visible = true; lblError.Text = errorMessage; } }
/// <summary> /// Returns an enumerable collection of all enabled shipping options. /// </summary> /// <returns>Collection of enabled shipping options. See <see cref="ShippingOptionInfo"/> for detailed information.</returns> public IEnumerable <ShippingOptionInfo> GetAllEnabled() { return(ShippingOptionInfoProvider.GetShippingOptions(SiteID, true) .ToList()); }