using System;
using System.Data;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.Ecommerce;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
using CMS.ExtendedControls.ActionsConfig;
[Security(Resource = "CMS.Content", UIElements = "ContentProduct.VolumeDiscounts")]
public partial class CMSModules_Ecommerce_Pages_Content_Product_Product_Edit_VolumeDiscounts : CMSContentProductPage
{
#region "Variables"
protected SKUInfo sku = null;
protected CurrencyInfo productCurrency = null;
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
if (Node != null)
{
// Get currency for discount value formatting
sku = SKUInfoProvider.GetSKUInfo(Node.NodeSKUID);
EditedObject = sku;
productCurrency = CurrencyInfoProvider.GetMainCurrency(sku != null ? sku.SKUSiteID : Node.NodeSiteID);
if (sku != null)
{
// Check site ID
CheckProductSiteID(sku.SKUSiteID);
// Display product price
lblProductPrice.Text = CurrencyInfoProvider.GetFormattedPrice(sku.SKUPrice, productCurrency);
// Set action handler
gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction);
gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound);
gridElem.WhereCondition = "VolumeDiscountSKUID = " + sku.SKUID;
}
// Set the master page actions element
CurrentMaster.HeaderActions.ActionsList.Add(new HeaderAction
{
ControlType = HeaderActionTypeEnum.LinkButton,
Text = GetString("Product_Edit_VolumeDiscount_List.NewItemCaption"),
OnClientClick = "modalDialog('" + URLHelper.GetAbsoluteUrl("~/CMSModules/Ecommerce/Pages/Content/Product/Product_Edit_VolumeDiscount_Edit.aspx") + "?ProductID=" + sku.SKUID + "&modaldialog=1', 'VolumeDiscounts', 500, 350);",
ImageUrl = GetImageUrl("Objects/Ecommerce_VolumeDiscount/add.png"),
});
// Set help topic
CurrentMaster.HeaderActions.HelpTopicName = "cms_ecommerce_products_volumediscounts";
// Register modal dialog script
ScriptHelper.RegisterDialogScript(this);
}
// Mark selected tab
UIContext.ProductTab = ProductTabEnum.VolumeDiscounts;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
// Display product price only if grid is not empty
plcProductPrice.Visible = gridElem.GridView.Rows.Count > 0;
}
#endregion
#region "Event handlers"
///
/// Handles the UniGrid's OnAction event.
///
/// Name of item (button) that throws event
/// ID (value of Primary key) of corresponding data row
protected void gridElem_OnAction(string actionName, object actionArgument)
{
if (actionName.ToLowerCSafe() == "delete")
{
if ((sku != null) && CheckProductPermissions(sku))
{
// Delete VolumeDiscountInfo object from database
VolumeDiscountInfoProvider.DeleteVolumeDiscountInfo(Convert.ToInt32(actionArgument));
}
}
}
///
/// Handles the UniGrid's OnExternalDataBound event.
///
/// Sender
/// Source name
/// Parameter
protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
case "discountvalue":
DataRowView row = (DataRowView)parameter;
double value = ValidationHelper.GetDouble(row["VolumeDiscountValue"], 0);
bool isFlat = ValidationHelper.GetBoolean(row["VolumeDiscountIsFlatValue"], false);
// If value is relative, add "%" next to the value.
if (isFlat)
{
return CurrencyInfoProvider.GetFormattedPrice(value, productCurrency);
}
else
{
return value.ToString() + "%";
}
case "edit":
// Open modal dialog with volume discount edit form
int volumeDiscountId = ValidationHelper.GetInteger(((DataRowView)((GridViewRow)parameter).DataItem)[0], 0);
((WebControl)sender).Attributes["onclick"] = "modalDialog('" + URLHelper.GetAbsoluteUrl("~/CMSModules/Ecommerce/Pages/Content/Product/Product_Edit_VolumeDiscount_Edit.aspx") + "?ProductID=" + sku.SKUID + "&VolumeDiscountID=" + volumeDiscountId + "&modaldialog=1', 'VolumeDiscounts', 500, 350); return false;";
break;
}
return parameter;
}
#endregion
}