using System.Collections.Generic; using System.Linq; using Neo.Afx.ComponentModel; namespace Neo.Afx.Admin.Security { /// /// Afx admin database /// public class SecurityDatabase : Database { /// /// Constructor /// public SecurityDatabase() : base(new AfxAdminSecurityContext()) { } #region GetUsers /// /// User Lookup /// /// IEmumarable List of Users public IEnumerable GetUsers() { return (from g in Context.Vw_Users select g).Where(a => a.UserID != 1 /*system user*/).OrderBy(a => a.KnownAs).ToList(); } #endregion #region GetUsers /// /// User Lookup /// /// IEmumarable List of Users public IEnumerable GetUsers(short roleID) { return Context.Pr_GetUsersInRoles(roleID.ToString()); } #endregion #region ResetUserPassword /// /// Resets the user password. /// /// The user id. /// Name of the user. /// The new password. /// public bool ResetUserPassword(long userId, string userName, string newPassword) { try { Context.Pr_SaveUserPassword(userId, userId, userName, "Forms", newPassword, false); } catch { return false; } return true; } #endregion #region GetApplications /// /// Applications Lookup /// /// IEmumarable List of Applications public IEnumerable GetApplications() { return (from r in Context.Applications select r).ToList(); } #endregion #region GetUserStatus /// /// UserStates Lookup /// /// IEmumarable List of User States public IEnumerable GetUserStatus() { return (from s in Context.UserStatus select s).ToList(); } #endregion #region GetRoles /// /// Get all data from table. /// /// List of objects public List GetRoles() { return (from item in Context.Roles where item.IsCancelled == false select item).ToList(); } /// /// Get data from table based on count. /// /// Restricts amount returned items in the collection. /// List of objects. public IEnumerable GetRoles(int count) { return (from item in Context.Roles where item.IsCancelled == false select item).Take(count).ToList(); } #endregion #region GetUserRoles /// /// Get all data from table. /// /// List of objects public List GetUserRoles(long userID) { var user = Context.Users.Include("Roles").Where(a => a.UserID == userID).FirstOrDefault(); return user.Roles.ToList(); } #endregion #region GetUserSettings /// /// Get all data from table. /// /// List of objects public List GetUserSettings(long userID) { var temp = (from item in Context.UserSettings where item.IsCancelled == false && item.UserID == userID select item).ToList(); return temp; } #endregion #region ClearUserSettings /// /// Clears the user settings. /// /// The user ID. public void ClearUserSettings(long userID) { Context.Pr_ClearUserSettings(userID); } #endregion #region GetSecurables /// /// Get all data from table. /// /// List of objects public IEnumerable GetSecurables() { return (from item in Context.Securables where item.IsCancelled == false select item).ToList(); } /// /// Get a list of all securables linked to a specific role /// /// /// public IEnumerable GetRoleSecurables(short roleID) { return Context.Pr_GetRoleSecurables(roleID).ToList(); } /// /// Get data from table based on count. /// /// Restricts amount returned items in the collection. /// List of objects. public IEnumerable Securables(int count) { return (from item in Context.Securables where item.IsCancelled == false select item).Take(count).ToList(); } #endregion #region Get Objects With Related Object Collections /// /// Get User and Roles /// /// User Object With Roles Collection, based on parsed "userID" public User GetUserByID(long? userID) { if(!userID.HasValue) { return null; } return (from s in Context.Users .Include("Roles") .Include("UserSettings") where s.UserID == userID.Value select s).FirstOrDefault(); } /// /// Get User and Roles /// /// Role Object With Securables Collection, based on parsed "roleID" public Role GetRoleByID(long roleID) { return (from s in Context.Roles.Include("RoleSecurables") where s.RoleID == roleID select s).ToList()[0]; } #endregion #region GetActiveUsers /// /// Get a list of all active users /// /// /// public List GetActiveUsers(long userID) { return Context.Pr_GetActiveUsers(userID).ToList(); } #endregion #region GetUser /// /// Get a full user object /// /// /// /// public User GetUser(long returnUserID, long userID) { if (returnUserID == -1) { return new User() { UserID = -1, UserStatusID = 1 /*active*/ }; } else { return Context.Pr_GetUser(returnUserID, userID).FirstOrDefault(); } } #endregion #region GetUserViewOnly /// /// Get a view with basic user details /// /// /// public Vw_User GetUserViewOnly(long returnUserID) { return Context.Vw_Users.Where(a => a.UserID == returnUserID).FirstOrDefault(); } #endregion #region SaveUser /// /// Saves a user's details /// /// /// /// /// /// /// /// /// /// /// public void SaveUser(long userID, string knownAs, string lastName, string firstName, string email, string ntAccount, string cell, long officeLocationID, long? userProfileDocID, long updatedByID) { Context.Pr_SaveUser(userID, knownAs, lastName, firstName, email, ntAccount, cell, officeLocationID, userProfileDocID, updatedByID); } #endregion #region UpdateUserStatus /// /// Updates a user's status /// /// /// /// /// public void UpdateUserStatus(long updatedByID, string comments, long userID, short userStatusID) { Context.Pr_UserStatusUpdate(updatedByID, comments, userID, userStatusID); } #endregion #region SaveUserRoles /// /// Updates a user's security roles /// public void SaveUserRoles(long userID, string rolesCsv, long updatedByID) { Context.Pr_SaveUserRoles(userID, rolesCsv, updatedByID); } #endregion #region SaveUserSetting /// /// Updates a user's settings /// public void SaveUserSetting(List settings, long userID, long updatedByID) { foreach (var setting in settings) { Context.Pr_SaveUserSettings(userID, setting.SettingName, setting.SettingValue, updatedByID); } } #endregion #region SaveUserFingerPrint /// /// Updates a user's fingerprint /// public void SaveUserFingerPrint(byte[] fingerPrint, long userID, long updatedByID) { Context.Pr_SaveUserFingerprint(userID, fingerPrint, updatedByID); } #endregion #region SaveUserFingerPrintRequest /// /// Save token details on finger print request /// public void SaveUserFingerPrintRequest(long userID, bool createToken, long updatedByID) { Context.Pr_SaveUserFingerPrintRequestToken(userID, createToken, updatedByID); } #endregion #region SaveUserFingerPrintRequest /// /// Save token details on finger print request /// public string ValidateFingerPrintRequest(string token) { return Context.Pr_ValidateFingerPrintRequestToken(token).FirstOrDefault(); } #endregion #region SaveUserFingerPrintRequest /// /// Get user record by token /// public User GetUserByRequestToken(string token) { return Context.Pr_GetUserByFingerPrintRequestToken(token).FirstOrDefault(); } #endregion #region GetUserWorkflowBuddies /// /// Gets a list of workflow buddies for a user /// public List GetUserWorkflowBuddies(long userID) { return Context.Pr_GetUserWorkflowBuddies(userID).ToList(); } #endregion #region DeleteUserWorkflowBuddy /// /// Deletes a workflow buddy for a user /// public void DeleteUserWorkflowBuddy(long workflowID, long userID, long buddyUserID, long updatedByID) { Context.Pr_DeleteUserWorkflowBuddy(workflowID, userID, buddyUserID, updatedByID); } #endregion #region SaveUserWorkflowBuddy /// /// Deletes a workflow buddy for a user /// public void SaveUserWorkflowBuddy(long workflowID, long userID, long buddyUserID, long updatedByID) { Context.Pr_SaveUserWorkflowBuddy(workflowID, userID, buddyUserID, updatedByID); } #endregion #region SaveRoleSecurables /// /// Save a role's list of securables /// public void SaveRoleSecurables(short roleID, string securables, long userID) { Context.Pr_SaveRoleSecurables(roleID, securables, userID); } #endregion } }