EchoTex_Payroll/HRM.DA/Service/Recruitement/ErJobUserService.cs
2024-10-14 10:01:49 +06:00

489 lines
15 KiB
C#

using HRM.BO;
using Ease.Core;
using Ease.Core.DataAccess;
using Ease.Core.DataAccess.SQL;
using Ease.Core.Model;
using Ease.Core.Utility;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Net;
using System.Threading;
using Azure.Core;
using Microsoft.AspNetCore.Http;
namespace HRM.DA
{
#region User Service
public class ErJobUserService : ServiceTemplate, IErJobUserService
{
private string _lastPasswords;
public ErJobUserService() { }
private void MapObject(ErJobUser oUser, DataReader oReader)
{
base.SetObjectID(oUser, oReader.GetInt32("UserID").Value);
oUser.Email = oReader.GetString("Email");
oUser.UserName = oReader.GetString("userName");
oUser.Mobile = oReader.GetString("Mobile");
oUser.Password = oReader.GetString("password",null);
oUser.UserFrom = (EnumUserFrom)Convert.ToInt32(oReader.GetInt32("UserFrom"));
oUser.Password = oReader.GetString("Password",string.Empty);
oUser.IsActive = oReader.GetBoolean("IsActive",false);
oUser.InActiveDate = oReader.GetDateTime("InActiveDate",DateTime.MinValue);
oUser.InActiveReason = oReader.GetString("InActiveReason",string.Empty);
oUser.CreatedDate = oReader.GetDateTime("CreatedDate").Value;
oUser.IsCVCompleted = oReader.GetBoolean("isCVCompleted", true,false);
this.SetObjectState(oUser, Ease.Core.ObjectState.Saved);
}
protected override T CreateObject<T>(DataReader oReader)
{
ErJobUser oUser = new ErJobUser();
MapObject(oUser, oReader);
return oUser as T;
}
#region Service implementation
//public List<User> Get(string LoginID, string Name, EnumUserType type)
//{
// TransactionContext tc = null;
// List<User> users = new List<User>();
// try
// {
// tc = TransactionContext.Begin();
// DataReader dr = new DataReader(UserDA.Get(tc, LoginID, Name, type));
// users = this.CreateObjects<User>(dr);
// dr.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// return users;
//}
public List<ErJobUser> GetAll()
{
TransactionContext tc = null;
List<ErJobUser> users = new List<ErJobUser>();
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ErJobUserDA.Get(tc));
users = this.CreateObjects<ErJobUser>(dr);
dr.Close();
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return users;
}
public ErJobUser Get(int userid)
{
ErJobUser oUser = null;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ErJobUserDA.Get(tc, userid));
if (oreader.Read())
{
oUser = this.CreateObject<ErJobUser>(oreader);
}
oreader.Close();
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return oUser;
}
#region PPIC SPECIFIC
public ErJobUser Get(string email)
{
ErJobUser oUser = null;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ErJobUserDA.GetByLoginIDByEmail(tc, email));
if (oreader.Read())
{
oUser = this.CreateObject<ErJobUser>(oreader);
}
oreader.Close();
tc.End();
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
return oUser;
}
public ErJobUser CheckEmailMobExist(string email,string mobile)
{
ErJobUser oUser = null;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ErJobUserDA.checkIfEmailOrMobileNoExist(tc, email, mobile));
if (oreader.Read())
{
oUser = this.CreateObject<ErJobUser>(oreader);
}
oreader.Close();
tc.End();
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
return oUser;
}
public ErJobUser GetByLoginIDAndPassword(string sLoginID, string sPassword)
{
ErJobUser oUser = null;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ErJobUserDA.GetByLoginIDAndPassword(tc, sLoginID, sPassword));
if (oreader.Read())
{
oUser = this.CreateObject<ErJobUser>(oreader);
}
oreader.Close();
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return oUser;
}
#region PasswordHistories
public string CheckPasswordHistory(string password, string lastPasswords, bool checkPassword, bool esp, bool dalp, short ndap)
{
string value = string.Empty;
if (checkPassword)
{
_lastPasswords = lastPasswords;
if (esp && !Global.StringFuncions.IsStrongPassword(password))
value = "Password must be at least 8 letters and have uppper & lower case letters and numbers.";
password = Global.CipherFunctions.EncryptByTDS(password);
if (dalp && actualPasswordHistories(dalp, ndap).Contains(password))
value = string.Format("You cannot use this password, because it was used in last {0} passwords.", ndap);
}
return value;
}
void CheckPasswordHistory(string password, bool esp, bool dalp, short ndap)
{
try
{
string tmpPassword = Global.CipherFunctions.DecryptByTDS(password);
if (esp && !Global.StringFuncions.IsStrongPassword(tmpPassword))
throw new Exception("Password must be at least 8 letters and have uppper & lower case letters and numbers.");
if (dalp && actualPasswordHistories(dalp, ndap).Contains(password))
throw new Exception(string.Format("You cannot use this password, because it was used in last {0} passwords.", ndap));
if (passwordHistories.Count >= 5)
passwordHistories.Dequeue();
passwordHistories.Enqueue(password);
}
catch (Exception e)
{
throw new Exception(e.Message, e);
}
}
void makePasswordHistory()
{
string[] phs = passwordHistories.ToArray();
if (phs.Length > 0)
_lastPasswords = string.Join(",", phs);
}
private Queue<string> _phs;
Queue<string> passwordHistories
{
get
{
if (_phs == null)
{
_phs = new Queue<string>();
if (!string.IsNullOrWhiteSpace(_lastPasswords))
{
string[] passwords = _lastPasswords.Split(',');
foreach (string item in passwords)
{
if (!_phs.Contains(item))
_phs.Enqueue(item);
}
}
}
return _phs;
}
}
List<string> actualPasswordHistories(bool dalp, short ndap)
{
List<string> pwds = new List<string>();
string[] pwdsHists = passwordHistories.ToArray();
if (dalp && ndap > 0 && pwdsHists.Length > 0)
{
for (int idx = pwdsHists.Length - 1; idx >= 0; idx--)
{
if (!pwds.Contains(pwdsHists[idx]) && pwds.Count < ndap)
pwds.Add(pwdsHists[idx]);
}
}
return pwds;
}
#endregion
#endregion
//public User GetByLogINID(string sName, EnumSystemType eSysType)
//{
// User oUser = null;
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(UserDA.GetByLogInID(tc, sName, eSysType));
// if (oreader.Read())
// {
// oUser = this.CreateObject<User>(oreader);
// }
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// return oUser;
//}
//public User Get(int employeeid, EnumUserType type)
//{
// User oUser = null;
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(UserDA.Get(tc, employeeid, type));
// if (oreader.Read())
// {
// oUser = this.CreateObject<User>(oreader);
// }
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// return oUser;
//}
//public ErJobUser GetByEmailAndPassword(string email, string sPassword)
//{
// ErJobUser oUser = null;
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(ErJobUserDA.GetByEmailAndPassword(tc, email, sPassword));
// if (oreader.Read())
// {
// oUser = this.CreateObject<User>(oreader);
// }
// oreader.Close();
// tc.End();
// if (oUser !=null)
// {
// UserLogInInfo login = new UserLogInInfo();
// login.UserID = oUser.ID;
// login.LoginTime = DateTime.Now;
// login.PCNumber = Environment.MachineName + " ," +
// System.Net.Dns.GetHostName() + " ," +
// Environment.GetEnvironmentVariable("COMPUTERNAME");
// Thread myNewThread = new Thread(() => SaveLoginfo(login));
// myNewThread.Start();
// }
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// return oUser;
//}
public int Save(ErJobUser oUser)
{
TransactionContext tc = null;
int id = 0;
try
{
tc = TransactionContext.Begin(true);
id = this.Save(tc, oUser);
tc.End();
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
return id;
}
public int Save(TransactionContext tc, ErJobUser oUser)
{
try
{
//oUser.Password = Ease.Core.Utility.Global.CipherFunctions.Encrypt("CeLiMiTeD.AdMIn", oUser.Password);
if (oUser.IsNew)
{
int id = tc.GenerateID("ERJOBUSER", "USERID");
base.SetObjectID(oUser, id);
ErJobUserDA.Insert(tc, oUser);
}
else
{
ErJobUserDA.Update(tc, oUser);
}
return oUser.ID;
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public void Delete(int id)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
UserDA.Delete(tc, id);
UserRoleDA.DeleteByUserID(tc, id);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
#endregion
}
#endregion
}