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

701 lines
33 KiB
C#

using HRM.BO;
using Ease.Core.DataAccess;
using Ease.Core.Model;
using Ease.Core.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using HRM.Service;
using System.Data;
namespace HRM.DA
{
#region EmpLeaveStatus Service
public class EmpLeaveStatusService : ServiceTemplate//, ILeaveProcessService
{
public EmpLeaveStatusService() { }
//#region Private functions and declaration
////Cache _cache = new Cache(typeof(EmpLeaveStatus));
private void MapObject(EmpLeaveStatus oEmpLeaveStatus, DataReader oReader)
{
//this.SetObjectID(oEmpLeaveStatus,ID.FromInteger(oReader.GetInt32("TranId")));
base.SetObjectID(oEmpLeaveStatus, oReader.GetInt32("TranId").Value);
oEmpLeaveStatus.ProcessId = oReader.GetInt32("ProcessId").Value;
oEmpLeaveStatus.EmpId = oReader.GetInt32("EmpId").Value;
oEmpLeaveStatus.LeaveYearID = oReader.GetInt32("LEAVEYEARID").Value;
oEmpLeaveStatus.LeaveId = oReader.GetInt32("LeaveId").Value;
//oEmpLeaveStatus.GradeId = oReader.GetInt32("GradeId");
//oEmpLeaveStatus.ParamId = oReader.GetInt32("ParamId");
oEmpLeaveStatus.CarryFromPrvYear = oReader.GetDouble("CarryFromPrvYear").Value;
oEmpLeaveStatus.CFDays = oReader.GetDouble("CFDays").Value;
oEmpLeaveStatus.EncashDays = oReader.GetDouble("EncashDays").Value;
oEmpLeaveStatus.EncashAmount = oReader.GetDouble("EncashAmount").Value;
oEmpLeaveStatus.NormalLeaveDays = oReader.GetDouble("NormalLeaveDays").Value;
oEmpLeaveStatus.YearEndBalance = oReader.GetDouble("YearEndBalance").Value;
oEmpLeaveStatus.LeaveAvailed = oReader.GetDouble("LEAVEAVAILED").Value;
oEmpLeaveStatus.OpeningBalance = oReader.GetDouble("OPENINGBALANCE").Value;
oEmpLeaveStatus.ForfitedDays = oReader.GetDouble("FORFITEDDAYS").Value;
//this.SetObjectState(oEmpLeaveStatus, ObjectState.Saved);
this.SetObjectState(oEmpLeaveStatus, Ease.Core.ObjectState.Saved);
}
//private EmpLeaveStatus CreateObject(NullHandler oReader)
protected override T CreateObject<T>(DataReader oReader)
{
EmpLeaveStatus oEmpLeaveStatus = new EmpLeaveStatus();
MapObject(oEmpLeaveStatus, oReader);
return oEmpLeaveStatus as T;
}
protected EmpLeaveStatus CreateObject(DataReader oReader)
{
EmpLeaveStatus oEmpLeaveStatus = new EmpLeaveStatus();
MapObject(oEmpLeaveStatus, oReader);
return oEmpLeaveStatus;
}
//#endregion
//#region Service implementation
private List<EmpLeaveStatus> CurrentYearStatusOptimized(Employee oEmployee, DateTime operationDate, int presentAttnCount,
List<LeaveParameter> oAppLeaveParams, LeaveYear oCurrYear, List<LeaveEntry> oLeaveEntries, EnumLeaveStatus enumLeaveStatus, List<EmpLeaveStatus> oPrevStatuses, List<LeaveParameterDetail> ParamDetails, List<LeaveException> oExceptions, List<AttnNationalHoliday> oNationalHolidays,
DateTime NextPayProcessDate)
{
try
{
DateTime dCurrentDate = operationDate;
DateTime from_Date = DateTime.MinValue;
DateTime to_Date = DateTime.MinValue;
List<EmpLeaveStatus> oCurrYearBalance = new List<EmpLeaveStatus>();
LeaveParameterDetail oDetail = null;
foreach (LeaveParameter oItem in oAppLeaveParams)
{
EmpLeaveStatus oPrevStatus = null;
EmpLeaveStatus oCurrStatus = new EmpLeaveStatus();
oCurrStatus.EmpId = oEmployee.ID;
oCurrStatus.LeaveId = oItem.LeaveId;
oCurrStatus.LeaveYearID = oCurrYear.ID;
//
int empId = oEmployee.ID;
from_Date = Global.DateFunctions.FirstDateOfYear(operationDate);
to_Date = Global.DateFunctions.LastDateOfYear(operationDate);
if (oItem.LeaveId == 5)
{
DateTime SelectedMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).LastDateOfMonth();
from_Date = new DateTime(to_Date.Year - 2, oEmployee.JoiningDate.Month, oEmployee.JoiningDate.Day);
DataSet ds = new DailyAttnProcessService().GetEarnedLeaveOpening(oEmployee.ID, oItem.LeaveId, from_Date, to_Date);
int dCurrectedDay = 0;
if (DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month) < oEmployee.JoiningDate.Day)
dCurrectedDay = DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month);
else
dCurrectedDay = oEmployee.JoiningDate.Day;
DateTime JoiningDateBefore2YearsFromCurrentYear = new DateTime(SelectedMonth.Year, SelectedMonth.Month, dCurrectedDay).AddYears(-2);// new DateTime(DateTime.Today.Year- 2, item.JoiningDate.Month, item.JoiningDate.Day);// SelectedMonth.FirstDateOfMonth().AddYears(-2);
DateTime FirstYearStartDate = JoiningDateBefore2YearsFromCurrentYear;
DateTime FirstYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1).AddDays(-1);
DateTime LastYearStartDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1);
DateTime LastYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(2).AddDays(-1);
double secondYearLeaveAvailed = new LeaveEntryService().Get(oEmployee.ID, LastYearStartDate, LastYearEndDate, EnumLeaveStatus.Approved).Sum(x => x.ApprovedTotalDays);
//ObjectsTemplate<LeaveEncashment> les = LeaveEncashment.GetByEmpIDs(oEmployee.ID.Integer.ToString(), FirstYearStartDate, FirstYearEndDate);
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
oCurrStatus.OpeningBalance = Convert.ToDouble(dr[0].ToString());
oCurrStatus.LeaveAvailed = Convert.ToDouble(dr[1].ToString()); //secondYearLeaveAvailed;
oCurrStatus.EncashDays = 0;// les==null?0:les.Sum(x=> Math.Round(x.EncashmentDays));
oCurrStatus.YearEndBalance = oCurrStatus.OpeningBalance - (oCurrStatus.LeaveAvailed + oCurrStatus.EncashDays);
}
}
oCurrYearBalance.Add(oCurrStatus);
}
else
{
//ObjectsTemplate<LeaveEntry> les = LeaveEntry.GetByLeaveID(oItem.LeaveId, empId, from_Date, to_Date);
List<LeaveEntry> les = oLeaveEntries.Where(le => le.LeaveID == oItem.LeaveId
&& le.EmpID == empId
&& le.ApprovedFromDate >= from_Date && le.ApprovedFromDate <= to_Date
&& le.ApprovedTotalDays > 0)
.OrderByDescending(x => x.ApprovedFromDate)
.ToList();
//double countDays = 0;
//foreach (LeaveEntry le in les)
//{
// countDays += le.AppliedTotalDays;
//}
//oCurrStatus.ApplyDays = countDays;
oCurrStatus.ApplyDays = les.Sum(x => x.AppliedTotalDays);
//
if (oPrevStatuses != null)
{
oPrevStatus = oPrevStatuses.FirstOrDefault(el => el.LeaveId == oItem.LeaveId && el.EmpId == oEmployee.ID); //EmpLeaveStatus.GetPrvYearStatus(oCurrYear.ID.Integer, oItem.LeaveId, oEmployee.ID.Integer);
}
oDetail = new LeaveParameterService().GetApplicableForEmployee2(oEmployee, operationDate, ParamDetails, oItem.ID);
//LeaveException oLeaveEx = oExceptions.Find(delegate(LeaveException el) { return el.LeaveID == oItem.LeaveId && el.EmployeeID == oEmployee.ID.Integer; }); //EmpLeaveStatus.GetPrvYearStatus(oCurrYear.ID.Integer, oItem.LeaveId, oEmployee.ID.Integer);
LeaveException oLeaveEx = oExceptions.FirstOrDefault(el => el.LeaveID == oItem.LeaveId && el.EmployeeID == oEmployee.ID); //EmpLeaveStatus.GetPrvYearStatus(oCurrYear.ID.Integer, oItem.LeaveId, oEmployee.ID.Integer);
if (oLeaveEx != null)
{
oCurrStatus.LeaveAvailed = oLeaveEntries.Where(le => le.LeaveID == oItem.LeaveId
&& le.EmpID == empId
&& le.LeaveYearId == oCurrYear.ID
&& le.ApprovedTotalDays > 0
&& le.LeaveStatus == EnumLeaveStatus.Approved)
.Sum(x => x.ApprovedTotalDays);
oCurrStatus.OpeningBalance = oLeaveEx.OpeningBalance + oLeaveEx.MaxDays;
oCurrStatus.YearEndBalance = oCurrStatus.OpeningBalance - oCurrStatus.LeaveAvailed;
}
else
{
if (oDetail != null) oCurrStatus.NormalLeaveDays = 0;
else continue;
//oItem.Details = new ObjectsTemplate<LeaveParameterDetail>();
//oItem.Details.Add(oDetail);
#region calculate the current year balance
if (oItem.ApplicableFor == LeaveApplicableType.Confirmed)
{
// No Fraction For Echo
if (oEmployee.IsConfirmed == true)
{
oCurrStatus.CurrentYearBalance = Math.Round(GetOptimizedCurrentYearDays(oItem.CalculationType, oEmployee, dCurrentDate, presentAttnCount, oDetail, oCurrYear), 0);
}
else oCurrStatus.CurrentYearBalance = 0;
}
else
{
// No Fraction For Echo
oCurrStatus.CurrentYearBalance = Math.Round(GetOptimizedCurrentYearDays(oItem.CalculationType, oEmployee, dCurrentDate, presentAttnCount, oDetail, oCurrYear), 0);
}
#endregion
#region calculate leave availed in current year
if (oLeaveEntries == null)
oCurrStatus.LeaveAvailed = 0;
else
{
var itemsInCart = from o in oLeaveEntries
where o.EmpID == oEmployee.ID &&
o.LeaveID == oItem.LeaveId &&
o.LeaveYearId == oCurrYear.ID &&
(o.LeaveStatus == enumLeaveStatus || o.LeaveStatus == EnumLeaveStatus.Cancel_Request)
select new { o.ApprovedTotalDays };
oCurrStatus.LeaveAvailed = itemsInCart.ToList().Select(c => c.ApprovedTotalDays).Sum();
}
#endregion
#region calculate the opening balance new
//oCurrStatus.CurrentYearOpening = oPrevStatus == null ? 0 : oPrevStatus.YearEndBalance;
oCurrStatus.CurrentYearOpening = oPrevStatus == null ? 0 : Math.Round(oPrevStatus.CFDays);
oCurrStatus.OpeningBalance = oCurrStatus.CurrentYearBalance + oCurrStatus.CurrentYearOpening;
if (oItem.MaxAccumulatedDays > 0)
{
// No Fraction For Echo
oCurrStatus.OpeningBalance = Math.Round(oCurrStatus.OpeningBalance > oItem.MaxAccumulatedDays ? oItem.MaxAccumulatedDays : oCurrStatus.OpeningBalance, 0); //,1);
}
#endregion
#region Calculate Year-End Balance
oCurrStatus.YearEndBalance = 0;
#region COMPENSATORY LEAVE based on Nation Holiday
if (oItem.LeaveId == 7)
{
List<DailyAttnProcess> oEmpDailAttnProcesses = new DailyAttnProcessService().Get(oEmployee.ID, NextPayProcessDate.FirstDateOfMonth(), NextPayProcessDate.LastDateOfMonth());
double nDays = 0;
foreach (DailyAttnProcess dp in oEmpDailAttnProcesses)
{
if (dp.InTime != DateTime.MinValue)
{
AttnNationalHoliday nh = oNationalHolidays.Find(x => dp.AttnDate >= x.FromDate && dp.AttnDate <= x.ToDate);
if (nh != null) nDays++;
}
}
oCurrStatus.OpeningBalance = nDays;
}
#endregion
if (oItem.Leave.IsBalanceCalculationNeeded == false)
{
oCurrStatus.NormalLeaveDays = 0;
oCurrStatus.OpeningBalance = 0;
}
else
{ // No Fraction For Echo
oCurrStatus.YearEndBalance = Math.Round(oCurrStatus.OpeningBalance - (oCurrStatus.ForfitedDays + oCurrStatus.LeaveAvailed), 0); // 1);
}
#endregion
}
if (oItem.Leave.IsBalanceCalculationNeeded)
{
if (oDetail.MaxCF > 0)
{
oCurrStatus.CFDays = oCurrStatus.YearEndBalance > oDetail.MaxCF ? oDetail.MaxCF : oCurrStatus.YearEndBalance;
}
oCurrYearBalance.Add(oCurrStatus);
}
}
}
return oCurrYearBalance;
}
catch (Exception exp)
{
//MessageBox.Show(oEmployee.EmployeeNo);
throw new Exception(exp.Message);
}
}
private static double GetOptimizedCurrentYearDays(EnumLeaveCalculationType eType, Employee emp, DateTime dCurrentDate, int presentAttnCount, LeaveParameterDetail oDetail, LeaveYear oCurrentYear)
{
double nTotalDays = 0;
TimeSpan ts = new TimeSpan();
if (eType == EnumLeaveCalculationType.Yearly)
{
if (presentAttnCount > 0)
{
nTotalDays = (double)presentAttnCount / 18;
}
}
else if (eType == EnumLeaveCalculationType.Yearly)
{
ts = (dCurrentDate - ((emp.JoiningDate > oCurrentYear.StartDate) ?
emp.JoiningDate : Global.DateFunctions.FirstDateOfYear(dCurrentDate)))
.Add(TimeSpan.FromDays(1));
nTotalDays = (oDetail.MaxDays * ts.Days) / 365;
}
else if (eType == EnumLeaveCalculationType.Yearly)
{
ts = (dCurrentDate - ((emp.JoiningDate > oCurrentYear.StartDate) ?
emp.JoiningDate : Global.DateFunctions.FirstDateOfYear(dCurrentDate)))
.Add(TimeSpan.FromDays(1));
if (ts.Days > 365)
{
nTotalDays = (double)oDetail.MaxDays;
}
// Else '0' , What??????????????????
}
else if (eType == EnumLeaveCalculationType.Yearly)
{
ts = (Global.DateFunctions.LastDateOfYear(dCurrentDate) - Global.DateFunctions.FirstDateOfYear(dCurrentDate)).Add(TimeSpan.FromDays(1));
nTotalDays = (oDetail.MaxDays * ts.Days) / 365;
}
else if (eType == EnumLeaveCalculationType.Yearly)
{
ts = (Global.DateFunctions.LastDateOfYear(dCurrentDate) - ((emp.JoiningDate > oCurrentYear.StartDate) ?
emp.JoiningDate : Global.DateFunctions.FirstDateOfYear(dCurrentDate)))
.Add(TimeSpan.FromDays(1));
nTotalDays = (oDetail.MaxDays * ts.Days) / 365;
}
return Math.Round(nTotalDays, 0);
}
public List<EmpLeaveStatus> CurrentYearStatus(List<Employee> oEmployees, LeaveYear lYear, DateTime operationDate, EnumLeaveStatus eStatus, DateTime NextPayProcessDate)
{
try
{
//UpdateprocessStatus("Collecting Leave Information ....");
if (operationDate.Date > lYear.EndDate) operationDate = lYear.EndDate.Date;
DateTime oEmpOperationDate;
List<EmpLeaveStatus> oCurrYearBalance = null;
List<EmpLeaveStatus> oAllEmpsCurrYearBalance = new List<EmpLeaveStatus>();
LeaveYear oCurrYear = lYear;
LeaveYear oPrvYear = new LeaveYearService().LastLeaveYear(oCurrYear);
List<EnmSetupManagerTranType> setupTypes = new SetupDetailService().GetTypes(EnumParameterSetup.Leave);
List<SetupDetail> setupDetails = new SetupDetailService().GetParameters(EnumParameterSetup.Leave);
List<LeaveParameter> leaveParamss = new LeaveParameterService().Get();
List<LeaveParameterDetail> leaveParamDetails = new LeaveParameterService().GetDetails();
List<LeaveEntry> oLs = new LeaveEntryService().Get(oEmployees.CommaSeparatedIDs(), oCurrYear.ID, EnumLeaveStatus.Approved);// LeaveEntry.GetByLeaveYear(oCurrYear.ID.Integer);
List<EmpLeaveStatus> oPrevStatuses = new LeaveProcessService().GetByYear(oPrvYear.ID);
List<LeaveException> oExceptions = new LeaveExceptionService().Get(lYear.StartDate, lYear.EndDate);
DataTable oYearlyDailyAttnProcess = new DailyAttnProcessService().GetTypeWiseAttnCount(oEmployees.CommaSeparatedIDs(), Global.DateFunctions.FirstDateOfYear(operationDate), Global.DateFunctions.LastDateOfYear(operationDate), EnumAttendanceType.Present, EnumAttendanceType.Early, EnumAttendanceType.Late, EnumAttendanceType.Delay, EnumAttendanceType.OutSideDuty, EnumAttendanceType.HalfDay);
List<AttnNationalHoliday> oNationalHolidays = new AttnNationalHolidayService().GetByMonth(oCurrYear.StartDate, oCurrYear.EndDate);
DataRow dRow = null; int presentCount = 0;
int nMax = oEmployees.Count;
int ncc = 0;
//UpdateProgressStatus(EnumProcessStatus.Start);
foreach (Employee oEmp in oEmployees)
{
//UpdateProgressStatus(EnumProcessStatus.PerformStep);
int nCount = ++ncc;
if (nCount == 98)
nCount = 98;
//UpdateprocessStatus("Collecting Leave Information " + (nCount).ToString() + "/" + nMax);
oEmpOperationDate = operationDate;
if (oEmp.EndOfContractDate != null)
{
if (oEmp.EndOfContractDate < lYear.StartDate)
continue;
if (oEmp.EndOfContractDate.Value < operationDate)
{
oEmpOperationDate = oEmp.EndOfContractDate.Value;
}
}
dRow = oYearlyDailyAttnProcess.AsEnumerable().FirstOrDefault(x => Convert.ToInt32(x["EmployeeID"].ToString()) == oEmp.ID);
presentCount = dRow != null ? Convert.ToInt32(dRow["Count"].ToString()) : 0;
List<LeaveParameter> oAppLeaveParams = new LeaveParameterService().ApplicableParamsForReport(oEmp, setupTypes, setupDetails, leaveParamss);
oCurrYearBalance = new EmpLeaveStatusService().CurrentYearStatusOptimized(oEmp, operationDate, presentCount, oAppLeaveParams, oCurrYear, oLs, eStatus, oPrevStatuses, leaveParamDetails, oExceptions, oNationalHolidays , NextPayProcessDate);
foreach (EmpLeaveStatus eSts in oCurrYearBalance)
{
oAllEmpsCurrYearBalance.Add(eSts);
}
}
//UpdateProgressStatus(EnumProcessStatus.End);
//ProcessStatus = null;
//ProgressStatus = null;
return oAllEmpsCurrYearBalance;
}
catch (Exception exp)
{
// Nothing
}
return new List<EmpLeaveStatus>();
}
//public EmpLeaveStatus Get(int id)
//{
// EmpLeaveStatus oEmpLeaveStatus = new EmpLeaveStatus();
// #region Cache Header
// oEmpLeaveStatus = (EmpLeaveStatus)_cache["Get", id];
// if (oEmpLeaveStatus != null)
// return oEmpLeaveStatus;
// #endregion
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(EmpLeaveStatusDA.Get(tc, id));
// if (oreader.Read())
// {
// oEmpLeaveStatus = CreateObject(oreader);
// }
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// #region Cache Footer
// _cache.Add(oEmpLeaveStatus, "Get", id);
// #endregion
// return oEmpLeaveStatus;
//}
//public EmpLeaveStatus GetStatus(int empid, int leaveID, int leaveYearID)
//{
// EmpLeaveStatus oEmpLeaveStatus = new EmpLeaveStatus();
// #region Cache Header
// oEmpLeaveStatus = (EmpLeaveStatus)_cache["Get", empid, leaveID, leaveYearID];
// if (oEmpLeaveStatus != null)
// return oEmpLeaveStatus;
// #endregion
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(EmpLeaveStatusDA.GetStatus(tc, empid, leaveID, leaveYearID));
// if (oreader.Read())
// {
// oEmpLeaveStatus = CreateObject(oreader);
// }
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// #region Cache Footer
// _cache.Add(oEmpLeaveStatus, "Get", empid, leaveID, leaveYearID);
// #endregion
// return oEmpLeaveStatus;
//}
//public EmpLeaveStatus GetByYear(int leaveyearID, int LeaveId, int EmpId)
//{
// EmpLeaveStatus oEmpLeaveStatus = null;
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(EmpLeaveStatusDA.GetByYear(tc, leaveyearID, LeaveId, EmpId));
// if (oreader.Read())
// {
// oEmpLeaveStatus = CreateObject(oreader);
// }
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// return oEmpLeaveStatus;
//}
//public List<EmpLeaveStatus> GetByYear(int leaveyearID)
//{
// #region Cache Header
// List<EmpLeaveStatus> empLeaveStatuss = _cache["Get", leaveyearID] as List<EmpLeaveStatus>;
// if (empLeaveStatuss != null)
// return empLeaveStatuss;
// #endregion
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oreader = new DataReader(EmpLeaveStatusDA.GetByYear(tc, leaveyearID));
// empLeaveStatuss = this.CreateObjects<EmpLeaveStatus>(oreader);
// oreader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// #region Cache Footer
// _cache.Add(empLeaveStatuss, "Get", leaveyearID);
// #endregion
// return empLeaveStatuss;
//}
//public List<EmpLeaveStatus> Get(int nProcessId)
//{
// #region Cache Header
// List<EmpLeaveStatus> empLeaveStatuss = _cache["Get", nProcessId] as List<EmpLeaveStatus>;
// if (empLeaveStatuss != null)
// return empLeaveStatuss;
// #endregion
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oReader = new DataReader(EmpLeaveStatusDA.GetByProcessId(tc, nProcessId));
// empLeaveStatuss = this.CreateObjects<EmpLeaveStatus>(oReader);
// oReader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// #region Cache Footer
// _cache.Add(empLeaveStatuss, "Get", nProcessId);
// #endregion
// return empLeaveStatuss;
//}
//public List<EmpLeaveStatus> GetAllStatus(int empId)
//{
// #region Cache Header
// List<EmpLeaveStatus> empLeaveStatuss = _cache["Get", empId] as List<EmpLeaveStatus>;
// if (empLeaveStatuss != null)
// return empLeaveStatuss;
// #endregion
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin();
// DataReader oReader = new DataReader(EmpLeaveStatusDA.GetAllStatus(tc, empId));
// empLeaveStatuss = this.CreateObjects<EmpLeaveStatus>(oReader);
// oReader.Close();
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Get Employee Leave Status", e);
// #endregion
// }
// #region Cache Footer
// _cache.Add(empLeaveStatuss, "Get", empId);
// #endregion
// return empLeaveStatuss;
//}
//public ID Insert(EmpLeaveStatus oEmpLeaveStatus)
//{
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin(true);
// if (oEmpLeaveStatus.IsNew)
// {
// int id = tc.GenerateID("EmpLeaveStatus", "TranId");
// base.SetObjectID(oEmpLeaveStatus, ID.FromInteger(id));
// EmpLeaveStatusDA.Insert(tc, oEmpLeaveStatus);
// }
// else
// EmpLeaveStatusDA.Update(tc, oEmpLeaveStatus);
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Insert Employee Leave Status", e);
// #endregion
// }
// return oEmpLeaveStatus.ID;
//}
//public void SaveStatus(EmpLeaveStatus oEmpLeaveStatus)
//{
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin(true);
// if (oEmpLeaveStatus.IsNew)
// {
// // this.SetObjectID(oEmpLeaveStatus, ID.FromInteger(EmpLeaveStatusDA.GetNewID(tc)));
// EmpLeaveStatusDA.Insert(tc, oEmpLeaveStatus);
// }
// //else
// // EmpLeaveStatusDA.Update(tc, oEmpLeaveStatus);
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Insert Employee Leave Status", e);
// #endregion
// }
//}
//internal void SaveAtProcessing(bool IsUpdate, int ProcessId, List<EmpLeaveStatus> oEmpLeaveStatuss, TransactionContext tc)
//{
// foreach (EmpLeaveStatus oItem in oEmpLeaveStatuss)
// {
// if (IsUpdate) EmpLeaveStatusDA.Update(tc, oItem);
// else
// {
// this.SetObjectID(oItem, ID.FromInteger(EmpLeaveStatusDA.GetNewID(tc)));
// oItem.ProcessId = ProcessId;
// EmpLeaveStatusDA.Insert(tc, oItem);
// }
// }
//}
//public void Delete(int id)
//{
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin(true);
// EmpLeaveStatusDA.Delete(tc, id);
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Delete Employee Leave Status", e);
// #endregion
// }
//}
//public void Delete(int nProcessId)
//{
// TransactionContext tc = null;
// try
// {
// tc = TransactionContext.Begin(true);
// EmpLeaveStatusDA.DeleteByProcessId(tc, nProcessId);
// tc.End();
// }
// catch (Exception e)
// {
// #region Handle Exception
// if (tc != null)
// tc.HandleError();
// ExceptionLog.Write(e);
// throw new ServiceException("Failed to Delete Employee Leave Status", e);
// #endregion
// }
//}
//#endregion
}
#endregion
}