EchoTex_Payroll/HRM.DA/Service/JV/JVSetupService.cs

530 lines
17 KiB
C#
Raw Normal View History

2024-10-14 10:01:49 +06:00
using System;
using System.Data;
using System.Linq;
using Ease.Core.Model;
using Ease.Core.DataAccess;
using HRM.BO;
using System.Collections.Generic;
using Ease.Core.Utility;
using Payroll.Service;
namespace HRM.DA
{
#region JVSetup Service
public class JVSetupService : ServiceTemplate, IJVSetupService
{
#region Private functions and declaration
public JVSetupService()
{
}
private void MapObject(JVSetup oJVSetup, DataReader oReader)
{
base.SetObjectID(oJVSetup, oReader.GetInt32("JVSetupID").Value);
oJVSetup.Description = oReader.GetString("Description");
oJVSetup.GLCode = oReader.GetString("GLCode");
oJVSetup.IsConfirmed = oReader.GetBoolean("IsConfirmed").Value;
oJVSetup.IsEmployeeDetail = oReader.GetBoolean("IsEmployeeDetail").Value;
oJVSetup.JVTypeID = oReader.GetString("JVTypeID") == null ? 0 : oReader.GetInt32("JVTypeID").Value;
oJVSetup.PayrollTypeID =
oReader.GetString("PayrollTypeID") == null ? 0 : oReader.GetInt32("PayrollTypeID").Value;
oJVSetup.MonthDate = oReader.GetDateTime("MonthDate").Value;
oJVSetup.SequenceNo = oReader.GetInt32("SequenceNo").Value;
oJVSetup.ShowCC = oReader.GetBoolean("ShowCC").Value;
oJVSetup.BookToCC = oReader.GetBoolean("BookToCC").HasValue ? oReader.GetBoolean("BookToCC").Value : false;
oJVSetup.BookToPC = oReader.GetBoolean("BookToPC").HasValue ? oReader.GetBoolean("BookToPC").Value : false;
oJVSetup.EMPLOYEETYPE = (oReader.GetInt32("EMPLOYEETYPE").HasValue && oReader.GetInt32("EMPLOYEETYPE") != 0)
? (EnumJVEmpType)oReader.GetInt32("EMPLOYEETYPE")
: EnumJVEmpType.RegardLess;
oJVSetup.Side = oReader.GetInt32("Side").Value;
oJVSetup.SideCode = oReader.GetString("SideCode");
oJVSetup.GroupCode = oReader.GetString("GroupCode");
this.SetObjectState(oJVSetup, Ease.Core.ObjectState.Saved);
}
protected override T CreateObject<T>(DataReader oReader)
{
JVSetup oJVSetup = new JVSetup();
MapObject(oJVSetup, oReader);
return oJVSetup as T;
}
protected JVSetup CreateObject(DataReader oReader)
{
JVSetup oJVSetup = new JVSetup();
MapObject(oJVSetup, oReader);
return oJVSetup;
}
#endregion
#region Service implementation
public JVSetup Get(int id)
{
JVSetup oJVSetup = new JVSetup();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(JVSetupDA.Get(tc, id));
if (oreader.Read())
{
oJVSetup = this.CreateObject<JVSetup>(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 oJVSetup;
}
public List<JVSetup> Getbypayrolltype(int payrolltypeid)
{
List<JVSetup> oJVSetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(JVSetupDA.GetbyPayrollTypeid(tc, payrolltypeid));
oJVSetups = this.CreateObjects<JVSetup>(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 oJVSetups;
}
public int GetSequenceNo()
{
int nSeq = 0;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
nSeq = JVSetupDA.GetSequenceNo(tc);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return nSeq;
}
public DateTime GetMaxDate(DateTime dGivenDate, int payrolltypeid)
{
DateTime dMaxDate = DateTime.Now;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
dMaxDate = JVSetupDA.GetMaxDate(tc, dGivenDate, payrolltypeid);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return dMaxDate;
}
public List<JVSetup> GetByJVType(int jvSetupID)
{
List<JVSetup> jvsetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetByJVType(tc, jvSetupID));
jvsetups = this.CreateObjects<JVSetup>(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 jvsetups;
}
public List<JVSetup> GetLatestSetupByJVType(int payrolltypeid, int jvtypeid )
{
List<JVSetup> jvsetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetLatestSetupByJVType(tc, payrolltypeid, jvtypeid));
jvsetups = this.CreateObjects<JVSetup>(dr);
dr.Close();
tc.End();
if (jvsetups.Count >0)
{
List<JVSetupDetail> items = new JVSetupDetailService().GetLatestSetupByJVType(payrolltypeid, jvtypeid);
jvsetups.ForEach(x =>
{
x.JVSetupDetails = items.FindAll(y => y.JVSetupID == x.ID);
});
List<JVSetupCC> ccitems = new JVSetupCCService().GetLatestSetupByJVType(payrolltypeid, jvtypeid);
jvsetups.ForEach(x =>
{
x.JVSetupCC = ccitems.FindAll(x => x.JVSetupID == x.ID);
});
List<JVSetupGrade> gradeitems = new JVSetupGradeService().GetLatestSetupByJVType(payrolltypeid, jvtypeid);
jvsetups.ForEach(x =>
{
x.JVSetupGrades = gradeitems.FindAll(x => x.JVSetupID == x.ID);
});
}
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return jvsetups;
}
public List<JVSetup> GetByJVTypeAndEffectDate(int jvSetupID, DateTime dEffectDate)
{
List<JVSetup> jvsetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetByJVTypeAndEffectDate(tc, jvSetupID, dEffectDate));
jvsetups = this.CreateObjects<JVSetup>(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 jvsetups;
}
public List<JVSetup> GetByMonthDate(DateTime dtMonthDate, int payrolltypeid)
{
List<JVSetup> jvsetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetByMonthDate(tc, dtMonthDate, payrolltypeid));
jvsetups = this.CreateObjects<JVSetup>(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 jvsetups;
}
public List<JVSetupDetail> GetChildByParentID(int JVSetupID)
{
List<JVSetupDetail> jvsetupdetails = new List<JVSetupDetail>();
try
{
JVSetupDetailService setupDetailService = new JVSetupDetailService();
jvsetupdetails = setupDetailService.GetByJVSetup(JVSetupID);
}
catch (Exception e)
{
#region Handle Exception
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return jvsetupdetails;
}
public List<JVSetup> GetByJVTypeAndMonth(int jvTypeID, DateTime dDate)
{
List<JVSetup> jvsetups = new List<JVSetup>();
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetByJVTypeAndMonth(tc, jvTypeID, dDate));
jvsetups = this.CreateObjects<JVSetup>(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 jvsetups;
}
public int Save(JVSetup oJVSetup)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
if (oJVSetup.IsNew)
{
oJVSetup.CreatedDate = DateTime.Now;
oJVSetup.CreatedBy = oJVSetup.CreatedBy;
int id = tc.GenerateID("JVSetup", "JVSetupID");
base.SetObjectID(oJVSetup, id);
JVSetupDA.Insert(tc, oJVSetup);
foreach (JVSetupDetail jvSetupDetail in oJVSetup.JVSetupDetails)
{
jvSetupDetail.CreatedDate = DateTime.Now;
jvSetupDetail.CreatedBy = oJVSetup.CreatedBy;
jvSetupDetail.JVSetupID = oJVSetup.ID;
int detailID = tc.GenerateID("JVSetupDetail", "JVSetupDetailID");
base.SetObjectID(jvSetupDetail, detailID);
JVSetupDetailDA.Insert(tc, jvSetupDetail);
}
foreach (JVSetupCC jvSetupCC in oJVSetup.JVSetupCC)
{
jvSetupCC.CreatedDate = DateTime.Now;
jvSetupCC.CreatedBy = jvSetupCC.CreatedBy;
jvSetupCC.JVSetupID = oJVSetup.ID;
int setCCID = tc.GenerateID("JVSetupCC", "JVSetupCCID");
base.SetObjectID(jvSetupCC, setCCID);
JVSetupCCDA.Insert(tc, jvSetupCC);
}
foreach (JVSetupGrade jvSetupGrade in oJVSetup.JVSetupGrades)
{
jvSetupGrade.CreatedDate = DateTime.Now;
jvSetupGrade.CreatedBy = jvSetupGrade.CreatedBy;
jvSetupGrade.JVSetupID = oJVSetup.ID;
int setGradeID = tc.GenerateID("JVSetupGrade", "JVSetupGradeID");
base.SetObjectID(jvSetupGrade, setGradeID);
JVSetupGradeDA.Insert(tc, jvSetupGrade);
}
}
else
{
JVSetupDA.Update(tc, oJVSetup);
JVSetupDA.DeleteDetail(tc, oJVSetup.ID);
JVSetupDA.DeleteCC(tc, oJVSetup.ID);
JVSetupDA.DeleteGrades(tc, oJVSetup.ID);
foreach (JVSetupDetail jvSetupDetail in oJVSetup.JVSetupDetails)
{
jvSetupDetail.ModifiedDate = DateTime.Now;
jvSetupDetail.CreatedBy = jvSetupDetail.CreatedBy;
jvSetupDetail.JVSetupID = oJVSetup.ID;
int detailID = tc.GenerateID("JVSetupDetail", "JVSetupDetailID");
base.SetObjectID(jvSetupDetail, detailID);
JVSetupDetailDA.Insert(tc, jvSetupDetail);
}
foreach (JVSetupCC jvSetupCC in oJVSetup.JVSetupCC)
{
jvSetupCC.CreatedDate = DateTime.Now;
jvSetupCC.CreatedBy = jvSetupCC.CreatedBy;
jvSetupCC.JVSetupID = oJVSetup.ID;
int SetCCID = tc.GenerateID("JVSetupCC", "JVSetupCCID");
base.SetObjectID(jvSetupCC, SetCCID);
JVSetupCCDA.Insert(tc, jvSetupCC);
}
foreach (JVSetupGrade jvSetupGrade in oJVSetup.JVSetupGrades)
{
jvSetupGrade.CreatedDate = DateTime.Now;
jvSetupGrade.CreatedBy = jvSetupGrade.CreatedBy;
jvSetupGrade.JVSetupID = oJVSetup.ID;
int setGradeID = tc.GenerateID("JVSetupGrade", "JVSetupGradeID");
base.SetObjectID(jvSetupGrade, setGradeID);
JVSetupGradeDA.Insert(tc, jvSetupGrade);
}
}
tc.End();
return oJVSetup.ID;
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException("Failed to Insert JVSetup", e);
#endregion
}
}
public void UpdateSequence(List<JVSetup> oJVSetups)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
foreach (JVSetup jvSetup in oJVSetups)
{
jvSetup.ModifiedBy = jvSetup.CreatedBy;
jvSetup.ModifiedDate = DateTime.Now;
JVSetupDA.UpdateSequence(tc, jvSetup);
}
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException("Failed to Update Sequence No.", e);
#endregion
}
}
public void Delete(int id)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
JVSetupDA.DeleteGrades(tc, id);
JVSetupDetailDA.DeleteByJVSetup(tc, id);
JVSetupDA.DeleteCC(tc, id);
JVSetupDA.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 List<JVSetup> Get()
{
throw new NotImplementedException();
}
public DateTime GetMaxDate(DateTime dGivenDate)
{
throw new NotImplementedException();
}
public List<JVSetup> GetByMonthDate(DateTime dtMonthDate)
{
throw new NotImplementedException();
}
#endregion
}
#endregion
}