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
}
}