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.Ecommerce", UIElements = "Products.VolumeDiscounts")] public partial class CMSModules_Ecommerce_Pages_Tools_Products_Product_Edit_VolumeDiscount_Edit : CMSProductsAdvancedPage { protected int volumeDiscountID = 0; protected VolumeDiscountInfo volumeDiscountObj = null; protected string currencyCode = ""; protected CurrencyInfo currency = null; protected bool dialog = false; protected SKUInfo sku = null; protected void Page_PreInit(object sender, EventArgs e) { // Remove "tabs design" when editing in modal dialog dialog = QueryHelper.GetBoolean("modaldialog", false); } protected void Page_Load(object sender, EventArgs e) { ScriptHelper.RegisterJQuery(this); volumeDiscountID = QueryHelper.GetInteger("VolumeDiscountID", 0); sku = SKUInfoProvider.GetSKUInfo(ProductID); if (sku != null) { CheckEditedObjectSiteID(sku.SKUSiteID); // 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); } } string titleText = ""; string titleImage = ""; // 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('(%)')"; string currentVolumeDiscount = GetString("Product_Edit_VolumeDiscount_Edit.NewItemCaption"); // If true, then we will edit existing record if (volumeDiscountID > 0) { // Check if there is already VolumeDiscountInfo with this volumeDiscountID volumeDiscountObj = VolumeDiscountInfoProvider.GetVolumeDiscountInfo(volumeDiscountID); if (volumeDiscountID > 0) { EditedObject = volumeDiscountObj; } if (volumeDiscountObj != null) { // Fill editing form with existing data when not postback if (!RequestHelper.IsPostBack()) { LoadData(volumeDiscountObj); // Set caption of edited item currentVolumeDiscount = GetString("product_edit_volumediscount_edit.edittitletext"); // Show that the volumeDiscount was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { // Show message ShowChangesSaved(); // Refresh parent page when editing in modal dialog if (dialog) { ltlScript.Text = ScriptHelper.GetScript("wopener.RefreshPage();"); } } } } // Set page title to "volume discount properties" titleText = GetString("product_edit_volumediscount_edit.edittitletext"); titleImage = GetImageUrl("Objects/Ecommerce_VolumeDiscount/object.png"); } // Do this when creating new discount else { // Set default radio button value if (!URLHelper.IsPostback()) { radDiscountRelative.Checked = true; radDiscountAbsolute.Checked = false; } // Init page header to "new item" titleText = GetString("product_edit_volumediscount_edit.newitemcaption"); titleImage = GetImageUrl("Objects/Ecommerce_VolumeDiscount/new.png"); } // Show breadcrumbs only when not editing in modal dialog if (!dialog) { // Initializes breadcrumb master page element InitializeBreadcrumbs(currentVolumeDiscount); } else { // Change validators location spanMinCount.Attributes["style"] = "display:block"; spanValue.Attributes["style"] = "display:block"; } InitializeMasterPage(titleText, titleImage); RegisterEscScript(); RegisterModalPageScripts(); } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); lblCurrency.Text = string.Format("({0})", radDiscountAbsolute.Checked ? currencyCode : "%"); } private void InitializeBreadcrumbs(string currentVolumeDiscount) { string listringUrl = "~/CMSModules/Ecommerce/Pages/Tools/Products/Product_Edit_VolumeDiscount_List.aspx?productID=" + ProductID.ToString() + "&siteId=" + SiteID; // Initializes page title control string[,] breadcrumbs = new string[2, 3]; breadcrumbs[0, 0] = GetString("Product_Edit_VolumeDiscount_Edit.ItemListLink"); breadcrumbs[0, 1] = AddNodeIDParameterToUrl(listringUrl); breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentVolumeDiscount; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; CurrentMaster.Title.Breadcrumbs = breadcrumbs; } /// /// Initializes master page elements. /// /// Master page title text /// URL of the image of the master page title /// Current volume discount private void InitializeMasterPage(string titleText, string titleImage) { // Set the master page title CurrentMaster.Title.HelpTopicName = "newedit_discount"; CurrentMaster.Title.HelpName = "helpTopic"; // Set master title if (DisplayTitle) { CurrentMaster.Title.TitleText = titleText; CurrentMaster.Title.TitleImage = titleImage; } } /// /// 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 his 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)) { string dialogString = ""; if (dialog) { dialogString = "&modaldialog=1"; } // Sets data to database VolumeDiscountInfoProvider.SetVolumeDiscountInfo(volumeDiscountObj); string redirectUrl = "Product_Edit_VolumeDiscount_Edit.aspx?VolumeDiscountID=" + volumeDiscountObj.VolumeDiscountID + "&siteId=" + SiteID + "&saved=1&productID=" + ProductID + dialogString; URLHelper.Redirect(AddNodeIDParameterToUrl(redirectUrl)); } else { // Show error message ShowError(GetString("product_edit_volumediscount_edit.minamountexists")); } } else { // Show error message ShowError(errorMessage); } } } }