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 OpiParameter Service [Serializable] public class OpiParameterService : ServiceTemplate, IOpiParameterService { #region Private functions and declaration Cache _cache = new Cache(typeof(OpiParameter)); public OpiParameterService() { } private void MapObject(OpiParameter oOpiParameter, DataReader oReader) { base.SetObjectID(oOpiParameter, oReader.GetID("OpiParameterID")); oOpiParameter.OpiType = (EnumOpiType)oReader.GetInt32("OpiType").Value; oOpiParameter.AmountToDistribute = oReader.GetDouble("AmountToDistribute").Value; oOpiParameter.AvgMonth = oReader.GetInt32("AvgMonth").Value; oOpiParameter.FlatAmount = oReader.GetDouble("FlatAmount").Value; oOpiParameter.ProvisionAmount = oReader.GetDouble("ProvisionAmount").Value; oOpiParameter.MinAmount = oReader.GetDouble("MinAmount") == null ? 0.0 : oReader.GetDouble("MinAmount").Value; oOpiParameter.MaxAmount = oReader.GetDouble("MaxAmount") == null ? 0.0 : oReader.GetDouble("MaxAmount").Value; oOpiParameter.FromDate = oReader.GetDateTime("FromDate") == null ? DateTime.MinValue : oReader.GetDateTime("FromDate").Value; oOpiParameter.ToDate = oReader.GetDateTime("ToDate") == null ? DateTime.MinValue : oReader.GetDateTime("ToDate").Value; oOpiParameter.Gender = (EnumGender)oReader.GetInt32("Gender"); oOpiParameter.Status = (EnumStatus)oReader.GetInt32("Status"); //oOpiParameter.Sequence = oReader.GetInt32("Sequence").Value; oOpiParameter.IsActive = oReader.GetBoolean("IsActive").Value; oOpiParameter.IsEarnedBasic = oReader.GetBoolean("IsEarnedBasic").Value; oOpiParameter.IsTaxable = oReader.GetBoolean("IsTaxable").Value; oOpiParameter.IsConfirmed = oReader.GetBoolean("IsConfirmed").Value; oOpiParameter.IsFractionate = oReader.GetBoolean("IsFractionate").Value; oOpiParameter.IsWithException = oReader.GetBoolean("IsWithException").Value; oOpiParameter.OpiItemID = oReader.GetID("OpiItemID"); oOpiParameter.OpiPeriodicity = (EnumOpiPeriodicity)oReader.GetInt32("OpiPeriodicity"); oOpiParameter.PercentOfBasic = oReader.GetDouble("PercentOfBasic").Value; oOpiParameter.PercentOfGross = oReader.GetDouble("PercentOfGross").Value; oOpiParameter.EntitleType = (EnumEntitleType)oReader.GetInt32("EntitleType").Value; oOpiParameter.OpiAvgPayType = (EnumOpiAvgPayType)oReader.GetInt32("OpiAvgPayType").Value; oOpiParameter.OpiAvgPayItemID = oReader.GetID("OpiAvgPayItemID"); oOpiParameter.NoOfMonth = oReader.GetInt32("NoOfMonth").Value; oOpiParameter.CreatedBy = oReader.GetID("CreatedBy"); oOpiParameter.CreatedDate = oReader.GetDateTime("CreationDate").Value; oOpiParameter.ModifiedBy = oReader.GetID("ModifiedBy"); oOpiParameter.ModifiedDate = oReader.GetDateTime("ModifiedDate"); oOpiParameter.AnnualGrossPerBand = oReader.GetDouble("ANNUALGROSSPERBAND").Value; oOpiParameter.PerformanceAchievement = oReader.GetDouble("PERFORMANCEACHIEVEMENT").Value; this.SetObjectState(oOpiParameter, Ease.CoreV35.ObjectState.Saved); } private void MapParameterGradeObject(OpiParameterGrade oGrade, DataReader oReader) { base.SetObjectID(oGrade, oReader.GetID("OpiParameterID")); oGrade.OpiParameterId = oReader.GetID("OpiParameterID"); oGrade.GradeId = oReader.GetID("GradeID"); oGrade.OpiItemId = oReader.GetID("OpiItemId"); this.SetObjectState(oGrade, Ease.CoreV35.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { OpiParameter oOpiParameter = new OpiParameter(); MapObject(oOpiParameter, oReader); return oOpiParameter as T; } protected OpiParameter CreateObject(DataReader oReader) { OpiParameter oOpiParameter = new OpiParameter(); MapObject(oOpiParameter, oReader); return oOpiParameter; } protected ObjectsTemplate CreateParameterGradeObject(DataReader oReader) { ObjectsTemplate oGrades = new ObjectsTemplate(); while (oReader.Read()) { OpiParameterGrade oGrade = new OpiParameterGrade(); MapParameterGradeObject(oGrade, oReader); oGrades.Add(oGrade); } return oGrades; } #endregion #region Service implementation public OpiParameter Get(ID id) { OpiParameter oOpiParameter = new OpiParameter(); #region Cache Header oOpiParameter = (OpiParameter)_cache["Get", id]; if (oOpiParameter != null) return oOpiParameter; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(OpiParameterDA.Get(tc, id)); if (oreader.Read()) { oOpiParameter = 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(oOpiParameter, "Get", id); #endregion return oOpiParameter; } public ObjectsTemplate GetByPayrollTypeID(ID payrollTypeID) { #region Cache Header ObjectsTemplate oOpiParameters = _cache["Get"] as ObjectsTemplate; if (oOpiParameters != null) return oOpiParameters; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(OpiParameterDA.Get(tc, payrollTypeID)); oOpiParameters = this.CreateObjects(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(oOpiParameters, "Get"); #endregion return oOpiParameters; } public ObjectsTemplate GetGrades(ID opiParameterID, ID payrollTypeID) { #region Cache Header ObjectsTemplate oGrade = _cache["Get", opiParameterID] as ObjectsTemplate; if (oGrade != null) return oGrade; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.GetGrades(tc, opiParameterID, payrollTypeID)); oGrade = this.CreateParameterGradeObject(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(oGrade, "Get", opiParameterID); #endregion return oGrade; } public ObjectsTemplate GetGrades(ID payrollTypeID) { ObjectsTemplate oGrades = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.GetGrades(tc, payrollTypeID)); oGrades = this.CreateParameterGradeObject(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 oGrades; } public ObjectsTemplate Get(EnumStatus status, ID payrollTypeID) { #region Cache Header ObjectsTemplate opiParameters = _cache["Get", status] as ObjectsTemplate; if (opiParameters != null) return opiParameters; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.Get(tc, status, payrollTypeID)); opiParameters = 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(opiParameters, "Get", status); #endregion return opiParameters; } public ObjectsTemplate Get(EnumStatus status, EnumOpiType nType, ID payrollTypeID) { #region Cache Header ObjectsTemplate opiParameters = _cache["Get", status, nType] as ObjectsTemplate; if (opiParameters != null) return opiParameters; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.Get(tc, status, nType, payrollTypeID)); opiParameters = this.CreateObjects(dr); foreach (OpiParameter oparam in opiParameters) { oparam.OpiParameterGrades = this.GetGrades(oparam.ID, payrollTypeID); } 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(opiParameters, "Get", status, nType); #endregion return opiParameters; } public ID Save(OpiParameter oOpiParameter, ID payrollTypeID) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oOpiParameter.IsNew) { int id = tc.GenerateID("OpiParameter", "OpiParameterID"); base.SetObjectID(oOpiParameter, ID.FromInteger(id)); OpiParameterDA.Insert(tc, oOpiParameter, payrollTypeID); } else { oOpiParameter.ModifiedDate = DateTime.Now; oOpiParameter.ModifiedBy = User.CurrentUser.ID; OpiParameterDA.Update(tc, oOpiParameter, payrollTypeID); OpiParameterDA.DeleteGrades(tc, oOpiParameter.ID, payrollTypeID); OpiParameterIndividualDA.DeletebyOpiParamId(tc, oOpiParameter.ID); } foreach (OpiParameterIndividual opiIndv in oOpiParameter.OpiParameterIndividuals) { opiIndv.OpiParameterID = oOpiParameter.ID; int id = tc.GenerateID("OpiParameterIndividual", "OpiParameterIndividualID"); base.SetObjectID(opiIndv, ID.FromInteger(id)); opiIndv.CreatedDate = DateTime.Now; opiIndv.CreatedBy = User.CurrentUser.ID; OpiParameterIndividualDA.Insert(tc, opiIndv, payrollTypeID); } foreach (OpiParameterGrade oGrade in oOpiParameter.OpiParameterGrades) { oGrade.CreatedDate = DateTime.Now; oGrade.CreatedBy = User.CurrentUser.ID; oGrade.OpiParameterId = oOpiParameter.ID; oGrade.OpiItemId = oOpiParameter.OpiItemID; OpiParameterDA.InsertGrade(tc, oGrade, payrollTypeID); } tc.End(); return oOpiParameter.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, ID payrollTypeID) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); OpiParameterDA.Delete(tc, id, payrollTypeID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } #endregion #region IOpiParameterService Members public ObjectsTemplate Get(EnumStatus enumStatus, EnumOpiType enumOpiType, EnumEntitleType enumEntitleType, ID payrollTypeID) { ObjectsTemplate opiParameters = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.Get(tc, enumStatus, enumOpiType, enumEntitleType, payrollTypeID)); opiParameters = this.CreateObjects(dr); foreach (OpiParameter oparam in opiParameters) { oparam.OpiParameterGrades = this.GetGrades(oparam.ID, payrollTypeID); } 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 opiParameters; } public ObjectsTemplate Get(EnumStatus enumStatus, EnumEntitleType enumEntitleType, ID payrollTypeID) { ObjectsTemplate opiParameters = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(OpiParameterDA.Get(tc, enumStatus, enumEntitleType, payrollTypeID)); opiParameters = this.CreateObjects(dr); foreach (OpiParameter oparam in opiParameters) { oparam.OpiParameterGrades = this.GetGrades(oparam.ID, payrollTypeID); } 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 opiParameters; } #endregion } #endregion }