using System;
using System.Collections.Generic;
using System.Data;
using Mesnac.Codd;
using Mesnac.Codd.Session;
namespace Mesnac.Basic
{
///
/// 登录用户信息类
/// 创建人:李毓明
/// 创建时间:2013-7-23
/// 说明:采用单例模式
///
public class UserInfo
{
///
/// 重新登录事件
///
public event EventHandler OnReLogin;
private string _userId;
private string _userName;
private string _realName;
private string _roleId;//未登录时为-1,预留超级用户为-99
private DateTime _loginTime;
public const bool MustLogin=false;
private List _purviewList = null; //当前用户的权限项列表
private List _allFormPurview = null; //所有权限项
#region 单例模式
private static UserInfo user=null;
public static UserInfo Instance
{
get
{
if ( user == null )
{
user = new UserInfo();
}
return user;
}
}
#endregion
public UserInfo()
: this( "-1" , "--" , "--" , "-1" )
{
}
public UserInfo( string userId , string userName, string realName , string roleId )
{
this._userId = userId;
this._userName = userName;
this._realName = realName;
this._roleId = roleId;
this._loginTime = DateTime.Now;
}
public string UserID
{
get
{
return _userId;
}
set
{
_userId = value;
}
}
public string UserName
{
get
{
return _userName;
}
set
{
_userName = value;
}
}
public string RealName
{
get
{
return _realName;
}
set
{
_realName = value;
}
}
public string RoleID
{
get
{
return _roleId;
}
set
{
_roleId = value;
if ( _roleId.Equals( "-99" ) )
{
_userName = "mesnac";
_realName = "超级用户";
}
}
}
public DateTime LoginTime
{
get
{
return _loginTime;
}
set
{
_loginTime = DateTime.Now;
}
}
public DataTable GetPurview()
{
DataTable dt = new DataTable();
DbHelper dbhelper = DataSourceFactory.Instance.GetDbHelper( DataSourceFactory.MCDbType.Local );
if ( dbhelper != null )
{
dbhelper.ClearParameter();
dbhelper.CommandType = CommandType.Text;
//dbhelper.CommandText = "SELECT DISTINCT TA.PurviewID,TB.FormName,TB.FormText,TB.FormType FROM BasRolePurview TA INNER JOIN BasForm TB ON TA.PurviewID=TB.ObjID AND TA.PurviewType=TB.FormType WHERE "+_roleId+" IN(-99,TA.RoleID) AND TB.DeleteFlag='0'";
dbhelper.CommandText = "SELECT DISTINCT TA.PermissionItemGUID,TB.FormName,TB.FormText,TB.FormType FROM BasRolePermission TA INNER JOIN BasForm TB ON TA.PermissionItemGUID=TB.GUID AND TA.PermissionType=TB.FormType WHERE '" + _roleId + "' IN('-99',TA.RoleGUID) AND TB.DeleteFlag='0'";
dt = dbhelper.ToDataTable();
}
return dt;
}
///
/// 获取权限项列表
///
public List AllFormPurview
{
get
{
this.RefreshAllFormPurview();
return this._allFormPurview;
}
}
///
/// 刷新权限项列表
///
public void RefreshAllFormPurview()
{
if (this._allFormPurview == null)
{
this._allFormPurview = new List();
}
this._allFormPurview.Clear();
DataTable dt = new DataTable();
DbHelper dbhelper = DataSourceFactory.Instance.GetDbHelper(DataSourceFactory.MCDbType.Local);
if (dbhelper != null)
{
dbhelper.ClearParameter();
dbhelper.CommandType = CommandType.Text;
//dbhelper.CommandText = "SELECT [ObjID],[FormName],[FormText],[FormType],[DeleteFlag] FROM [BasForm] where DeleteFlag = 0";
dbhelper.CommandText = "SELECT [GUID],[FormName],[FormText],[FormType],[DeleteFlag] FROM [BasForm] where DeleteFlag = 0";
dt = dbhelper.ToDataTable();
}
if (dt != null)
{
foreach (DataRow row in dt.Rows)
{
this._allFormPurview.Add(row["FormName"] as string);
}
}
}
///
/// 获取当前用户的权限项列表
///
public List PurviewList
{
get
{
this.RefreshPurview();
return this._purviewList;
}
}
///
/// 刷新当前用户权限项
///
public void RefreshPurview()
{
if (this._purviewList == null)
{
this._purviewList = new List();
}
this._purviewList.Clear();
DataTable table = this.GetPurview();
if (table != null)
{
foreach (DataRow row in table.Rows)
{
this._purviewList.Add(row["FormName"] as string);
}
}
}
///
/// 触发重新登录事件
///
public void TriggerReLoginEvent()
{
if (this.OnReLogin != null)
{
this.OnReLogin(this, System.EventArgs.Empty);
}
}
}
}