using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35; using Ease.CoreV35.Model; using Ease.CoreV35.DataAccess; using Payroll.BO; using Ease.CoreV35.Caching; namespace Payroll.Service { #region LoanParameter Service [Serializable] public class LoanParameterService : ServiceTemplate, ILoanParameterService { #region Private functions and declaration Cache _cache = new Cache(typeof(LoanParameter)); Cache _loanGrade = new Cache(typeof(LoanGrades)); Cache _loanDocCache = new Cache(typeof(LoanDoc)); #endregion public LoanParameterService() { } #region MapObject For LoanParameter private void MapObject(LoanParameter oLoanParameter, DataReader oReader) { base.SetObjectID(oLoanParameter, oReader.GetID("LoanParameterID")); oLoanParameter.LoanID = oReader.GetID("LoanID"); oLoanParameter.NoOfGross = oReader.GetDouble("NoOfGross").Value; oLoanParameter.NoOfBasic = oReader.GetDouble("NoOfBasic").Value; oLoanParameter.MinInstallmentMonth = oReader.GetInt32("MinInstallmentMonth").Value; oLoanParameter.MaxInstallmentMonth = oReader.GetInt32("MaxInstallmentMonth").Value; oLoanParameter.MinReconcileMonth = oReader.GetInt32("MinReconcileMonth").Value; oLoanParameter.CreatedBy = oReader.GetID("CreatedBy"); oLoanParameter.CreatedDate = oReader.GetDateTime("CreationDate").Value; oLoanParameter.ModifiedBy = oReader.GetID("ModifiedBy"); oLoanParameter.ModifiedDate = oReader.GetDateTime("ModifiedDate"); oLoanParameter.MinFlatAmount = oReader.GetDouble("MinFlatAmount").Value; oLoanParameter.MaxFlatAmount = oReader.GetDouble("MaxFlatAmount").Value; this.SetObjectState(oLoanParameter, Ease.CoreV35.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { LoanParameter oLoanParameter = new LoanParameter(); MapObject(oLoanParameter, oReader); return oLoanParameter as T; } protected LoanParameter CreateObject(DataReader oReader) { LoanParameter oLoanParameter = new LoanParameter(); MapObject(oLoanParameter, oReader); return oLoanParameter; } #endregion #region MapObject For LoanGrades private void MapLoanGrades(LoanGrades oLoanGrades, DataReader oReader) { base.SetObjectID(oLoanGrades, oReader.GetID("LoanGradesID")); oLoanGrades.LoanID = oReader.GetID("LoanID"); oLoanGrades.LoanParameterID = oReader.GetID("LoanParameterID"); oLoanGrades.GradeID = oReader.GetID("GradeID"); this.SetObjectState(oLoanGrades, Ease.CoreV35.ObjectState.Saved); } protected ObjectsTemplate CreateLoanGradesObject(DataReader oReader) { ObjectsTemplate oLoanGrades = new ObjectsTemplate(); while (oReader.Read()) { LoanGrades oLoanGrade = new LoanGrades(); MapLoanGrades(oLoanGrade, oReader); oLoanGrades.Add(oLoanGrade); } return oLoanGrades; } #endregion #region MaoObject For LoanDoc private void MapLoanDocs(LoanDoc oLoanDocs, DataReader oReader) { base.SetObjectID(oLoanDocs, oReader.GetID("LoanDocsID")); oLoanDocs.HRDocID = oReader.GetID("HRDocID"); oLoanDocs.LoanID = oReader.GetID("LoanID"); oLoanDocs.LoanParameterID = oReader.GetID("LoanParameterID"); this.SetObjectState(oLoanDocs, Ease.CoreV35.ObjectState.Saved); } protected ObjectsTemplate CreateLoanDocsObject(DataReader oReader) { ObjectsTemplate oLoanDocs = new ObjectsTemplate(); while (oReader.Read()) { LoanDoc oLoanDoc = new LoanDoc(); MapLoanDocs(oLoanDoc, oReader); oLoanDocs.Add(oLoanDoc); } return oLoanDocs; } #endregion #region Implement LoanParameter Service public LoanParameter Get(ID id) { LoanParameter oLoanParameter = new LoanParameter(); #region Cache Header oLoanParameter = _cache["Get", id] as LoanParameter; if (oLoanParameter != null) return oLoanParameter; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(LoanParameterDA.Get(tc, id)); if (oreader.Read()) { oLoanParameter = 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(oLoanParameter, "Get", id); #endregion return oLoanParameter; } public ObjectsTemplate Get() { #region Cache Header ObjectsTemplate LoanParameters = _cache["Get"] as ObjectsTemplate; if (LoanParameters != null) return LoanParameters; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(LoanParameterDA.Get(tc)); LoanParameters = 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(LoanParameters, "Get"); #endregion return LoanParameters; } public ID Save(LoanParameter oLoanParameter) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oLoanParameter.IsNew) { int id = tc.GenerateID("LoanParameter", "LoanParameterID"); base.SetObjectID(oLoanParameter, ID.FromInteger(id)); LoanParameterDA.Insert(tc, oLoanParameter); } else { LoanParameterDA.Update(tc, oLoanParameter); LoanParameterDA.DeleteLoanGrade(tc, oLoanParameter.ID.Integer); LoanParameterDA.DeleteLoanDoc(tc,oLoanParameter.ID.Integer); } foreach (LoanGrades oLoanGrades in oLoanParameter.LoadGradesTemp) { oLoanGrades.LoanParameterID = oLoanParameter.ID; oLoanGrades.LoanID = oLoanParameter.LoanID; int loanGradeId = tc.GenerateID("LoanGrades", "LoanGradesID"); base.SetObjectID(oLoanGrades, ID.FromInteger(loanGradeId)); LoanParameterDA.InsertLoadGrades(tc, oLoanGrades); } foreach(LoanDoc docItem in oLoanParameter.LoadDocsTemp) { docItem.LoanParameterID = oLoanParameter.ID; docItem.LoanID = oLoanParameter.LoanID; int loanDocID = tc.GenerateID("LoanDocs", "LoanDocsID"); base.SetObjectID(docItem,ID.FromInteger(loanDocID)); LoanParameterDA.InsertDocItem(tc,docItem); } tc.End(); return oLoanParameter.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); LoanParameterDA.DeleteLoanGrade(tc,id.Integer); LoanParameterDA.DeleteLoanDoc(tc,id.Integer); LoanParameterDA.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 #region Implement LoanGrade Service public ObjectsTemplate GetLoanGrades(int loanParameterID) { #region Cache Header ObjectsTemplate loanGradess = _loanGrade["Get"] as ObjectsTemplate; if (loanGradess != null) return loanGradess; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(LoanParameterDA.GetLoanGrades(tc,loanParameterID)); loanGradess = this.CreateLoanGradesObject(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 _loanGrade.Add(loanGradess, "Get"); #endregion return loanGradess; } public ObjectsTemplate GetLoanDoc(int loanParameterID) { #region Cache Header ObjectsTemplate loanDocs = _loanDocCache["Get"] as ObjectsTemplate; if (loanDocs != null) return loanDocs; #endregion TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(LoanParameterDA.GetLoanDoc(tc, loanParameterID)); loanDocs = this.CreateLoanDocsObject(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 _loanDocCache.Add(loanDocs, "Get"); #endregion return loanDocs; } #endregion } #endregion }