2023-10-03 10:14:54 -07:00

213 lines
7.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using Dapper;
using Fab2ApprovalSystem.Models;
using System.Text;
using Fab2ApprovalSystem.Misc;
namespace Fab2ApprovalSystem.DMO
{
public class UserAccountDMO
{
private IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
//public List<LoginModel> GetUser(string loginID)
//{
// StringBuilder sql = new StringBuilder();
// sql.Append("SELECT * FROM Users WHERE LoginID = '" + loginID + "'");
// return this.db.Query<LoginModel>(sql.ToString()).ToList();
//}
public IEnumerable<LoginModel> GetAllUsers()
{
StringBuilder sql = new StringBuilder();
//sql.Append("SELECT U.FirstName + ' ' + U.LastName AS FullName, U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName, U.* ");
//sql.Append("FROM Users U LEFT JOIN Users U1 ");
//sql.Append("ON U.UserID = U1.DelegatedTo ORDER BY FirstName ");
//sql.Append("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users ORDER BY FirstName ");
sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName ");
sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
sql.Append("ORDER BY FirstName ");
return this.db.Query<LoginModel>(sql.ToString()).ToList();
}
public IEnumerable<LoginModel> GetAllActiveUsers()
{
StringBuilder sql = new StringBuilder();
//sql.Append("SELECT U.FirstName + ' ' + U.LastName AS FullName, U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName, U.* ");
//sql.Append("FROM Users U LEFT JOIN Users U1 ");
//sql.Append("ON U.UserID = U1.DelegatedTo ORDER BY FirstName ");
//sql.Append("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users ORDER BY FirstName ");
sql.Append(" SELECT U.FirstName + ' ' + U.LastName AS FullName, U.* , U1.FirstName + ' ' + U1.LastName AS DelegatedToFullName ");
sql.Append("FROM Users U LEFT JOIN Users U1 ON U.DelegatedTo = U1.UserID ");
sql.Append("WHERE U.IsActive = 1 ");
sql.Append("ORDER BY FirstName ");
return this.db.Query<LoginModel>(sql.ToString()).ToList();
}
public LoginModel GetUser(string loginID)
{
//StringBuilder sql = new StringBuilder();
//sql.Append("SELECT * FROM Users WHERE LoginID = '" + loginID + "'");
//return this.db.Query<LoginModel>(sql.ToString()).SingleOrDefault();
return this.db.Query<LoginModel>("SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE LoginID = @loginID AND IsActive = 1 ", new { loginID = loginID }).Take(1).SingleOrDefault();
}
public LoginModel GetUserByID(int userID)
{
return this.db.Query<LoginModel>(
"SELECT FirstName + ' ' + LastName AS FullName, * FROM Users WHERE UserID = @UserID ",
new { UserID = userID }).Take(1).SingleOrDefault();
}
public string GetUserEmailByID(string userID)
{
return this.db.Query<string>(
"SELECT Email FROM Users WHERE UserID = @UserID ",
new { UserID = userID }).Take(1).SingleOrDefault();
}
/// <summary>
///
/// </summary>
/// <param name="model"></param>
internal void UpdateUser(LoginModel model)
{
string sql;
sql = "UPDATE Users SET LoginID = @LoginID, FirstName = @FirstName, LastName = @LastName, Email = @Email, IsActive = @IsActive, IsAdmin = @IsAdmin WHERE UserID = @UserID";
var parameters = new DynamicParameters();
parameters.Add("@UserID", model.UserID);
parameters.Add("@LoginID", model.LoginID);
parameters.Add("@FirstName", model.FirstName);
parameters.Add("@LastName", model.LastName );
parameters.Add("@Email", model.Email);
parameters.Add("@IsAdmin", model.IsAdmin);
parameters.Add("@IsActive", model.IsActive);
this.db.Execute(sql, parameters);
}
/// <summary>
///
/// </summary>
/// <param name="model"></param>
internal void DeleteUser(LoginModel model)
{
string sql;
//sql = "DELETE Users WHERE UserID = @UserID";
sql = "UPDATE Users SET IsActive = 0 WHERE UserID = @UserID";
var parameters = new DynamicParameters();
parameters.Add("@UserID", model.UserID);
this.db.Execute(sql, parameters);
}
/// <summary>
///
/// </summary>
/// <param name="model"></param>
internal void InsertUser(LoginModel model)
{
//string sql;
//sql = "INSERT Users (LoginID, FirstName, LastName, IsAdmin) VALUES (@LoginID, @FirstName, @LastName, @IsAdmin )";
var parameters = new DynamicParameters();
parameters.Add("@UserID", model.UserID, DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@LoginID", model.LoginID);
parameters.Add("@FirstName", model.FirstName);
parameters.Add("@LastName", model.LastName);
parameters.Add("@Email", model.Email);
parameters.Add("@IsAdmin", model.IsAdmin);
this.db.Execute("InsertUsers", parameters, commandType: CommandType.StoredProcedure);
int userid = parameters.Get<int>("@UserID");
model.UserID = userid;
}
/// <summary>
///
/// </summary>
/// <param name="userID"></param>
/// <param name="hasITARAccess"></param>
internal void UpdateInsertITARAccess(string userID, string hasITARAccess)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID);
parameters.Add("@HasITARAccess", hasITARAccess);
this.db.Execute("ITARAccessUpdateInsert", parameters, commandType: CommandType.StoredProcedure);
}
/// <summary>
///
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
internal bool GetITARAccess(int userID)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID);
var results = this.db.Query<string>(
"SELECT HasITARAccess FROM SAMUsers, Users WHERE Users.UserID = @UserID AND SAMUsers.UserID = Users.LoginID",
parameters, commandType: CommandType.Text);
if ((results != null) && (results.Count() > 0) && (results.First() == "1"))
return true;
return false;
}
/// <summary>
///
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
internal bool GetEC_AD_Users(string userID)
{
var parameters = new DynamicParameters();
parameters.Add("@UserID", userID);
var results = this.db.Query<string>(
"SELECT UserID FROM EC_AD_Users WHERE UserID = @UserID",
parameters, commandType: CommandType.Text);
if ((results != null) && (results.Count() > 0))
return true;
return false;
}
internal void ProcessOoO()
{
var parameters = new DynamicParameters();
this.db.Execute("ProcesOOOEnableStatus", commandType: CommandType.StoredProcedure);
}
internal void ExpireOoO()
{
var parameters = new DynamicParameters();
this.db.Execute("ProcesOOOExpiration", commandType: CommandType.StoredProcedure);
}
}
}