using System;
using System.Configuration;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace ASPNetPortal {
//*********************************************************************
//
// TabStripDetails Class
//
// Class that encapsulates the just the tabstrip details -- TabName, TabId and TabOrder
// -- for a specific Tab in the Portal
//
//*********************************************************************
public class TabStripDetails {
public int TabId;
public String TabName;
public int TabOrder;
public String AuthorizedRoles;
}
//*********************************************************************
//
// TabSettings Class
//
// Class that encapsulates the detailed settings for a specific Tab
// in the Portal
//
//*********************************************************************
public class TabSettings {
public int TabIndex;
public int TabId;
public String TabName;
public int TabOrder;
public String MobileTabName;
public String AuthorizedRoles;
public bool ShowMobile;
public ArrayList Modules = new ArrayList();
}
//*********************************************************************
//
// ModuleSettings Class
//
// Class that encapsulates the detailed settings for a specific Tab
// in the Portal
//
//*********************************************************************
public class ModuleSettings {
public int ModuleId;
public int ModuleDefId;
public int TabId;
public int CacheTime;
public int ModuleOrder;
public String PaneName;
public String ModuleTitle;
public String AuthorizedEditRoles;
public bool ShowMobile;
public String DesktopSrc;
public String MobileSrc;
}
//*********************************************************************
//
// PortalSettings Class
//
// This class encapsulates all of the settings for the Portal, as well
// as the configuration settings required to execute the current tab
// view within the portal.
//
//*********************************************************************
public class PortalSettings {
public int PortalId;
public String PortalName;
public bool AlwaysShowEditButton;
public ArrayList DesktopTabs = new ArrayList();
public ArrayList MobileTabs = new ArrayList();
public TabSettings ActiveTab = new TabSettings();
//*********************************************************************
//
// PortalSettings Constructor
//
// The PortalSettings Constructor encapsulates all of the logic
// necessary to obtain configuration settings necessary to render
// a Portal Tab view for a given request.
//
// These Portal Settings are stored within a SQL database, and are
// fetched below by calling the "GetPortalSettings" stored procedure.
// This stored procedure returns values as SPROC output parameters,
// and using three result sets.
//
//*********************************************************************
public PortalSettings(int tabIndex, int tabId) {
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("GetPortalSettings", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterPortalAlias = new SqlParameter("@PortalAlias", SqlDbType.NVarChar, 50);
parameterPortalAlias.Value = "p_default";
myCommand.Parameters.Add(parameterPortalAlias);
SqlParameter parameterTabId = new SqlParameter("@TabId", SqlDbType.Int, 4);
parameterTabId.Value = tabId;
myCommand.Parameters.Add(parameterTabId);
// Add out parameters to Sproc
SqlParameter parameterPortalID = new SqlParameter("@PortalID", SqlDbType.Int, 4);
parameterPortalID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterPortalID);
SqlParameter parameterPortalName = new SqlParameter("@PortalName", SqlDbType.NVarChar, 128);
parameterPortalName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterPortalName);
SqlParameter parameterEditButton = new SqlParameter("@AlwaysShowEditButton", SqlDbType.Bit, 1);
parameterEditButton.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterEditButton);
SqlParameter parameterTabName = new SqlParameter("@TabName", SqlDbType.NVarChar, 50);
parameterTabName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterTabName);
SqlParameter parameterTabOrder = new SqlParameter("@TabOrder", SqlDbType.Int, 4);
parameterTabOrder.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterTabOrder);
SqlParameter parameterMobileTabName = new SqlParameter("@MobileTabName", SqlDbType.NVarChar, 50);
parameterMobileTabName.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterMobileTabName);
SqlParameter parameterAuthRoles = new SqlParameter("@AuthRoles", SqlDbType.NVarChar, 256);
parameterAuthRoles.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterAuthRoles);
SqlParameter parameterShowMobile = new SqlParameter("@ShowMobile", SqlDbType.Bit, 1);
parameterShowMobile.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterShowMobile);
// Open the database connection and execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader();
// Read the first resultset -- Desktop Tab Information
while(result.Read()) {
TabStripDetails tabDetails = new TabStripDetails();
tabDetails.TabId = (int) result["TabId"];
tabDetails.TabName = (String) result["TabName"];
tabDetails.TabOrder = (int) result["TabOrder"];
tabDetails.AuthorizedRoles = (String) result["AuthorizedRoles"];
this.DesktopTabs.Add(tabDetails);
}
if (this.ActiveTab.TabId == 0) {
this.ActiveTab.TabId = ((TabStripDetails) this.DesktopTabs[0]).TabId;
}
// Read the second result -- Mobile Tab Information
result.NextResult();
while(result.Read()) {
TabStripDetails tabDetails = new TabStripDetails();
tabDetails.TabId = (int) result["TabId"];
tabDetails.TabName = (String) result["MobileTabName"];
tabDetails.AuthorizedRoles = (String) result["AuthorizedRoles"];
this.MobileTabs.Add(tabDetails);
}
// Read the third result -- Module Tab Information
result.NextResult();
while(result.Read()) {
ModuleSettings m = new ModuleSettings();
m.ModuleId = (int) result["ModuleID"];
m.ModuleDefId = (int) result["ModuleDefID"];
m.TabId = (int) result["TabID"];
m.PaneName = (String) result["PaneName"];
m.ModuleTitle = (String) result["ModuleTitle"];
m.AuthorizedEditRoles = (String) result["AuthorizedEditRoles"];
m.CacheTime = (int) result["CacheTime"];
m.ModuleOrder = (int) result["ModuleOrder"];
m.ShowMobile = (bool) result["ShowMobile"];
m.DesktopSrc = (String) result["DesktopSrc"];
m.MobileSrc = (String) result["MobileSrc"];
this.ActiveTab.Modules.Add(m);
}
// Now read Portal out params
result.NextResult();
this.PortalId = (int) parameterPortalID.Value;
this.PortalName = (String) parameterPortalName.Value;
this.AlwaysShowEditButton = (bool) parameterEditButton.Value;
this.ActiveTab.TabIndex = tabIndex;
this.ActiveTab.TabId = tabId;
this.ActiveTab.TabOrder = (int) parameterTabOrder.Value;
this.ActiveTab.MobileTabName = (String) parameterMobileTabName.Value;
this.ActiveTab.AuthorizedRoles = (String) parameterAuthRoles.Value;
this.ActiveTab.TabName = (String) parameterTabName.Value;
this.ActiveTab.ShowMobile = (bool) parameterShowMobile.Value;
myConnection.Close();
}
//*********************************************************************
//
// GetModuleSettings Static Method
//
// The PortalSettings.GetModuleSettings Method returns a hashtable of
// custom module specific settings from the database. This method is
// used by some user control modules (Xml, Image, etc) to access misc
// settings.
//
//*********************************************************************
public static Hashtable GetModuleSettings(int moduleId) {
// Get Settings for this module from the database
Hashtable _settings = new Hashtable();
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["connectionString"]);
SqlCommand myCommand = new SqlCommand("GetModuleSettings", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterModuleId = new SqlParameter("@ModuleID", SqlDbType.Int, 4);
parameterModuleId.Value = moduleId;
myCommand.Parameters.Add(parameterModuleId);
// Execute the command
myConnection.Open();
SqlDataReader dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read()) {
_settings[dr.GetString(0)] = dr.GetString(1);
}
dr.Close();
return _settings;
}
}
}