CEL_Payroll/Payroll.Service/JV/Service/JVSetupService.cs
2024-09-17 14:30:13 +06:00

446 lines
16 KiB
C#

using System;
using System.Data;
using System.Linq;
using Ease.CoreV35;
using Ease.CoreV35.Model;
using Ease.CoreV35.DataAccess;
using System.Collections.Generic;
using Payroll.BO;
using Ease.CoreV35.Caching;
namespace Payroll.Service
{
#region JVSetup Service
[Serializable]
public class JVSetupService : ServiceTemplate, IJVSetupService
{
#region Private functions and declaration
Cache _cache = new Cache(typeof(JVSetup));
public JVSetupService() { }
private void MapObject(JVSetup oJVSetup, DataReader oReader)
{
base.SetObjectID(oJVSetup, ID.FromInteger(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 ? null : ID.FromInteger(oReader.GetInt32("JVTypeID").Value);
oJVSetup.PayrollTypeID = oReader.GetString("PayrollTypeID") == null ? null : ID.FromInteger(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");
oJVSetup.EmployeeID = oReader.GetString("EmployeeID") == null ? null : ID.FromInteger(oReader.GetInt32("EmployeeID").Value);
this.SetObjectState(oJVSetup, Ease.CoreV35.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(ID id)
{
JVSetup oJVSetup = new JVSetup();
#region Cache Header
oJVSetup = (JVSetup)_cache["Get", id];
if (oJVSetup != null)
return oJVSetup;
#endregion
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
}
#region Cache Footer
_cache.Add(oJVSetup, "Get", id);
#endregion
return oJVSetup;
}
public ObjectsTemplate<JVSetup> Get()
{
#region Cache Header
ObjectsTemplate<JVSetup> oJVSetups = _cache["Get"] as ObjectsTemplate<JVSetup>;
if (oJVSetups != null)
return oJVSetups;
#endregion
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader oreader = new DataReader(JVSetupDA.Get(tc));
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
}
#region Cache Footer
_cache.Add(oJVSetups, "Get");
#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)
{
DateTime dMaxDate = DateTime.Now;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
dMaxDate = JVSetupDA.GetMaxDate(tc, dGivenDate);
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 ObjectsTemplate<JVSetup> GetByJVType(ID jvSetupID)
{
#region Cache Header
ObjectsTemplate<JVSetup> jvsetups = _cache["GetByJVType", jvSetupID] as ObjectsTemplate<JVSetup>;
if (jvsetups != null)
return jvsetups;
#endregion
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
}
#region Cache Footer
_cache.Add(jvsetups, "GetByJVType", jvSetupID);
#endregion
return jvsetups;
}
public ObjectsTemplate<JVSetup> GetByJVTypeAndEffectDate(ID jvSetupID, DateTime dEffectDate)
{
#region Cache Header
ObjectsTemplate<JVSetup> jvsetups = _cache["GetByJVTypeAndEffectDate", jvSetupID, dEffectDate] as ObjectsTemplate<JVSetup>;
if (jvsetups != null)
return jvsetups;
#endregion
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
}
#region Cache Footer
_cache.Add(jvsetups, "GetByJVTypeAndEffectDate", jvSetupID, dEffectDate);
#endregion
return jvsetups;
}
public ObjectsTemplate<JVSetup> GetByMonthDate(DateTime dtMonthDate)
{
#region Cache Header
ObjectsTemplate<JVSetup> jvsetups = _cache["GetByMonthDate", dtMonthDate] as ObjectsTemplate<JVSetup>;
if (jvsetups != null)
return jvsetups;
#endregion
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataReader dr = new DataReader(JVSetupDA.GetByMonthDate(tc, dtMonthDate));
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
}
#region Cache Footer
_cache.Add(jvsetups, "GetByMonthDate", dtMonthDate);
#endregion
return jvsetups;
}
public ObjectsTemplate<JVSetupDetail> GetChildByParentID(ID JVSetupID)
{
#region Cache Header
ObjectsTemplate<JVSetupDetail> jvsetupdetails = _cache["GetChildByParentID", JVSetupID] as ObjectsTemplate<JVSetupDetail>;
if (jvsetupdetails != null)
return jvsetupdetails;
#endregion
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
}
#region Cache Footer
_cache.Add(jvsetupdetails, "GetChildByParentID", JVSetupID);
#endregion
return jvsetupdetails;
}
public ObjectsTemplate<JVSetup> GetByJVTypeAndMonth(ID jvTypeID, DateTime dDate)
{
#region Cache Header
ObjectsTemplate<JVSetup> jvsetups = _cache["GetByJVTypeAndMonth", jvTypeID, dDate] as ObjectsTemplate<JVSetup>;
if (jvsetups != null)
return jvsetups;
#endregion
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
}
#region Cache Footer
_cache.Add(jvsetups, "GetByJVTypeAndMonth", jvTypeID, dDate);
#endregion
return jvsetups;
}
public ID Save(JVSetup oJVSetup)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
if (oJVSetup.IsNew)
{
oJVSetup.CreatedDate = DateTime.Now;
oJVSetup.CreatedBy = User.CurrentUser.ID;
int id = tc.GenerateID("JVSetup", "JVSetupID");
base.SetObjectID(oJVSetup, ID.FromInteger(id));
JVSetupDA.Insert(tc, oJVSetup);
foreach (JVSetupDetail jvSetupDetail in oJVSetup.JVSetupDetails)
{
jvSetupDetail.CreatedDate = DateTime.Now;
jvSetupDetail.CreatedBy = User.CurrentUser.ID;
jvSetupDetail.JVSetupID = oJVSetup.ID;
int detailID = tc.GenerateID("JVSetupDetail", "JVSetupDetailID");
base.SetObjectID(jvSetupDetail, ID.FromInteger(detailID));
JVSetupDetailDA.Insert(tc, jvSetupDetail);
}
foreach (JVSetupCC jvSetupCC in oJVSetup.JVSetupCC)
{
jvSetupCC.CreatedDate = DateTime.Now;
jvSetupCC.CreatedBy = User.CurrentUser.ID;
jvSetupCC.JVSetupID = oJVSetup.ID;
int setCCID = tc.GenerateID("JVSetupCC", "JVSetupCCID");
base.SetObjectID(jvSetupCC, ID.FromInteger(setCCID));
JVSetupCCDA.Insert(tc, jvSetupCC);
}
}
else
{
JVSetupDA.Update(tc, oJVSetup);
JVSetupDA.DeleteDetail(tc, oJVSetup.ID);
JVSetupDA.DeleteCC(tc, oJVSetup.ID);
foreach (JVSetupDetail jvSetupDetail in oJVSetup.JVSetupDetails)
{
jvSetupDetail.ModifiedDate = DateTime.Now;
jvSetupDetail.CreatedBy = User.CurrentUser.ID;
jvSetupDetail.JVSetupID = oJVSetup.ID;
int detailID = tc.GenerateID("JVSetupDetail", "JVSetupDetailID");
base.SetObjectID(jvSetupDetail, ID.FromInteger(detailID));
JVSetupDetailDA.Insert(tc, jvSetupDetail);
}
foreach (JVSetupCC jvSetupCC in oJVSetup.JVSetupCC)
{
jvSetupCC.CreatedDate = DateTime.Now;
jvSetupCC.CreatedBy = User.CurrentUser.ID;
jvSetupCC.JVSetupID = oJVSetup.ID;
int SetCCID = tc.GenerateID("JVSetupCC", "JVSetupCCID");
base.SetObjectID(jvSetupCC, ID.FromInteger(SetCCID));
JVSetupCCDA.Insert(tc, jvSetupCC);
}
}
tc.End();
return oJVSetup.ID;
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException("Failed to Save JVSetup", e);
#endregion
}
}
public void UpdateSequence(ObjectsTemplate<JVSetup> oJVSetups)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
foreach (JVSetup jvSetup in oJVSetups)
{
jvSetup.ModifiedBy = User.CurrentUser.ID;
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(ID id)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin(true);
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
}
}
#endregion
}
#endregion
}