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

|