EchoTex_Payroll/HRM.BO/Workflow/WFMovementTran.cs

861 lines
28 KiB
C#
Raw Permalink Normal View History

2024-10-14 10:01:49 +06:00

using Ease.Core.DataAccess;
using Ease.Core.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
namespace HRM.BO
{
#region WFMovementTran
public class WFFlowHistory
{
public int tranID { get; set; }
public int uniqueNumber { get; set; }
public DateTime tranDate { get; set; }
public int employeeID { get; set; }
public string employeeNo { get; set; }
public string employeeName { get; set; }
public string tranStatusString { get; set; }
public DateTime? StatusUpdateDate { get; set; }
public EnumwfStatus status { get; set; }
public string remarks { get; set; }
public string description { get; set; }
}
public class WFMovementTran : ObjectTemplate//, IworkflowInterface
{
#region Constructor
public WFMovementTran()
{
_WFMovementTranID = 0;
_FromEmployeeID = 0;
_FromNodeID = 0;
_WFTypeID = 0;
_WFRuleID = 0;
_ObjectID = 0;
_IsActive = true;
_Senttime = DateTime.Now;
_Status = EnumwfStatus.Received;
_Uniquenumber = 0;
_Remarks = "";
_Tier = 1;
_objectDescription = "";
}
#endregion
#region Property(s)
#region Property WFMovementTranID : ID
private int _WFMovementTranID;
public int WFMovementTranID
{
get { return _WFMovementTranID; }
set { _WFMovementTranID = value; }
}
#endregion
#region Property FromEmployeeID : int
private int _FromEmployeeID;
public int FromEmployeeID
{
get { return _FromEmployeeID; }
set { _FromEmployeeID = value; }
}
#endregion
#region FromNodeID : int
private int _FromNodeID;
public int FromNodeID
{
get { return _FromNodeID; }
set { _FromNodeID = value; }
}
#endregion
#region Property UserID : int
private int _userID;
public int UserID
{
get { return _userID; }
set { _userID = value; }
}
#endregion
#region Property WFSetupID : int
private int _WFTypeID;
public int WFTypeID
{
get { return _WFTypeID; }
set { _WFTypeID = value; }
}
#endregion
#region Property WFRuleID : int
private int _WFRuleID;
public int WFRuleID
{
get { return _WFRuleID; }
set { _WFRuleID = value; }
}
#endregion
#region Property ObjectID : int
private int _ObjectID;
public int ObjectID
{
get { return _ObjectID; }
set { _ObjectID = value; }
}
#endregion
#region Property IsActive : bool
private bool _IsActive;
public bool IsActive
{
get { return _IsActive; }
set { _IsActive = value; }
}
#endregion
#region Property Senttime : DateTime
private DateTime _Senttime;
public DateTime Senttime
{
get { return _Senttime; }
set { _Senttime = value; }
}
#endregion
#region Property Status : Enum
private EnumwfStatus _Status;
public EnumwfStatus Status
{
get { return _Status; }
set { _Status = value; }
}
#endregion
#region Property Uniquenumber : int
private int _Uniquenumber;
public int UniqueNumber
{
get { return _Uniquenumber; }
set { _Uniquenumber = value; }
}
#endregion
#region Property Remarks : string
private string _Remarks;
public string Remarks
{
get { return _Remarks; }
set { _Remarks = value; }
}
#endregion
#region Tier : int
private int _Tier;
public int Tier
{
get { return _Tier; }
set { _Tier = value; }
}
#endregion
#region Property ObjectDescription : string
private string _objectDescription;
public string ObjectDescription
{
get { return _objectDescription; }
set { _objectDescription = value; }
}
#endregion
public List<WFMovementTask> WFMTasks { get; set; }
public List<WFMovementNext> WFMNexts { get; set; }
public WFSetup WFSetup { get; set; }
//#region WFMovementTask : WFMovementTask
//private List<WFMovementTask> _wfMTasks;
//public List<WFMovementTask> WFMTasks
//{
// get
// {
// if (_wfMTasks == null) _wfMTasks = new List<WFMovementTask>();
// return _wfMTasks;
// }
// set
// {
// _wfMTasks = value;
// }
//}
//#endregion
//#region WFMovementNext : WFMovementNext
//private List<WFMovementNext> _wfMNexts;
//public List<WFMovementNext> WFMNexts
//{
// get
// {
// if (_wfMNexts == null)
// _wfMNexts = WFMovementTran.Get4WFMovementNext(this.ID);
// return _wfMNexts;
// }
// set
// {
// _wfMNexts = value;
// }
//}
//#endregion
//#region WFMovementNext : WFMovementNext
//private WFSetup _wfsetup;
//public WFSetup WFSetup
//{
// get
// {
// if (_wfsetup == null) _wfsetup = WFSetup.Get(_WFSetupID);
// return _wfsetup;
// }
// set
// {
// _wfsetup = value;
// }
//}
//#endregion
#endregion
//#region Function
//public static TransactionContext GetTransactionContext(bool openTransaction)
//{
// return WFMovementTran.Service.GetTransactionContext(openTransaction);
//}
//#region Save
//public int Save()
//{
// return WFMovementTran.Service.Save(this);
//}
//public int Save(TransactionContext tc)
//{
// return WFMovementTran.Service.Save(this, tc);
//}
//#endregion
////#region Delete
////public void Delete()
////{
//// WFMovementTran.Service.Delete(ID);
////}
////#endregion
////public bool IsException(WFReceiveStatus nStatus)
////{
//// foreach (WFMovementNext oItem in this.WFMNexts)
//// {
//// if (oItem.ReceiveStatus != EnumWFReceiveStatus.NOT_YET_OPEN)
//// {
//// if (oItem.Status != nStatus)
//// {
//// return false;
//// }
//// }
//// }
//// return true;
////}
//public void SetSourceObjectStatus()
//{
// object nstatus = null;
// Type ty = null;
// ConfigurationManager omanager = new ConfigurationManager();
// ty = System.Reflection.Assembly.GetCallingAssembly().GetType("Payroll.BO." + this.WFSetup.WFType.SourceObjectName.Trim());
// object sourceObject = System.Activator.CreateInstance(ty);
// if (sourceObject == null) throw new ServiceException("unable to create object instance from object name:" + this.WFSetup.WFType.SourceObjectName
// + ". please check availability of the object in the Payroll.Report assembly.");
// System.Type[] pararemterTypes = new System.Type[1];
// pararemterTypes[0] = ID.GetType();
// System.Reflection.MethodInfo methodInfoDel = (sourceObject.GetType()).GetMethod("Get", pararemterTypes);
// object[] parameterValue = new object[1];
// parameterValue[0] = this.ObjectID;
// if (methodInfoDel != null)
// sourceObject = methodInfoDel.Invoke(sourceObject, parameterValue);
// else throw new ServiceException("function: Get(ID) is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// parameterValue[0] = this.Status;
// System.Reflection.MethodInfo sourceStatusMenthod = (sourceObject.GetType()).GetMethod("GetStatusbyWf");
// if (sourceStatusMenthod != null)
// nstatus = sourceStatusMenthod.Invoke(sourceObject, parameterValue);
// else throw new ServiceException("function: GetStatusbyWf is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// this.WFSetup.WFType.SourceObjectStatus = (int)nstatus;
//}
//public void SetSourceObjectStatus(TransactionContext tc)
//{
// object nstatus = null;
// Type ty = null;
// ConfigurationManager omanager = new ConfigurationManager();
// ty = System.Reflection.Assembly.GetCallingAssembly().GetType("Payroll.BO." + this.WFSetup.WFType.SourceObjectName.Trim());
// object sourceObject = System.Activator.CreateInstance(ty);
// if (sourceObject == null) throw new ServiceException("unable to create object instance from object name:" + this.WFSetup.WFType.SourceObjectName
// + ". please check availability of the object in the Payroll.Report assembly.");
// System.Type[] pararemterTypes = new System.Type[2];
// pararemterTypes[0] = ID.GetType();
// pararemterTypes[1] = tc.GetType();
// System.Reflection.MethodInfo methodInfoDel = (sourceObject.GetType()).GetMethod("Get", pararemterTypes);
// object[] parameterValue = new object[2];
// parameterValue[0] = this.ObjectID;
// parameterValue[1] = tc;
// if (methodInfoDel != null)
// sourceObject = methodInfoDel.Invoke(sourceObject, parameterValue);
// else throw new ServiceException("function: Get(ID) is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// parameterValue = new object[1];
// parameterValue[0] = this.Status;
// System.Reflection.MethodInfo sourceStatusMenthod = (sourceObject.GetType()).GetMethod("GetStatusbyWf");
// if (sourceStatusMenthod != null)
// nstatus = sourceStatusMenthod.Invoke(sourceObject, parameterValue);
// else throw new ServiceException("function: GetStatusbyWf is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// this.WFSetup.WFType.SourceObjectStatus = (int)nstatus;
//}
//public string GetSourceObjectDescription()
//{
// object nstatus = null;
// Type ty = null;
// ConfigurationManager omanager = new ConfigurationManager();
// ty = System.Reflection.Assembly.GetCallingAssembly().GetType("Payroll.BO." + this.WFSetup.WFType.SourceObjectName.Trim());
// object ofrm = System.Activator.CreateInstance(ty);
// if (ofrm == null) throw new ServiceException("unable to create object instance from object name:" + this.WFSetup.WFType.SourceObjectName
// + ". please check availability of the object in the Payroll.Report assembly.");
// System.Type[] pararemterTypes = new System.Type[1];
// pararemterTypes[0] = ID.GetType();
// System.Reflection.MethodInfo methodInfoDel = (ofrm.GetType()).GetMethod("Get", pararemterTypes);
// object[] parameterValue = new object[1];
// parameterValue[0] = this.ObjectID;
// object sourceObject = null;
// if (methodInfoDel != null)
// sourceObject = methodInfoDel.Invoke(ofrm, parameterValue);
// else throw new ServiceException("function: Get(ID) is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// System.Reflection.MethodInfo sourceStatusMenthod = (sourceObject.GetType()).GetMethod("WFDesciption");
// if (sourceStatusMenthod != null)
// nstatus = sourceStatusMenthod.Invoke(sourceObject, null);
// else throw new ServiceException("function: GetStatusbyWf is not exist in the object:" + this.WFSetup.WFType.SourceObjectName);
// return nstatus.ToString();
//}
//public string GetStatusString()
//{
// string sStatus = "";
// switch (this.Status)
// {
// case enumwfStatus.Received:
// sStatus = "Initiate";
// break;
// case enumwfStatus.Passed:
// sStatus = "Approved";
// break;
// case enumwfStatus.Decline:
// sStatus = "Decline";
// break;
// case enumwfStatus.Revert:
// sStatus = "revert";
// break;
// case enumwfStatus.End:
// sStatus = "Approved and Completed";
// break;
// case enumwfStatus.Exception:
// sStatus = "raise error";
// break;
// default:
// sStatus = "raise error";
// break;
// }
// return sStatus;
//}
//public static string GetStatusForNotify(enumwfStatus fstatus)
//{
// string sStatus = "";
// switch (fstatus)
// {
// case enumwfStatus.Received:
// sStatus = "Received";
// break;
// case enumwfStatus.Passed:
// sStatus = "Approved";
// break;
// case enumwfStatus.Decline:
// sStatus = "Decline";
// break;
// case enumwfStatus.Revert:
// sStatus = "revert";
// break;
// case enumwfStatus.Approve:
// sStatus = "Approved";
// break;
// case enumwfStatus.End:
// sStatus = "Approved & Completed";
// break;
// case enumwfStatus.Exception:
// sStatus = "raise error";
// break;
// default:
// sStatus = "raise error";
// break;
// }
// return sStatus;
//}
//public void UpdateStatus(OrganogramBasic oNode, string sRemarks, enumwfStatus nstatus)
//{
// foreach (WFMovementNext oItem in this.WFMNexts)
// {
// //if (oNode.ID.Integer == oItem.NodeID.Integer)
// //{
// oItem.Status = nstatus;
// oItem.Remarks = sRemarks;
// oItem.ReceiveStatus = EnumWFReceiveStatus.ALREADY_OPENED;
// //}
// }
//}
//public bool IsReadytoMoveNextTier(WFSetupRule oRule)
//{
// #region Not Required all approvar approval
// if (oRule.ReqAppAll == false)
// {
// foreach (WFMovementNext oItem in this.WFMNexts)
// {
// if (oItem.ReceiveStatus == EnumWFReceiveStatus.ALREADY_OPENED)
// {
// return true;
// }
// }
// }
// #endregion Not Required all approvar approval
// #region Required all approvar approval
// else
// {
// int nCount = 0;
// foreach (WFMovementNext oItem in this.WFMNexts)
// {
// if (oItem.ReceiveStatus == EnumWFReceiveStatus.ALREADY_OPENED)
// {
// nCount = nCount + 1;
// }
// }
// if (nCount == this.WFMNexts.Count)
// {
// return true;
// }
// }
// #endregion Required all approvar approval
// return false;
//}
//public string GetRemarks()
//{
// string sApprovars = "";
// foreach (WFMovementNext oItem in this.WFMNexts)
// {
// sApprovars = sApprovars + oItem.Remarks + " ";
// }
// return sApprovars;
//}
//#region Get
//public static WFMovementTran Get(int WFMovementId)
//{
// WFMovementTran wfMovementTran = null;
// #region Cache Header
// wfMovementTran = (WFMovementTran)_cache["Get", WFMovementId];
// if (wfMovementTran != null)
// return wfMovementTran;
// #endregion
// wfMovementTran = WFMovementTran.Service.Get(WFMovementId);
// #region Cache Footer
// _cache.Add(wfMovementTran, "Get", WFMovementId);
// #endregion
// return wfMovementTran;
//}
//public static WFMovementNext GetReceivedWFNext(int wfsetupid, int objectID)
//{
// WFMovementNext wfMovementTran = null;
// wfMovementTran = WFMovementTran.Service.GetReceivedWFNext(wfsetupid, objectID);
// return wfMovementTran;
//}
//public static List<WFMovementTran> Get()
//{
// #region Cache Header
// List<WFMovementTran> wfMovementTran = _cache["Get"] as List<WFMovementTran>;
// if (wfMovementTran != null)
// return wfMovementTran;
// #endregion
// try
// {
// wfMovementTran = Service.Get();
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(wfMovementTran, "Get");
// #endregion
// return wfMovementTran;
//}
//public static List<WFMovementTask> Get4WFMovementTask(int wftranid)
//{
// #region Cache Header
// List<WFMovementTask> oWFMovementTask = _cache["Get4WFMovementTask", wftranid] as List<WFMovementTask>;
// if (oWFMovementTask != null)
// return oWFMovementTask;
// #endregion
// try
// {
// oWFMovementTask = Service.Get4WFMovementTask(wftranid);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(oWFMovementTask, "Get4WFMovementTask", wftranid);
// #endregion
// return oWFMovementTask;
//}
//public static List<WFMovementTask> GetWFMovementTasks()
//{
// #region Cache Header
// List<WFMovementTask> oWFMovementTask = _cache["GetWFMovementTasks"] as List<WFMovementTask>;
// if (oWFMovementTask != null)
// return oWFMovementTask;
// #endregion
// try
// {
// oWFMovementTask = Service.GetWFMovementTasks();
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(oWFMovementTask, "GetWFMovementTasks");
// #endregion
// return oWFMovementTask;
//}
//public static List<WFMovementTask> GetEMployeeNotification(int employeeID)
//{
// return Service.GetNotificationItems(employeeID);
//}
//public static DataSet GetNotificationAndPendingJobCount(int employeeID)
//{
// return Service.GetNotificationAndPendingJobCount(employeeID);
//}
//public static DataTable GetNotification(int employeeID)
//{
// return Service.GetNotification(employeeID);
//}
//public static DataTable GetPendingJob(int employeeID)
//{
// return Service.GetPendingJob(employeeID);
//}
//public static List<WFMovementNext> Get4WFMovementNext(int wftranid)
//{
// #region Cache Header
// List<WFMovementNext> oWFMovementNext = _cache["Get4WFMovementNext", wftranid] as List<WFMovementNext>;
// if (oWFMovementNext != null)
// return oWFMovementNext;
// #endregion
// try
// {
// oWFMovementNext = Service.Get4WFMovementNext(wftranid);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(oWFMovementNext, "Get4WFMovementNext", wftranid);
// #endregion
// return oWFMovementNext;
//}
//public static List<WFMovementNext> Get4WFMovementNext(int UniqueNumber)
//{
// #region Cache Header
// List<WFMovementNext> oWFMovementNext = _cache["Get4WFMovementNext", UniqueNumber] as List<WFMovementNext>;
// if (oWFMovementNext != null)
// return oWFMovementNext;
// #endregion
// try
// {
// oWFMovementNext = Service.Get4WFMovementNext(UniqueNumber);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(oWFMovementNext, "Get4WFMovementNext", UniqueNumber);
// #endregion
// return oWFMovementNext;
//}
//public static WFMovementTask GetWFMovementTask(int movementraskid)
//{
// WFMovementTask oWFMovementNext = null;
// try
// {
// oWFMovementNext = Service.GetWFMovementTask(movementraskid);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// return oWFMovementNext;
//}
//public static List<WFMovementTran> GetWFMovementByWFType(int wfFTypeID)
//{
// #region Cache Header
// List<WFMovementTran> wfMovementTran = _cache["Get"] as List<WFMovementTran>;
// if (wfMovementTran != null)
// return wfMovementTran;
// #endregion
// try
// {
// wfMovementTran = Service.GetWFMovementByWFType(wfFTypeID);
// }
// catch (ServiceException e)
// {
// throw new Exception(e.Message, e);
// }
// #region Cache Footer
// _cache.Add(wfMovementTran, "Get");
// #endregion
// return wfMovementTran;
//}
//#endregion
//public static List<WFMovementTran> ReceivedItems(int employeeid)
//{
// return WFMovementTran.Service.ReceivedItems(employeeid);
//}
//public static List<WFMovementTran> GetAllItems(int uniqueNumber)
//{
// return WFMovementTran.Service.GetAllItems(uniqueNumber);
//}
//public static int GetReceivedItemsCount(int employeeid)
//{
// return WFMovementTran.Service.ReceivedItemsCount(employeeid);
//}
//public static int GetNotificationItemsCount(int employeeid)
//{
// return WFMovementTran.Service.GetNotificationItemCount(employeeid);
//}
//public void Update_MovementNext(int tranID, int newEmployeeID, int empID, int NodeID, string remarks)
//{
// WFMovementTran.Service.Update_MovementNext(tranID, newEmployeeID, empID, NodeID, remarks);
//}
//public void Submit(WFMovementTran PrvTran)
//{
// WFMovementTran.Service.Submit(PrvTran, this);
//}
//public void UpdateSysNotification(int movementTaskID, bool bstatus)
//{
// WFMovementTran.Service.UpdateSysNotification(movementTaskID, bstatus);
//}
//public List<PendingJobDetail> GetDetails()
//{
// List<PendingJobDetail> opJobsDetail = new List<PendingJobDetail>();
// return opJobsDetail;
//}
//#endregion
//#region Service Factory
//internal static IWFMovementTranService Service
//{
// get { return Services.Factory.CreateService<IWFMovementTranService>(typeof(IWFMovementTranService)); }
//}
//#endregion
}
#endregion
public class ActorDetail
{
public bool IsMale { get; set; }
public int EmployeeID { get; set; }
public string Name { get; set; }
public string Designation { get; set; }
public string Department { get; set; }
public string GetActorDetail()
{
string str = "";
if (this.IsMale != null)
str = (this.IsMale == true) ? "Mr. " : "Ms. ";
str = str + this.Name;
if (this.Designation != string.Empty && this.Designation != null && this.Designation != "")
str = str + ", " + this.Designation;
if (this.Department != string.Empty && this.Department != null && this.Department != "")
str = str + ", " + this.Department;
return str;
}
}
#region Interface
public interface IWFMovementTranService
{
TransactionContext GetTransactionContext(bool openTransaction);
WFMovementTran Get(int id);
WFMovementNext GetReceivedWFNext(int wfsetupid, int objectID);
List<WFMovementTran> Get();
WFMovementTask GetWFMovementTask(int movementTaskID);
List<WFMovementTask> Get4WFMovementTask(int id);
List<WFMovementNext> Get4WFMovementNext(int tranid);
List<WFMovementNext> Get4WFMovementNextWithTranID(int UniqueNumber);
OrganogramBasic InitiatorNode(int uniquenumber);
WFMovementTran InitiatorTran(int uniquenumber);
bool IsInitiator(int UnqNumber, int oEmpID);
// int GetUniqueNumber();
string GetApproversName(int tranID, int empid);
List<WFMovementTran> ReceivedItems(int employeeid);
DataTable PendingJobsMobile(int employeeid);
int ReceivedItemsCount(int employeeid);
string GetPendingJobNotificationCount(int employeeid);
List<WFMovementNext> GetPendingItems(int employeeid);
List<WFMovementTask> GetNotificationItems(int employeeid);
int GetNotificationItemCount(int employeeid);
List<WFMovementTran> GetAllItems(int nUniqueNumber);
List<WFMovementTask> GetWFMovementTasks();
List<WFMovementTran> GetWFMovementByWFType(int wFTypeID);
DataSet GetNotificationAndPendingJobCount(int employeeid);
DataTable GetNotification(int employeeid);
List<PendingItemDTO> GetPendingJob(int employeeid);
DataTable GetReceivedItems(int payrolltypeid, int? wftypeid, int? employeeid);
//int Save(WFMovementTran wfMovementTran);
//int Save(WFMovementTran wFMovementTran, TransactionContext tc);
List<WFFlowHistory> GetFlowHistories(int? tranID, int? uniqueNumber);
void Delete(int WFMovementTranId);
//void Submit(WFMovementTran PrvTran, WFMovementTran NextTran);
void UpdateSysNotification(int movementTaskID, bool status);
void Update_MovementNext(int tranID, int newEmployeeID, int empID, string remarks);
void ForceComplete(List<WFMovementTran> otrans);
List<WFMovementTran> GetClaimRequisitionTranItemsForApproval(int employeeID);
List<WFFlowHistory> GetClaimRequisitionTranItemHistory(int claimId, int employeId);
List<WFFlowHistory> GetFlowHistoriesByObjectID(int? objectId, int wfTypeId, int? employeeId);
WFMovementTran GetWfTranByObjectId(int objectId, int wfTypeId, int wfruleId);
}
#endregion
}