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

633 lines
22 KiB
C#

using System;
using System.Data;
using Ease.Core.Model;
using Ease.Core.DataAccess;
using Ease.Core;
using System.Collections.Generic;
using Ease.Core.Utility;
using HRM.BO;
using HRM.DA;
namespace HRM.DA
{
#region FSHead Service
public class ResignationRequestService : ServiceTemplate, IResignationRequestService
{
#region Private functions and declaration
#endregion
public ResignationRequestService()
{
}
private void MapObject(EmpResignationRequest oEmpRegRequest, DataReader oReader)
{
base.SetObjectID(oEmpRegRequest, (oReader.GetInt32("ResignationRequestId").Value));
oEmpRegRequest.RequestDate = oReader.GetDateTime("RequestDate").Value;
oEmpRegRequest.EmployeeID = oReader.GetInt32("EmployeeID",0);
oEmpRegRequest.LastWorkingDate = oReader.GetDateTime("LastWorkingDate").HasValue
? oReader.GetDateTime("LastWorkingDate").Value
: null;
oEmpRegRequest.ResignationDate = oReader.GetDateTime("ResignationDate").HasValue
? oReader.GetDateTime("ResignationDate").Value
: null;
oEmpRegRequest.WFStatus = (EnumResignStatus)oReader.GetInt16("WFStatus").Value;
oEmpRegRequest.NextApproverEmpID = oReader.GetInt32("NextApproverEmpID", 0);
oEmpRegRequest.CleranceInitiateDate = oReader.GetDateTime("CleranceInitiateDate").HasValue
? oReader.GetDateTime("CleranceInitiateDate").Value
: null;
oEmpRegRequest.CleranceInitiateDate = oReader.GetDateTime("CleranceInitiateDate").HasValue
? oReader.GetDateTime("CleranceInitiateDate").Value
: null;
oEmpRegRequest.CleranceInitiateBy = oReader.GetInt32("CleranceInitiateBy", 0);
oEmpRegRequest.ClearanceStatus = oReader.GetInt32("ClearanceStatus") == null ? null : (EnumResignationClearanceStatus)oReader.GetInt32("ClearanceStatus").Value;
oEmpRegRequest.IsDiscontinue = oReader.GetBoolean("IsDiscontinue").HasValue ? oReader.GetBoolean("IsDiscontinue").Value : false;
oEmpRegRequest.DiscontinueDate = oReader.GetDateTime("DiscontinueDate").HasValue
? oReader.GetDateTime("DiscontinueDate").Value
: null;
oEmpRegRequest.DiscontinueBy = oReader.GetInt32("DiscontinueBy", 0);
oEmpRegRequest.CreatedBy = oReader.GetInt32("CreatedBy", 0);
oEmpRegRequest.CreatedDate = oReader.GetDateTime("CreationDate").HasValue
? oReader.GetDateTime("CREATIONDATE").Value
: DateTime.MinValue;
oEmpRegRequest.EmpNo = oReader.GetString("EMPLOYEENO", true,null);
oEmpRegRequest.EmpName = oReader.GetString("EmpName", true, null);
oEmpRegRequest.EmpDept = oReader.GetString("Department", true, null);
oEmpRegRequest.EmpDeg = oReader.GetString("Designation", true, null);
oEmpRegRequest.JoiningDate = oReader.GetDateTime("JOININGDATE", true, DateTime.MinValue);
this.SetObjectState(oEmpRegRequest, Ease.Core.ObjectState.Saved);
}
protected override T CreateObject<T>(DataReader oReader)
{
EmpResignationRequest oFSHead = new EmpResignationRequest();
MapObject(oFSHead, oReader);
return oFSHead as T;
}
protected EmpResignationRequest CreateObject(DataReader oReader)
{
EmpResignationRequest oResignationRequest = new EmpResignationRequest();
MapObject(oResignationRequest, oReader);
return oResignationRequest;
}
#region Service implementation
public EmpResignationRequest Get(int id)
{
EmpResignationRequest oFSHead = new EmpResignationRequest();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ResignationRequestDA.Get(tc, id));
if (oreader.Read())
{
oFSHead = this.CreateObject<EmpResignationRequest>(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 oFSHead;
}
public EmpResignationRequest Get(TransactionContext tc, int id)
{
EmpResignationRequest oFSHead = new EmpResignationRequest();
try
{
DataReader oreader = new DataReader(ResignationRequestDA.Get(tc, id));
if (oreader.Read())
{
oFSHead = this.CreateObject<EmpResignationRequest>(oreader);
}
oreader.Close();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return oFSHead;
}
public List<EmpResignationRequest> Get()
{
List<EmpResignationRequest> items = new List<EmpResignationRequest>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ResignationRequestDA.Get(tc));
items = this.CreateObjects<EmpResignationRequest>(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 items;
}
public List<EmpResignationRequest> Get(DateTime formDate, DateTime toDate)
{
List<EmpResignationRequest> items = new List<EmpResignationRequest>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ResignationRequestDA.Get(tc, formDate, toDate));
items = this.CreateObjects<EmpResignationRequest>(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 items;
}
public List<EmpResignationRequest> Get(EnumResignStatus status)
{
List<EmpResignationRequest> items = new List<EmpResignationRequest>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ResignationRequestDA.Get(tc, status));
items = this.CreateObjects<EmpResignationRequest>(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 items;
}
public void ApproveResignationRequest(WFMovementTran approver,DateTime lastWorkingDate,string remarks,string resignationRemarks)
{
EmpResignationRequest item = this.Get(approver.ObjectID);
TransactionContext tc = null;
try
{
SearchEmployee s = new SearchEmployeeService().get(approver.FromEmployeeID);
tc = TransactionContext.Begin(true);
string subject = s.EmployeeNo + "-" + s.Name + ", has approved your Resignation Request " + item.RequestDate.ToString();
WFMovementTran newTran = new HRM.DA.WFManager<IworkflowInterface>().Approve(tc, approver.ID,
approver.FromEmployeeID, approver.Remarks, subject);
//if (newTran.Status == EnumwfStatus.End)
//{
ResignationRequestDA.UpdateResignationRequestApproveStatus(tc, newTran.ObjectID, EnumwfStatus.Approve, approver.UserID, lastWorkingDate, remarks, resignationRemarks);
//}
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public void ResignationRequestReject(WFMovementTran rejectTran)
{
TransactionContext tc = null;
try
{
SearchEmployee s = new SearchEmployeeService().get(rejectTran.FromEmployeeID);
EmpResignationRequest item = this.Get(rejectTran.ObjectID);
tc = TransactionContext.Begin(true);
string rejectString = s.EmployeeNo + "-" + s.Name + ", has rejected your Resignation Request" + item.RequestDate.ToString();
new HRM.DA.WFManager<IworkflowInterface>().Reject(tc, rejectTran.ID, rejectTran.FromEmployeeID, rejectTran.Remarks, rejectString);
ResignationRequestDA.UpdateResignationRequestResignStatus(tc, item.ID, EnumResignStatus.Rejected);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public EmpResignationRequest GetByEmployeeId(int employeeId)
{
EmpResignationRequest oFSHead = new EmpResignationRequest();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ResignationRequestDA.GetResignationByEmployeeId(tc, employeeId));
if (oreader.Read())
{
oFSHead = this.CreateObject<EmpResignationRequest>(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 oFSHead;
}
public EmpResignationRequest GetByEmpIDForSettlement(int employeeId)
{
EmpResignationRequest oFSHead = new EmpResignationRequest();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ResignationRequestDA.GetByEmpID(tc, employeeId));
if (oreader.Read())
{
oFSHead = this.CreateObject<EmpResignationRequest>(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 oFSHead;
}
//public List<EmpResignationRequest> Get(EnumStatus status)
//{
// List<EmpResignationRequest> items= new List<EmpResignationRequest>();
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader dr = new DataReader(ResignationRequestDA.Get(tc, status));
// items = this.CreateObjects<EmpResignationRequest>(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 FSHeads;
//}
public int Save(EmpResignationRequest oEmpRegRequest)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
if (oEmpRegRequest.IsNew)
{
int id = tc.GenerateID("EmpResignationRequest", "ResignationRequestId");
base.SetObjectID(oEmpRegRequest, (id));
//int seqNo = tc.GenerateID("EmpResignationRequest", "SequenceNO");
//oFSHead.Sequence = seqNo;
ResignationRequestDA.Insert(tc, oEmpRegRequest);
}
else
{
ResignationRequestDA.Update(tc, oEmpRegRequest);
}
tc.End();
if (oEmpRegRequest.EmpResgAttachmentList != null && oEmpRegRequest.EmpResgAttachmentList.Count > 0)
{
foreach (var item in oEmpRegRequest.EmpResgAttachmentList)
{
if (item.FileAsByteArray != null)
{
//byte[] newBytes = Convert.FromBase64String(item.TempFileTobase64);
//item.FileAsByteArray = newBytes;
item.EmpRegRequestID = oEmpRegRequest.ID;
ResignationRequestDA.InsertFileAttachment(item, oEmpRegRequest.ConnectionString);
}
}
}
if (oEmpRegRequest.WFStatus == EnumResignStatus.Sumitted)
{
tc = TransactionContext.Begin(true);
this.InitiateResignationRequestWorkFlow(tc, oEmpRegRequest, oEmpRegRequest.EmployeeID, oEmpRegRequest.CreatedBy);
tc.End();
}
return oEmpRegRequest.ID;
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException("Failed to do Employee Resignation :" + e.Message, e);
#endregion
}
}
public void InitiateResignationRequestWorkFlow(TransactionContext tc, EmpResignationRequest item, int initiateEmpID, int userID)
{
try
{
string subject = "Resignation Request has raised: " + item.RequestDate.ToString() + ". Your Approval is required";
HRM.DA.WFManager<IworkflowInterface> om = new HRM.DA.WFManager<IworkflowInterface>(item);
om.InitiateProcess(tc, initiateEmpID, item.SetupID, item.ObjectID, "", subject);
WFMovementTran oTran = new WFMovementTran();
oTran=om.GetCurrentMovemenTran();
oTran.WFMNexts.ForEach(x => {
if (x.Status == EnumwfStatus.Received && x.EmployeeID > 0)
item.NextApproverEmpID = x.EmployeeID;
});
ResignationRequestDA.UpdateResignationRequestStatus(tc, item.ObjectID, EnumResignStatus.Sumitted, item.NextApproverEmpID);
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public List<EmpResignationAttachment> GetResignationAttachments(int refId)
{
List<EmpResignationAttachment> oFileAttachments = new List<EmpResignationAttachment>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(ResignationRequestDA.GetByReferenceId(tc, refId));
while (oreader.Read())
{
EmpResignationAttachment oIRFileAtachment = new EmpResignationAttachment();
oIRFileAtachment.ID = oreader.GetInt32("ATTACHMENTID").Value;
oIRFileAtachment.EmpRegRequestID = oreader.GetInt32("EmpRegRequestID", 0);
oIRFileAtachment.FileAsByteArray = oreader.GetLob("FileData");
oIRFileAtachment.OriginalFileName = oreader.GetString("OriginalFileName");
oFileAttachments.Add(oIRFileAtachment);
}
oreader.Close();
}
catch (Exception ex)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(ex);
throw new ServiceException("Failed to Get IRNotifications: " + ex.Message, ex);
#endregion
}
return oFileAttachments;
}
public void Delete(int id)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
ResignationRequestDA.Delete(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
}
}
public void updateStatus(int id, EnumResignStatus status)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
ResignationRequestDA.updateStatus(tc, id, status);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
}
public List<FSHeadResignationPermission> GetFsHeadRegPermission()
{
List<FSHeadResignationPermission> items = new List<FSHeadResignationPermission>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(ResignationRequestDA.GetFsHeadWithResgEmployee(tc));
while (dr.Read())
{
FSHeadResignationPermission oFSHeadReg = new FSHeadResignationPermission();
oFSHeadReg.EmployeeId= dr.GetInt32("EmployeeID").Value;
oFSHeadReg.EmployeeNo = dr.GetString("EMPLOYEENO");
oFSHeadReg.EmployeeName = dr.GetString("NAME");
oFSHeadReg.FsItemCode =dr.GetInt32("ItemCode") == null ? null : (EnumFSItemCode)dr.GetInt32("ItemCode").Value; ;
oFSHeadReg.Amount = dr.GetDouble("Amount",0);
items.Add(oFSHeadReg);
}
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 items;
}
#endregion
//for Excel Upload
// public static void SaveForUpload(TransactionContext tc, List<EmpResignationRequest> FSHeads)
// {
// try
// {
// foreach (FSHead oFSHead in FSHeads)
// {
// if (oFSHead.IsNew)
// {
// int seqNo = tc.GenerateID("FSHeads", "SequenceNO");
// oFSHead.Sequence = seqNo;
// bool isAutoGenerated = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "FSHead", "codeautogenerate");
// if (isAutoGenerated == true)
// //#### oFSHead.Code = GlobalFunctionService.GetMaxCode(tc, "FSHead", "codeautogenerate", "FSHead", "Code");
// oFSHead.CreatedBy = oFSHead.CreatedBy;
// oFSHead.CreatedDate = DateTime.Now;
// FSHeadDA.Insert(tc, oFSHead);
// }
// else
// {
// FSHeadDA.Update(tc, oFSHead);
// }
// }
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException(e.Message, e);
// #endregion
// }
// }
}
#endregion
}