using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.CMSHelper; using CMS.Ecommerce; using CMS.GlobalHelper; using CMS.UIControls; [Security(Resource = "CMS.Content", UIElements = "ContentProduct.VolumeDiscounts")] public partial class CMSModules_Ecommerce_Pages_Content_Product_Product_Edit_VolumeDiscount_Edit : CMSContentProductPage { #region "Variables" protected int volumeDiscountID = 0; protected int productID = 0; protected string currencyCode = ""; protected CurrencyInfo currency = null; protected SKUInfo sku = null; #endregion protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterJQuery(this); // Get parameters from querystring volumeDiscountID = QueryHelper.GetInteger("VolumeDiscountID", 0); productID = QueryHelper.GetInteger("ProductID", 0); sku = SKUInfoProvider.GetSKUInfo(productID); if (sku != null) { // Get currency of product price currency = CurrencyInfoProvider.GetMainCurrency(sku.SKUSiteID); currencyCode = (currency != null) ? currency.CurrencyCode : ""; currencyCode = HTMLHelper.HTMLEncode(currencyCode); // Display product price lblProductPrice.Text = CurrencyInfoProvider.GetFormattedPrice(sku.SKUPrice, currency); // Check presence of main currency string currencyWarning = CheckMainCurrency(sku.SKUSiteID); if (!string.IsNullOrEmpty(currencyWarning)) { ShowWarning(currencyWarning, null, null); } } // Init labels lblVolumeDiscountValue.Text = GetString("product_edit_volumediscount_edit.volumediscountvaluelabel"); lblVolumeDiscountMinCount.Text = GetString("product_edit_volumediscount_edit.volumediscountmincountlabel"); radDiscountAbsolute.Text = GetString("product_edit_volumediscount_edit.rbdiscountabsolute"); radDiscountRelative.Text = GetString("product_edit_volumediscount_edit.rbdiscountrelative"); // Init value validator error messages rfvDiscountValue.ErrorMessage = GetString("product_edit_volumediscount_edit.rfvdiscountvalue"); rvDiscountValue.ErrorMessage = GetString("product_edit_volumediscount_edit.rvdiscountvalue"); rvDiscountValue.MaximumValue = int.MaxValue.ToString(); // Init min count validator error messages rfvMinCount.ErrorMessage = GetString("product_edit_volumediscount_edit.rfvmincount"); rvMinCount.ErrorMessage = GetString("product_edit_volumediscount_edit.rvmincount"); rvMinCount.MaximumValue = int.MaxValue.ToString(); radDiscountAbsolute.Attributes["onclick"] = "jQuery('span[id*=\"lblCurrency\"]').html(" + ScriptHelper.GetString("(" + currencyCode + ")") + ")"; radDiscountRelative.Attributes["onclick"] = "jQuery('span[id*=\"lblCurrency\"]').html('(%)')"; btnOk.Text = GetString("general.ok"); btnCancel.Text = GetString("general.cancel"); // If true, edit the existing volume discount if (volumeDiscountID > 0) { // Check if there is already VolumeDiscountInfo with this volumeDiscountID VolumeDiscountInfo volumeDiscountObj = VolumeDiscountInfoProvider.GetVolumeDiscountInfo(volumeDiscountID); EditedObject = volumeDiscountObj; if (volumeDiscountObj != null) { // Fill editing form with existing data when not postback if (!RequestHelper.IsPostBack()) { LoadData(volumeDiscountObj); // Show that the volumeDiscount was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { ShowChangesSaved(); // Refresh parent page when editing in modal dialog ltlScript.Text = ScriptHelper.GetScript("wopener.RefreshPage(); CloseDialog();"); } } } // Set page title to "volume discount properties" CurrentMaster.Title.TitleText = GetString("product_edit_volumediscount_edit.edittitletext"); CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_VolumeDiscount/object.png"); } // Create new volume discount else { if (!RequestHelper.IsPostBack()) { // Set defaults radDiscountRelative.Checked = true; } // Init page header to "new item" CurrentMaster.Title.TitleText = GetString("product_edit_volumediscount_edit.newitemcaption"); CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_VolumeDiscount/new.png"); } CurrentMaster.Title.HelpTopicName = "newedit_discount"; CurrentMaster.Title.HelpName = "helpTopic"; CurrentMaster.HeadElements.Text = ""; CurrentMaster.HeadElements.Visible = true; ScriptHelper.RegisterWOpenerScript(Page); } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); lblCurrency.Text = string.Format("({0})", radDiscountAbsolute.Checked ? HTMLHelper.HTMLEncode(currencyCode) : "%"); } /// /// Load data of editing volumeDiscount. /// /// VolumeDiscount object protected void LoadData(VolumeDiscountInfo volumeDiscountObj) { // load data from database txtVolumeDiscountValue.Text = Convert.ToString(volumeDiscountObj.VolumeDiscountValue); txtVolumeDiscountMinCount.Text = Convert.ToString(volumeDiscountObj.VolumeDiscountMinCount); radDiscountAbsolute.Checked = (volumeDiscountObj.VolumeDiscountIsFlatValue); radDiscountRelative.Checked = !(volumeDiscountObj.VolumeDiscountIsFlatValue); } /// /// Sets data to database. /// protected void btnOK_Click(object sender, EventArgs e) { if (sku == null) { return; } if (CheckProductPermissions(sku)) { // True if there is already same min count; bool isMinCountUnique = false; // Server side validation of user input string errorMessage = new Validator().NotEmpty(txtVolumeDiscountValue.Text, "product_edit_volumediscount_edit.volumediscountvaluelabel").NotEmpty(txtVolumeDiscountMinCount.Text, "product_edit_volumediscount_edit.volumediscountmincountlabel").Result; // Discount value validation if (errorMessage == "") { // Relative if (radDiscountRelative.Checked && !ValidationHelper.IsInRange(0, 100, ValidationHelper.GetDouble(txtVolumeDiscountValue.Text.Trim(), -1))) { errorMessage = GetString("com.error.relativediscountvalue"); } // Absolute else if (radDiscountAbsolute.Checked && !ValidationHelper.IsPositiveNumber(ValidationHelper.GetDouble(txtVolumeDiscountValue.Text.Trim(), -1))) { errorMessage = GetString("com.error.absolutediscountvalue"); } } if (errorMessage == "") { VolumeDiscountInfo volumeDiscountObj = VolumeDiscountInfoProvider.GetVolumeDiscountInfo(volumeDiscountID); // if volumeDiscount doesnt already exist, create new one if (volumeDiscountObj == null) { // Create new volume discount volumeDiscountObj = new VolumeDiscountInfo(); // When creating new one, set its SKUID to productID (obtained from URL) volumeDiscountObj.VolumeDiscountSKUID = productID; } // Set volumeDiscountObj values volumeDiscountObj.VolumeDiscountValue = Convert.ToDouble(txtVolumeDiscountValue.Text.Trim()); volumeDiscountObj.VolumeDiscountMinCount = Convert.ToInt32(txtVolumeDiscountMinCount.Text.Trim()); volumeDiscountObj.VolumeDiscountIsFlatValue = radDiscountAbsolute.Checked; // Set isMinCountUnique VolumeDiscountInfo vdi = VolumeDiscountInfoProvider.GetVolumeDiscountInfo(productID, volumeDiscountObj.VolumeDiscountMinCount); if (vdi == null) { isMinCountUnique = true; } else { isMinCountUnique = (vdi.VolumeDiscountMinCount != volumeDiscountObj.VolumeDiscountMinCount); } // Check if min count is unique or it is update of existing item if ((isMinCountUnique) || (vdi.VolumeDiscountID == volumeDiscountObj.VolumeDiscountID)) { // Sets data to database VolumeDiscountInfoProvider.SetVolumeDiscountInfo(volumeDiscountObj); string redirectUrl = "Product_Edit_VolumeDiscount_Edit.aspx?VolumeDiscountID=" + Convert.ToString(volumeDiscountObj.VolumeDiscountID) + "&saved=1&productID=" + productID; URLHelper.Redirect(redirectUrl); } else { // Show message ShowError(GetString("product_edit_volumediscount_edit.minamountexists")); } } else { // Show message ShowError(errorMessage); } } } }