HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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];
    }
}