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; using System.Text; namespace Payroll.Service { #region TermParameter Service [Serializable] public class TermParameterService : ServiceTemplate, ITermParameterService { #region Private functions and declaration Cache _cache = new Cache(typeof(TermParameter)); #endregion public TermParameterService() { } private void MapObject(TermParameter oTermParameter, DataReader oReader) { base.SetObjectID(oTermParameter, oReader.GetID("TermParameterID")); oTermParameter.TermID = oReader.GetID("termID"); oTermParameter.EffectDate = oReader.GetDateTime("effectDate").Value; oTermParameter.Amount = oReader.GetDouble("amount").Value; oTermParameter.Type = (EnumOverTimeType)oReader.GetInt32("type").Value; oTermParameter.CreatedBy = oReader.GetID("CreatedBy"); oTermParameter.CreatedDate = oReader.GetDateTime("CreationDate").Value; oTermParameter.ModifiedBy = oReader.GetID("ModifiedBy"); oTermParameter.ModifiedDate = oReader.GetDateTime("ModifiedDate"); this.SetObjectState(oTermParameter, Ease.CoreV35.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { TermParameter oTermParameter = new TermParameter(); MapObject(oTermParameter, oReader); return oTermParameter as T; } protected TermParameter CreateObject(DataReader oReader) { TermParameter oTermParameter = new TermParameter(); MapObject(oTermParameter, oReader); return oTermParameter; } private void MapObjectForTEGrade(TermParameter.TermEntityGrade oTermEGrade, DataReader oReader) { base.SetObjectID(oTermEGrade, oReader.GetID("TermentityID")); oTermEGrade.TermEntityID = oReader.GetID("TermentityID"); oTermEGrade.GradeID = oReader.GetID("GRADEID"); this.SetObjectState(oTermEGrade, Ease.CoreV35.ObjectState.Saved); } //protected override T CreateObject1(DataReader oReader) //{ // TermEntityGrade oTermEGrade = new TermEntityGrade(); // MapObjectForTEGrade(oTermEGrade, oReader); // return oTermEGrade as T; //} protected TermParameter.TermEntityGrade CreateObjectForTEGrade(DataReader oReader) { TermParameter.TermEntityGrade oTermEGrade = new TermParameter.TermEntityGrade(); MapObjectForTEGrade(oTermEGrade, oReader); return oTermEGrade; } private ObjectsTemplate FillChildren(DataReader dr) { ObjectsTemplate _TerEGrades = new ObjectsTemplate(); while (dr.Read()) { TermParameter.TermEntityGrade item = this.CreateObjectForTEGrade(dr); _TerEGrades.Add(item); } return _TerEGrades; } #region Service implementation public TermParameter Get(ID id) { TermParameter oTermParameter = new TermParameter(); #region Cache Header oTermParameter = _cache["Get", id] as TermParameter; if (oTermParameter != null) return oTermParameter; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(TermParameterDA.Get(tc, id)); if (oreader.Read()) { oTermParameter = this.CreateObject(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(oTermParameter, "Get", id); #endregion return oTermParameter; } public ObjectsTemplate Get2(ID payrollTypeID) { #region Cache Header ObjectsTemplate termParams = _cache["Get"] as ObjectsTemplate; if (termParams != null) return termParams; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(TermParameterDA.Get2(tc, payrollTypeID)); termParams = this.CreateObjects(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(termParams, "Get"); #endregion return termParams; } public ObjectsTemplate GetByGradeID(ID nGradeID) { #region Cache Header ObjectsTemplate termParams = _cache["Get",nGradeID] as ObjectsTemplate; if (termParams != null) return termParams; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(TermParameterDA.GetByGradeID(tc,nGradeID)); termParams = this.CreateObjects(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(termParams, "Get",nGradeID); #endregion return termParams; } public ObjectsTemplate GetGrades(ID nID) { #region Cache Header ObjectsTemplate termEntityGrades = _cache["Get", nID] as ObjectsTemplate; if (termEntityGrades != null) return termEntityGrades; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(TermParameterDA.GetGrades(tc, nID)); termEntityGrades=FillChildren(dr); //termEntityGrades = this.CreateObjects(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(termEntityGrades, "Get", nID); #endregion return termEntityGrades; } public ID Save(TermParameter oTermParameter) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oTermParameter.IsNew) { int id = tc.GenerateID("TermParameter", "TermParameterID"); base.SetObjectID(oTermParameter, ID.FromInteger(id)); TermParameterDA.Insert(tc, oTermParameter); } else { TermParameterDA.Update(tc, oTermParameter); TermParameterDA.DeleteGrade(tc, oTermParameter.ID); } foreach (TermParameter.TermEntityGrade teGrade in oTermParameter.TermEntityGrades) { teGrade.TermEntityID = oTermParameter.ID; TermParameterDA.Insert(tc, teGrade); } SetupDetailService sdetailService = new SetupDetailService(); sdetailService.Save(tc, EnumParameterSetup.OT, oTermParameter.SetupDetails, oTermParameter.ID); //Newly Added by ashek 20 dec 2015 // Update oteligible property of employee table if (oTermParameter.SetupDetails != null && oTermParameter.SetupDetails.Count > 0) { string sIDs = oTermParameter.SetupDetails .Aggregate(new StringBuilder(), (sb, item) => sb.Append(item.TranID.Integer + ","), s => s.ToString().Trim(',')); EmployeeDA.UpdateOTFlag(tc, sIDs); } tc.End(); return oTermParameter.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Delete(ID id) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); SetupDetailService sd = new SetupDetailService(); sd.Delete(tc, EnumParameterSetup.OT, id); TermParameterDA.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 }