File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/App_Code/ERPApps/VendorInfo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.CMSHelper;
using CMS.EventLog;
using CMS.TreeEngine;
using CMS.DocumentEngine;
using CMS.Membership;
using CMS.Base;
/// <summary>
/// Summary description for VendorInfo.
/// This info extends UserInfo.
/// </summary>
public class VendorInfo : IDataContainer
{
private TreeNode mVendorNode = null;
private string mVendorHomePath = null;
private int mVendorNodeID = 0;
private UserInfo ui = null;
const string VENDOR_DOCUMENT_TYPE = ERPConfig.DOCTYPE_VENDOR;
#region "Properties"
/// <summary>
/// Gets or sets the site owner
/// </summary>
public string VendorHomePath
{
get
{
if ( mVendorNode == null )
{
LoadVendorsProfile();
}
return mVendorNode == null ? null : mVendorNode.NodeAliasPath;
}
}
/// <summary>
/// Node ID for vendor
/// </summary>
public int VendorNodeID
{
get
{
if ( mVendorNode == null )
{
LoadVendorsProfile();
}
return mVendorNode == null ? 0 : mVendorNode.NodeID;
}
}
public TreeNode VendorNode
{
get
{
if ( mVendorNode == null )
{
LoadVendorsProfile();
}
return mVendorNode;
}
set
{
mVendorNode = value;
}
}
#endregion
#region "IDataContainer members"
public object this[string columnName]
{
get
{
return this.GetValue(columnName);
}
set
{
this.SetValue(columnName, value);
}
}
/// <summary>
/// Gets the column names
/// </summary>
public List<string> ColumnNames
{
get
{
return new List<string> { "VendorHomePath", "VendorNodeID" };
}
}
/// <summary>
/// Returns true
/// </summary>
/// <param name="columnName"></param>
public bool ContainsColumn(string columnName)
{
columnName = columnName.ToLower();
switch ( columnName.ToLower() )
{
case "vendornode":
case "vendorhomepath":
case "vendornodeid":
return true;
}
return false;
}
/// <summary>
/// Gets the object value
/// </summary>
/// <param name="columnName">Column name</param>
public object GetValue(string columnName)
{
switch ( columnName.ToLower() )
{
case "vendornode":
return VendorNode;
case "vendorhomepath":
return VendorHomePath;
case "vendornodeid":
return VendorNodeID;
default:
return null;
}
}
/// <summary>
/// Sets the field value
/// </summary>
/// <param name="columnName">Column name</param>
/// <param name="value">New value</param>
public bool SetValue(string columnName, object value)
{
switch ( columnName.ToLower() )
{
case "vendornode":
mVendorNode = (TreeNode) value;
return true;
default:
return false;
}
}
/// <summary>
/// Tries to get the value from the object
/// </summary>
/// <param name="columnName">Column name</param>
/// <param name="value">Returns the value</param>
public bool TryGetValue(string columnName, out object value)
{
switch ( columnName.ToLower() )
{
case "vendornode":
value = VendorNode;
return true;
case "vendorhomepath":
value = VendorHomePath;
return true;
case "vendornodeid":
value = VendorNodeID;
return true;
default:
value = null;
return false;
}
}
#endregion
#region "Methods"
public VendorInfo(UserInfo ui)
{
this.ui = ui;
}
private void LoadVendorsProfile()
{
// load document corresponding to vendor
NodeSelectionParameters parameters = new NodeSelectionParameters();
parameters.ClassNames = VENDOR_DOCUMENT_TYPE;
parameters.SelectOnlyPublished = true;
parameters.SelectSingleNode = true;
parameters.Where = "VendorID = " + ui.GetValue("UserVendorID");
TreeProvider provider = new TreeProvider();
TreeNode node = provider.SelectSingleNode(parameters);
if ( null != node )
{
// profile found, remember it
VendorNode = node;
}
else
{
// profile not found, log error
EventLogProvider.LogEvent(EventType.ERROR, "VendorInfo", "Vendor profile for user " + ui.UserID + " (" + ui.UserName + ") not found!");
}
}
#endregion
}