File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/ERPApps/ERPWebParts/Membership/Profile/MyOrders.ascx.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.Ecommerce;
using CMS.GlobalHelper;
using CMS.PortalControls;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.Membership;
using CMS.Helpers;
using CMS.DataEngine;
using CMS.SiteProvider;
public partial class ERPApps_ERPWebParts_Membership_Profile_MyOrders : CMSAbstractWebPart
{
#region "Variables"
private int mCustomerId = 0;
private bool mShowOrderTrackingNumber = false;
private bool downloadLinksColumnVisible = false;
#endregion
Dictionary<int, OrderInfo> orders = new Dictionary<int, OrderInfo>();
#region "Properties"
/// <summary>
/// Customer ID.
/// </summary>
public int CustomerId
{
get
{
if ( mCustomerId == 0 )
{
var customerInfo = CustomerInfoProvider.GetCustomerInfoByUserID(MembershipContext.AuthenticatedUser.UserID);
if ( customerInfo != null )
{
mCustomerId = customerInfo.CustomerID;
}
else
{
mCustomerId = -1;
}
}
return mCustomerId;
}
set
{
mCustomerId = value;
}
}
/// <summary>
/// Indcicates if order tracking number should be displayed.
/// </summary>
public bool ShowOrderTrackingNumber
{
get
{
return mShowOrderTrackingNumber;
}
set
{
mShowOrderTrackingNumber = value;
}
}
/// <summary>
/// If true, control does not process the data.
/// </summary>
public override bool StopProcessing
{
get
{
return ValidationHelper.GetBoolean(ViewState["StopProcessing"], false);
}
set
{
ViewState["StopProcessing"] = value;
}
}
#endregion
/// <summary>
/// Page load.
/// </summary>
protected void Page_Load(object sender, EventArgs e)
{
if ( CustomerId < 0 )
{
StopProcessing = true;
Visible = false;
}
if ( !StopProcessing )
{
if ( !MembershipContext.AuthenticatedUser.IsPublic() )
{
gridOrders.IsLiveSite = true;
gridOrders.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridOrders_OnExternalDataBound);
gridOrders.WhereCondition = "(CustomerID = " + this.CustomerId + ") AND (OrderSiteID = " + SiteContext.CurrentSiteID + ")";
}
else
{
// Hide if user is not authenticated
this.Visible = false;
}
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
// Set visibility of order traking number column
this.gridOrders.GridView.Columns[5].Visible = this.ShowOrderTrackingNumber;
// Set visibility of download links column
this.gridOrders.GridView.Columns[7].Visible = this.downloadLinksColumnVisible;
ScriptHelper.RegisterDialogScript(this.Page);
}
protected object gridOrders_OnExternalDataBound(object sender, string sourceName, object parameter)
{
DataRowView dr = null;
switch ( sourceName.ToLower() )
{
case "totalprice":
dr = (DataRowView) parameter;
return HTMLHelper.HTMLEncode(String.Format(dr["CurrencyFormatString"].ToString(), dr["OrderTotalPrice"]));
case "statusdisplayname":
return HTMLHelper.HTMLEncode(ResHelper.LocalizeString(Convert.ToString(parameter)));
case "invoice":
var orderA = GetOrderInfo(ValidationHelper.GetInteger(parameter, 0));
string text = ResHelper.GetString("ERPApps.Orders.ViewOrderDetail");
if ( orderA != null && !string.IsNullOrEmpty(ValidationHelper.GetString(orderA.OrderCustomData[ERPOrderInfoProvider.INVOICE_DATA_FIELD], string.Empty)) )
{
text = ResHelper.GetString("ERPApps.Orders.ViewInvoice");
}
return "<a target=\"_blank\" href=\"" + URLHelper.ResolveUrl("~/CMSModules/Ecommerce/CMSPages/GetInvoice.aspx?orderid=" + ValidationHelper.GetInteger(parameter, 0)) + "\">" + text + "</a>";
case "invoicenumber":
var orderB = GetOrderInfo(ValidationHelper.GetInteger(parameter, 0));
return orderB == null ? string.Empty : orderB.OrderCustomData[ERPOrderInfoProvider.INVOICE_DATA_FIELD];
case "downloads":
int orderId = ValidationHelper.GetInteger(parameter, 0);
string where = String.Format("COM_OrderItemSKUFile.OrderItemID IN (SELECT OrderItemID FROM COM_OrderItem WHERE OrderItemOrderID = {0})", orderId);
// Get order item SKU files for the order
DataSet orderItemSkuFiles = ConnectionHelper.ExecuteQuery("ecommerce.orderitemskufile.selectallwithdetails", null, where, null);
// If there are some downloads available for the order
if ( !DataHelper.DataSourceIsEmpty(orderItemSkuFiles) )
{
// Make download links column visible
this.downloadLinksColumnVisible = true;
// Show view action for this record
string url = URLHelper.ResolveUrl("~/CMSModules/Ecommerce/CMSPages/EProducts.aspx?orderid=" + orderId);
return String.Format("<a href=\"#\" onclick=\"modalDialog('{0}', 'DownloadLinks', 700, 420); return false;\">{1}</a>", url, this.GetString("general.view"));
}
return String.Empty;
}
return parameter;
}
private OrderInfo GetOrderInfo(int orderId)
{
if ( !orders.ContainsKey(orderId) )
{
var orderInfo = ERPOrderInfoProvider.GetOrderInfo(orderId);
orders[orderId] = orderInfo;
}
return orders[orderId];
}
}