

Java技术
2005: 03 04 05 06 07 08
09 10 11 12
2006: 01 02
Asp.net
2005: 07 08 09 10 11 12
2006: 01 02

Imports System
Imports System.Data
Imports System.Configuration
Public Class ttuser
´****************************************************************************
´
´ TTUser Class
´
´ The TTUser class represents a Time Tracker user, including their unique
´ userID and UserName. Custom role information retrieved from the database
´ is also stored in the TTUser class.
´
´****************************************************************************
Public Const UserRoleNone As String = "0"
Public Const UserRoleAdministrator As String = "1"
Public Const UserRoleProjectManager As String = "2"
Public Const UserRoleConsultant As String = "3"
Public Const UserRoleAdminPMgr As String = UserRoleAdministrator + "," + UserRoleProjectManager
Public Const UserRolePMgrConsultant As String = UserRoleProjectManager + "," + UserRoleConsultant
Private _displayName As String = String.Empty
Private _firstName As String = String.Empty
Private _lastName As String = String.Empty
Private _password As String = String.Empty
Private _role As String = UserRoleNone
Private _roleName As String
Private _userID As Integer
Private _userName As String
Public Sub New()
End Sub ´New
Public Sub New(ByVal UserName As String)
_userName = UserName
End Sub ´New
Public Sub New(ByVal UserID As Integer, ByVal UserName As String, ByVal Name As String, ByVal Role As String)
_userID = UserID
_userName = UserName
_displayName = Name
_role = Role
End Sub ´New
Public Property DisplayName() As String
Get
Return _displayName
End Get
Set(ByVal Value As String)
_displayName = Value
End Set
End Property
Public Property FirstName() As String
Get
Return _firstName
End Get
Set(ByVal Value As String)
_firstName = Value
End Set
End Property
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal Value As String)
_lastName = Value
End Set
End Property
Public Property Name() As String
Get
Return _displayName
End Get
Set(ByVal Value As String)
_displayName = Value
End Set
End Property
Public Property Password() As String
Get
Return _password
End Get
Set(ByVal Value As String)
_password = Value
End Set
End Property
Public Property Role() As String
Get
Return _role
End Get
Set(ByVal Value As String)
_role = Value
End Set
End Property
Public Property RoleName() As String
Get
Return _roleName
End Get
Set(ByVal Value As String)
_roleName = Value
End Set
End Property
Public Property UserID() As Integer
Get
Return _userID
End Get
Set(ByVal Value As Integer)
_userID = Value
End Set
End Property
Public Property UserName() As String
Get
Return _userName
End Get
Set(ByVal Value As String)
_userName = Value
End Set
End Property
´*********************************************************************
´
´ GetAllUsers Static Method
´ Retrieves a list of all users.
´
´*********************************************************************
Public Shared Function GetAllUsers(ByVal userID As Integer) As UsersCollection
Return GetUsers(userID, ttuser.UserRoleAdministrator)
End Function ´GetAllUsers
´*********************************************************************
´
´ GetUsers Static Method
´ Retrieves a list of users based on the specified userID and role.
´ The list returned is restricted by role. For instance, users with
´ the role of Administrator can see all users, while users with the
´ role of Consultant can only see themselves.
´
´*********************************************************************
Public Shared Function GetUsers(ByVal userID As Integer, ByVal role As String) As UsersCollection
Dim firstName As String = String.Empty
Dim lastName As String = String.Empty
Dim ds As DataSet = SqlHelper.ExecuteDataset(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_ListUsers", userID, Convert.ToInt32(role))
Dim users As New UsersCollection
´ Separate Data into a collection of Users.
Dim r As DataRow
For Each r In ds.Tables(0).Rows
Dim usr As New ttuser
usr.UserName = r("UserName").ToString()
usr.Role = r("RoleID").ToString()
usr.RoleName = r("RoleName").ToString()
usr.UserID = Convert.ToInt32(r("UserID"))
usr.Name = GetDisplayName(usr.UserName, firstName, lastName)
usr.FirstName = firstName
usr.LastName = lastName
users.Add(usr)
Next r
Return users
End Function ´GetUsers
´*********************************************************************
´
´ GetDisplayName static method
´ Gets the user´s first and last name from the specified TTUser account source, which is
´ set in Web.confg.
´
´*********************************************************************
Public Shared Function GetDisplayName(ByVal userName As String, ByRef firstName As String, ByRef lastName As String) As String
Dim displayName As String = String.Empty
Dim dbName As String = String.Empty
´ The DirectoryHelper class will attempt to get the user´s first
´ and last name from the specified account source.
DirectoryHelper.FindUser(userName, firstName, lastName)
´ If the first and last name could not be retrieved, return the TTUserName.
If firstName.Length > 0 Or lastName.Length > 0 Then
displayName = firstName + " " + lastName
Else
dbName = GetDisplayNameFromDB(userName)
If Not dbName Is String.Empty Then
displayName = dbName
Else
displayName = userName
End If
End If
Return displayName
End Function ´GetDisplayName
Public Shared Function GetDisplayNameFromDB(ByVal userName As String) As String
Dim displayName As String = String.Empty
displayName = CStr(SqlHelper.ExecuteScalar(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_GetUserDisplayName", userName))
Return displayName
End Function
´*********************************************************************
´
´ ListManagers Static Method
´ Retrieves a list of users with the role of Project Manager.
´
´*********************************************************************
Public Shared Function ListManagers() As UsersCollection
Dim firstName As String = String.Empty
Dim lastName As String = String.Empty
Dim ds As DataSet = SqlHelper.ExecuteDataset(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), CommandType.StoredProcedure, "TT_ListManagers")
Dim managersArray As New UsersCollection
´ Separate Data into a list of collections.
Dim r As DataRow
For Each r In ds.Tables(0).Rows
Dim usr As New ttuser
usr.UserName = r("UserName").ToString()
usr.Role = r("RoleID").ToString()
usr.UserID = Convert.ToInt32(r("UserID"))
usr.Name = GetDisplayName(usr.UserName, firstName, lastName)
usr.FirstName = firstName
usr.LastName = lastName
managersArray.Add(usr)
Next r
Return managersArray
End Function ´ListManagers
´*********************************************************************
´
´ Remove static method
´ Removes a user from database
´
´*********************************************************************
Public Shared Sub Remove(ByVal userID As Integer)
SqlHelper.ExecuteNonQuery(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_DeleteUser", userID)
End Sub ´Remove
´*********************************************************************
´
´ Load method
´ Retrieve user information from the data access layer
´ returns True if user information is loaded successfully, false otherwise.
´
´*********************************************************************
Public Function Load() As Boolean
´ Get the user´s information from the database
Dim ds As DataSet = SqlHelper.ExecuteDataset(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_GetUserByUserName", _userName)
If ds.Tables(0).Rows.Count < 1 Then
Return False
End If
Dim dr As DataRow = ds.Tables(0).Rows(0)
_userID = Convert.ToInt32(dr("UserID"))
_userName = dr("UserName").ToString()
_role = dr("RoleID").ToString()
_password = IIf(dr("Password") Is DBNull.Value, "", dr("Password"))
_displayName = GetDisplayName(_userName, _firstName, _lastName)
Return True
End Function ´Load
´*********************************************************************
´
´ Save method
´ Add or update user information in the database depending on the TT_UserID.
´ Returns True if saved successfully, false otherwise.
´
´*********************************************************************
Public Overloads Function Save() As Boolean
Dim isUserFound As Boolean = False
Dim isUserActiveManager As Boolean = True
Return Save(False, isUserFound, isUserActiveManager)
End Function ´Save
´*********************************************************************
´
´ Save method
´ Add or update user information in the database depending on the TTUserID.
´ Returns True if saved successfully, false otherwise.
´
´*********************************************************************
Public Overloads Function Save(ByVal checkUsername As Boolean, ByRef isUserFound As Boolean, ByRef isUserActiveManager As Boolean) As Boolean
´ Determines whether object needs update or to be inserted.
If _userID = 0 Then
Return Insert(checkUsername, isUserFound)
Else
If _userID > 0 Then
Return Update(isUserActiveManager)
Else
_userID = 0
Return False
End If
End If
End Function ´Save
Private Function Insert(ByVal checkUsername As Boolean, ByRef isUserFound As Boolean) As Boolean
Dim firstName As String = String.Empty
Dim lastName As String = String.Empty
isUserFound = False
If ConfigurationSettings.AppSettings(Global.CfgKeyUserAcctSource) <> "None" Then
´ Check to see if the user is in the NT SAM or Active Directory before inserting them
´ into the Time Tracker database. If a first or last name is returned, the user exists and
´ can be inserted into the Time Tracker database.
If checkUsername Then
ttuser.GetDisplayName(_userName, firstName, lastName)
isUserFound = firstName <> String.Empty Or lastName <> String.Empty
End If
Else
checkUsername = False
isUserFound = True
End If
If checkUsername And isUserFound Or Not checkUsername Then
_userID = Convert.ToInt32(SqlHelper.ExecuteScalar(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_AddUser", _userName, _password, _displayName, Convert.ToInt32(_role)))
isUserFound = True
End If
Return _userID > 0
End Function ´Insert
Private Function Update(ByRef isUserActiveManger As Boolean) As Boolean
´ if new user role is a consultant, check if user is a active manager of one or more project. if so, no update is applied
If _role = UserRoleConsultant Then
If Convert.ToInt32(SqlHelper.ExecuteScalar(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_GetManagerProjectCount", _userID)) > 0 Then
isUserActiveManger = True
Return False
Else
isUserActiveManger = False
End If
End If
Return 0 < Convert.ToInt32(SqlHelper.ExecuteScalar(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_UpdateUser", _userID, _userName, _password, _displayName, Convert.ToInt32(_role)))
End Function ´Update
´*********************************************************************
´
´ UsersDB.Login() Method
´
´ The Login method validates a email/password pair against credentials
´ stored in the users database. If the email/password pair is valid,
´ the method returns user´s name.
´
´ Other relevant sources:
´ + UserLogin Stored Procedure
´
´*********************************************************************
Public Function Login(ByVal email As String, ByVal password As String) As String
Dim userName As String
userName = CStr(SqlHelper.ExecuteScalar(ConfigurationSettings.AppSettings(Global.CfgKeyConnString), "TT_UserLogin", email, password))
If Not userName Is Nothing Or userName Is "" Then
Return userName
Else
Return String.Empty
End If
End Function
End Class