using System; using System.Collections.Generic; using System.Data; using System.Linq; using Ease.Core.Model; using Ease.Core.DataAccess; using Ease.Core.Model; using Ease.Core.Utility; using HRM.BO; namespace HRM.DA { public class FmLoanService : ServiceTemplate //, ILoanService, IFASService { public FmLoanService() { } #region Child Schedule function private void MapLoanSchedule(FmLoanSchedule loanSchedule, DataReader dr) { base.SetObjectID(loanSchedule, dr.GetInt32("LoanScheduleID").Value); loanSchedule.ActivityID = dr.GetInt32("ActivityID").Value; loanSchedule.CustomerID = dr.GetInt32("CustomerID").Value; loanSchedule.EffectiveBalance = dr.GetDouble("EffectiveBalance").Value; loanSchedule.InstallmentAmount = dr.GetDouble("InstallmentAmount").Value; loanSchedule.InstallmentInterest = dr.GetDouble("InstallmentInterest").Value; loanSchedule.InstallmentPrincipal = dr.GetDouble("InstallmentPrincipal").Value; loanSchedule.LoanCategoryID = dr.GetInt32("LoanCategoryID").Value; loanSchedule.LoanID = dr.GetInt32("LoanID").Value; loanSchedule.PayDate = dr.GetDateTime("PayDate"); loanSchedule.ScheduledPayDate = dr.GetDateTime("ScheduledPayDate").Value; loanSchedule.SerialNo = dr.GetInt32("SerialNo").Value; loanSchedule.CreatedBy = dr.GetInt32("CreatedBy").Value; loanSchedule.CreatedDate = dr.GetDateTime("CreatedDate").Value; loanSchedule.ModifiedBy = dr.GetInt32("ModifiedBy"); loanSchedule.ModifiedDate = dr.GetDateTime("ModifiedDate"); loanSchedule.ProjectID = dr.GetInt32("ProjectID").Value; base.SetObjectState(loanSchedule, Ease.Core.ObjectState.Saved); } private FmLoanSchedule CreateSchedules(DataReader dr) { FmLoanSchedule loanSchedule = new FmLoanSchedule(); MapLoanSchedule(loanSchedule, dr); return loanSchedule; } private void FillSchedules(FmLoan parent, DataReader dr) { while (dr.Read()) { FmLoanSchedule item = this.CreateSchedules(dr); parent.LoanSchedules.Add(item); } } internal void LoadSchedule(TransactionContext tc, FmLoan loan) { try { if (loan != null && loan.ID != null && loan.ID != 0) { //Get LoanSchedule DataReader dr = new DataReader(FmLoanDA.GetSchedules(tc, loan.ID)); FillSchedules(loan, dr); dr.Close(); } } catch (Exception e) { throw e; } } #endregion #region Child LoanCategory private void MapCategoryObject(LoanCategory loanCategory, DataReader dr) { base.SetObjectID(loanCategory, dr.GetInt32("LoanCategoryID").Value); loanCategory.DefaultInterestRate = dr.GetDouble("DefaultInterestRate").Value; loanCategory.LoanCategoryCode = dr.GetString("LoanCategoryCode"); loanCategory.Description = dr.GetString("Description"); loanCategory.IsActive = (EnumLoanCategoryStatus)dr.GetInt16("IsActive").Value; loanCategory.MaxAlowableFlatAmount = dr.GetDouble("MaxAlowableFlatAmount"); loanCategory.MaxInstallment = dr.GetInt32("MaxInstallment").Value; loanCategory.MinInstallment = dr.GetInt32("MinInstallment").Value; loanCategory.PercentageofFund = dr.GetDouble("PercentageofFund"); loanCategory.Version = dr.GetInt16("Version").Value; loanCategory.CreatedBy = dr.GetInt32("CreatedBy").Value; loanCategory.CreatedDate = dr.GetDateTime("CreatedDate").Value; loanCategory.ModifiedBy = dr.GetInt32("ModifiedBy"); loanCategory.ModifiedDate = dr.GetDateTime("ModifiedDate"); loanCategory.ProjectID = dr.GetInt32("ProjectID").Value; base.SetObjectState(loanCategory, Ease.Core.ObjectState.Saved); } private LoanCategory CreateCategoryObject(DataReader dr) { LoanCategory loanCategory = new LoanCategory(); MapCategoryObject(loanCategory, dr); return loanCategory; } internal void LoadCategory(TransactionContext tc, FmLoan loan) { try { if (loan != null && loan.LoanCategoryID != null && loan.LoanCategoryID != 0) { //Get LoanCategory LoanCategory loanCategory = null; DataReader dr = new DataReader(FmLoanDA.GetCategory(tc, loan.LoanCategoryID)); if (dr.Read()) { loanCategory = this.CreateCategoryObject(dr); } dr.Close(); } } catch (Exception e) { throw e; } } #endregion #region Child LoanCustomer //private void MapCustomerObject(LoanCustomer loanCustomer, DataReader dr) //{ // base.SetObjectID(loanCustomer, dr.GetID("CustomerID")); // loanCustomer.AccNo = dr.GetString("AccNo"); // loanCustomer.Address = dr.GetString("Address"); // loanCustomer.DateOfBirth = dr.GetDateTime("DateOfBirth").Value; // loanCustomer.DateOfJoining = dr.GetDateTime("DateOfJoining").Value; // loanCustomer.EmpCode = dr.GetString("EmpCode"); // loanCustomer.IsMember = dr.GetBoolean("IsMember").Value; // loanCustomer.MemberShipNo = dr.GetString("MemberShipNo"); // loanCustomer.Name = dr.GetString("Name"); // loanCustomer.CreatedBy = dr.GetID("CreatedBy"); // loanCustomer.CreatedDate = dr.GetDateTime("CreatedDate").Value; // loanCustomer.ModifiedBy = dr.GetID("ModifiedBy"); // loanCustomer.ModifiedDate = dr.GetDateTime("ModifiedDate"); // loanCustomer.ProjectID = dr.GetID("ProjectID"); // loanCustomer.MemberID = dr.GetID("MemberID"); // loanCustomer.MembershipDate = dr.GetDateTime("MembershipDate").HasValue?dr.GetDateTime("MembershipDate").Value:DateTime.MinValue; // loanCustomer.Email = dr.GetString("Email"); // base.SetObjectState(loanCustomer, Ease.Core.ObjectState.Saved); //} //private LoanCustomer CreateCustomerObject(DataReader dr) //{ // LoanCustomer loanCustomer = new LoanCustomer(); // MapCustomerObject(loanCustomer, dr); // return loanCustomer; //} //internal void LoadCustomer(TransactionContext tc, Loan loan) //{ // try // { // if (loan != null && loan.ID != null && loan.ID.Integer != 0) // { // //Get LoanCustomer // LoanCustomer loanCustomer = null; // DataReader dr = new DataReader(LoanDA.GetCustomer(tc, loan.CustomerID)); // if (dr.Read()) // { // loanCustomer = this.CreateCustomerObject(dr); // } // dr.Close(); // } // } // catch (Exception e) // { // throw e; // } //} #endregion #region parent Loan Section private void MapObject(FmLoan loan, DataReader dr) { base.SetObjectID(loan, dr.GetInt32("LoanID").Value); loan.ActivityID = dr.GetInt32("ActivityID").Value; loan.CustomerID = dr.GetInt32("CustomerID").Value; loan.Description = dr.GetString("Description"); loan.InstallmentNo = dr.GetInt32("InstallmentNo").Value; loan.InterestRate = dr.GetDouble("InterestRate") != null ? dr.GetInt32("InterestRate").Value : 0; loan.IssueDate = dr.GetDateTime("IssueDate").Value; loan.LoanCategoryID = dr.GetInt32("LoanCategoryID").Value; loan.LoanNo = dr.GetString("LoanNo"); loan.Remarks = dr.GetString("Remarks"); loan.LoanAccNo = dr.GetString("LoanAccNo"); loan.MemberID = dr.GetInt32("MemberID").Value; loan.PrincipalAmount = dr.GetDouble("PrincipalAmount").Value; loan.Status = (EnumLoanStatus)dr.GetInt16("Status").Value; loan.LoanIssueStatus = (EnumLoanIssueStatus)dr.GetInt16("LoanIssueStatus").Value; loan.Version = dr.GetInt32("Version") != null ? dr.GetInt32("Version").Value : 0; loan.CreatedBy = dr.GetInt32("CreatedBy").Value; loan.CreatedDate = dr.GetDateTime("CreatedDate").Value; loan.ModifiedBy = dr.GetInt32("ModifiedBy"); loan.ModifiedDate = dr.GetDateTime("ModifiedDate"); loan.ProjectID = dr.GetInt32("ProjectID").Value; loan.GLTranID = dr.GetInt32("GLTranID").Value; loan.StartPayBackMonth = dr.GetDateTime("StartPayBackMonth") != null ? dr.GetDateTime("StartPayBackMonth").Value : DateTime.MinValue; loan.TransferLogIDinInt = dr.GetInt32("TransferLogID") != null ? dr.GetInt32("TransferLogID").Value : 0; base.SetObjectState(loan, Ease.Core.ObjectState.Saved); } protected override T CreateObject(DataReader dr) { FmLoan loan = new FmLoan(); MapObject(loan, dr); return loan as T; } #endregion //Add LoanService //public void UpdateLoanInfos(TransactionContext tc, List loans, List loanReceivers) //{ // try // { // foreach (FmLoan loan in loans) // { // if (loan.IsModified) // { // loan.ModifiedBy = FM.BO.Common.User.CurrentUser.ID; // loan.ModifiedDate = GlobalFunctions.GetServerDate().Date; // LoanDA.UpdateLoanInfo(tc, loan); // } // foreach (FmLoanSchedule loanSchedule in loan.LoanSchedules) // { // if (loanSchedule.IsModified) // { // loanSchedule.ModifiedBy = FM.BO.Common.User.CurrentUser.ID; // loanSchedule.ModifiedDate = GlobalFunctions.GetServerDate().Date; // LoanScheduleDA.UpdateLoanPaid(tc, loanSchedule); // } // } // } // foreach (LoanReceiver loanRvr in loanReceivers) // { // SaveVoucher(tc, loanRvr.iFASTranObject_glTrans, (int)EnumLoanTransactionType.MonthlyInstallmentRealization); // } // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } //} #region Service Implementation #region Insert //public void Insert(FmLoan loan, int noOfMonth, DateTime fromMonth, double rate) //{ // FmLoan oloan = new FmLoan(); // oloan = loan; // string logstring = string.Empty; // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(true); // if (oloan.IsNew) // { // if (oloan.LoanCustomer.IsNew) // { // int customerID = tc.GenerateID("LoanCustomer", "CustomerID"); // //int customerID = base.GetNewID(tc, "LoanCustomer", "CustomerID"); // base.SetObjectID(oloan.LoanCustomer, ID.FromInteger(customerID)); // oloan.LoanCustomer.CreatedBy = oloan.CreatedBy; // oloan.LoanCustomer.CreatedDate = oloan.CreatedDate; // FmLoanDA.Insert(tc, oloan.LoanCustomer); // oloan.CustomerID = oloan.LoanCustomer.ID; // } // else // { // oloan.LoanCustomer.ModifiedBy = oloan.ModifiedBy; // oloan.LoanCustomer.ModifiedDate = oloan.ModifiedDate; // LoanDA.Update(tc, oloan.LoanCustomer); // } // //10-04--23057246-LS001-001 // //oloan.LoanAccNo = GenerateLoanNo(oloan); // //oloan.LoanNo = oloan.LoanAccNo; // int id = tc.GenerateID("Loan", "LoanID"); // base.SetObjectID(oloan, ID.FromInteger(id)); // LoanDA.Insert(tc, oloan); // // SaveUserRecords(tc, oloan.iFASUserObject_helperForSubsidiarysUpload); // SaveVoucher(tc, oloan.ForVoucher_glTrans , (int)EnumLoanActivity.LoanIssue); // LoanDA.UpdateGLTranID(tc,oloan.ID.Integer,oloan.ForVoucher_glTrans[0].ID.Integer); // LoanTransaction loanTransaction = new LoanTransaction(); // loanTransaction = loanTransaction.CreateLoanTransaction(loanTransaction, oloan.CustomerID, oloan.ID, EnumLoanTransactionType.LoanIssue, oloan.PrincipalAmount, null, oloan.IssueDate, oloan.CreatedBy, oloan.CreatedDate); // int tranId = tc.GenerateID("LoanTransaction", "LoanTransactionID"); // base.SetObjectID(loanTransaction, ID.FromInteger(tranId)); // LoanTransactionDA.Insert(tc, loanTransaction); // } // else if (oloan.IsModified) // { // if (oloan.LoanCustomer.IsNew) // { // int customerID = tc.GenerateID("LoanCustomer", "CustomerID"); // //int customerID = base.GetNewID(tc, "LoanCustomer", "CustomerID"); // base.SetObjectID(oloan.LoanCustomer, ID.FromInteger(customerID)); // oloan.LoanCustomer.CreatedBy = oloan.CreatedBy; // oloan.LoanCustomer.CreatedDate = oloan.CreatedDate; // LoanDA.Insert(tc, oloan.LoanCustomer); // oloan.CustomerID = oloan.LoanCustomer.ID; // } // else // { // oloan.LoanCustomer.ModifiedBy = oloan.ModifiedBy; // oloan.LoanCustomer.ModifiedDate = oloan.ModifiedDate; // LoanDA.Update(tc, oloan.LoanCustomer); // } // LoanDA.Update(tc, oloan); // SaveVoucher(tc, oloan.ForVoucher_glTrans, (int)EnumLoanActivity.LoanIssue); // LoanDA.UpdateGLTranID(tc, oloan.ID.Integer, oloan.ForVoucher_glTrans[0].ID.Integer); // } // LoanDA.DeleteLoanSchedule(tc, oloan.ID); // foreach (var item in oloan.LoanSchedules) // { // item.ProjectID = oloan.ProjectID; // item.CustomerID = oloan.CustomerID; // item.LoanID = oloan.ID; // item.LoanCategoryID = oloan.LoanCategoryID; // item.CreatedBy = oloan.CreatedBy; // item.CreatedDate = oloan.CreatedDate; // int id = tc.GenerateID("LoanSchedule", "LoanScheduleID"); // base.SetObjectID(item, ID.FromInteger(id)); // LoanDA.Insert(tc, item); // } // //logstring = oloan.LoanCategoryID.ToString() + "," + oloan.ID.ToString() + "," + oloan.LoanNo.ToString() + "," + oloan.CustomerID.ToString() + "," + oloan.LoanCustomer.EmpCode.ToString() + "," + oloan.CreatedBy.ToString() + "," + oloan.CreatedDate.ToString() + "," + oloan.Activity.ToString(); // LoanLog loanLog = new LoanLog(); // loanLog = loanLog.CreateLog(loanLog, oloan.LoanCategoryID, oloan.ID, oloan.LoanNo, oloan.CustomerID, oloan.LoanCustomer.EmpCode, oloan.CreatedBy, oloan.CreatedDate, oloan.Activity, noOfMonth, fromMonth, rate); // int logId = tc.GenerateID("LoanLog", "LogID"); // //int logId = base.GetNewID(tc,"LoanLog", "LogID"); // base.SetObjectID(loanLog, ID.FromInteger(logId)); // LoanDA.Insert(tc, loanLog); // tc.End(); // CacheInfo.ClearCache(typeof(FmLoanService).FullName); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } //} public void Save(FmLoan loan) { FmLoan oLoan = new FmLoan(); oLoan = loan; TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oLoan.IsNew) { int id = tc.GenerateID("FmLoan", "LoanID"); base.SetObjectID(oLoan, id); FmLoanDA.Insert(tc, oLoan); } else { FmLoanDA.Update(tc, oLoan); } tc.End(); //return oLoanTransaction.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void SetLoanStatus() { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); FmLoanDA.SetLoanStatus(tc); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } //public void UpdateSchedules(List oloanSchedules, EaseFAS.BO.GLTrans otrans) //{ // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(true); // foreach (FmLoanSchedule oitem in oloanSchedules) // { // LoanDA.UpdateLoanSchedule(tc, oitem); // } // Ease.Core.DataAccess.TransactionContext coretc = Ease.Core.DataAccess.TransactionContext.SetConnection(tc.Connection, tc.Transaction); // EaseFAS.Service.GLTranService oservice = new EaseFAS.Service.GLTranService(); // oservice.Insert(coretc, otrans); // tc.End(); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } //} public void UpdateLoanIssueStatus(FmLoan oLoan) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); FmLoanDA.UpdateLoanIssueStatus(tc, oLoan); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } //public void SaveEarlySettlement(FmLoan oloan, LoanLog loanLog) //{ // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(true); // if (oloan.IsModified) // { // FmLoanDA.UpdateLoanEarlySettle(tc, oloan); // SaveVoucher(tc, oloan.iFASTranObject_glTrans, (int)EnumLoanActivity.EarlySettlement); // } // bool isEarlySettle = true; // foreach (var item in oloan.LoanSchedules) // { // if (oloan.InstallmentNo > item.SerialNo && item.PayDate == GlobalFunctionDA.ServerDate(tc).Date && item.InstallmentInterest == 0 && item.InstallmentAmount == item.EffectiveBalance) // //if (oloan.InstallmentNo >= item.SerialNo && item.InstallmentInterest == 0 && item.InstallmentAmount == item.EffectiveBalance) // { // item.ModifiedBy = FM.BO.Common.User.CurrentUser.ID; // item.ModifiedDate = GlobalFunctionDA.ServerDate(tc); // LoanDA.UpdateLoanSchedule(tc, item); // isEarlySettle = true; // } // else if (isEarlySettle && item.PayDate==null) // { // LoanDA.DeleteLoanScheduleByID(tc, item.ID); // } // } // int logId = tc.GenerateID("LoanLog", "LogID"); // //int logId = base.GetNewID(tc, "LoanLog", "LogID"); // base.SetObjectID(loanLog, ID.FromInteger(logId)); // LoanDA.Insert(tc, loanLog); // LoanDA.UpdateGLTranID(tc, oloan.ID.Integer, oloan.ForVoucher_glTrans[0].ID.Integer); // //SaveVoucher(tc, oloan.ForVoucher_glTrans, (int)EnumLoanActivity.EarlySettlement); // tc.End(); // CacheInfo.ClearCache(typeof(FmLoanService).FullName); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } // } //public void SaveEarlySettlement(TransactionContext tc, FmLoan oloan, LoanLog loanLog) //{ // try // { // if (oloan.IsModified) // { // oloan.ModifiedBy = FM.BO.Common.User.CurrentUser.ID; // oloan.ModifiedDate = GlobalFunctionDA.ServerDate(tc); // LoanDA.UpdateLoanEarlySettle(tc, oloan); // } // bool isEarlySettle = false; // foreach (var item in oloan.LoanSchedules) // { // //DateTime dTime = GlobalFunctionDA.ServerDate(tc).Date; // if (oloan.InstallmentNo == item.SerialNo && item.PayDate.Value.Date == GlobalFunctionDA.ServerDate(tc).Date && item.InstallmentInterest == 0 && item.InstallmentAmount == item.EffectiveBalance) // { // item.ModifiedBy = FM.BO.Common.User.CurrentUser.ID; // item.ModifiedDate = GlobalFunctionDA.ServerDate(tc); // LoanDA.UpdateLoanSchedule(tc, item); // isEarlySettle = true; // } // else if (isEarlySettle && item.PayDate == null) // { // LoanDA.DeleteLoanScheduleByID(tc, item.ID); // } // } // if (isEarlySettle) // { // int logId = base.GetNewID(tc, "LoanLog", "LogID"); // base.SetObjectID(loanLog, ID.FromInteger(logId)); // loanLog.CreatedBy = FM.BO.Common.User.CurrentUser.ID; // loanLog.CreatedDate = GlobalFunctionDA.ServerDate(tc); // LoanDA.Insert(tc, loanLog); // } // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } //} #endregion #region GenerateLoanNo //public string GenerateLoanNo(FmLoan loan) //{ // string serial = string.Empty; // string s = string.Empty; // TransactionContext tc = null; // try // { // //string year = loan.IssueDate.Year.ToString(); // //year = year.Substring(2); // //string month = loan.IssueDate.Month.ToString(); // //if (month.Length == 1) // //{ // // month = "0" + month; // //} // //s = year + "-" + month + "-"; // s = "PFLOAN"; // if (loan.LoanCustomer != null && loan.LoanCategoryID != null && !loan.LoanCategoryID.IsUnassigned && loan.LoanCategoryID.Integer > 0) // { // //s = s + "-" + loan.LoanCustomer.EmpCode.ToString() + "-" + loan.LoanCategory.LoanCategoryCode.ToString() + "-"; // s = s + "//" + loan.LoanCustomer.EmpCode.ToString() + "/"; // } // tc = TransactionContext.Begin(); // int serialNo = LoanDA.GenerateLoanNo(tc, loan.MemberID, loan.LoanCategoryID); // tc.End(); // serialNo = serialNo + 1; // serial = serialNo.ToString(); // if (serial.Length == 1) // { // serial = "00" + serial; // } // if (serial.Length == 2) // { // serial = "0" + serial; // } // serial = s + serial; // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // ExceptionLog.Write(e); // throw new ServiceException(e.Message, e); // #endregion // } // return serial; //} #endregion #region Delete public void Delete(int id) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); FmLoanDA.DeleteLoanSchedule(tc, id); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException("Failed to Delete " + e.Message); ; #endregion } } #endregion //#region ISExist Month //public bool ISValidMonth(Loan loan, DateTime dt) //{ // bool exists = false; // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(true); // exists = LoanDA.ISValidMonth(tc, loan, dt); // tc.End(); // } // catch (Exception e) // { // throw new ServiceException("Failed to Check by code" + e.Message, e); // } // return exists; //} //#endregion #region Get Loan public FmLoan Get(string LoanNo) { FmLoan loan = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(FmLoanDA.Get(tc, LoanNo)); if (dr.Read()) { loan = this.CreateObject(dr); } dr.Close(); LoadSchedule(tc, loan); LoadCategory(tc, loan); // LoadCustomer(tc, loan); tc.End(); //tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return loan; } public FmLoan Get(int loanID, bool isGetSchedule, bool isGetCategory, bool isGetCustomer) { FmLoan loan = new FmLoan(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(LoanDA.Get(tc, loanID)); if (dr.Read()) { loan = this.CreateObject(dr); } dr.Close(); if (isGetSchedule) { LoadSchedule(tc, loan); } if (isGetCategory) { LoadCategory(tc, loan); } //if (isGetCustomer) //{ // LoadCustomer(tc, loan); //} tc.End(); //tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return loan; } #endregion public bool GetIsUsedUserObjectName(LoanCategory loanCategory) { bool found = false; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dataReader = new DataReader(FmLoanDA.Get(tc, loanCategory)); if (dataReader.Read()) found = true; tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return found; } #region Get() public List Get() { List loans = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(FmLoanDA.Get(tc)); loans = this.CreateObjects(dr); dr.Close(); foreach (FmLoan loan in loans) { LoadSchedule(tc, loan); } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return loans; } public List Get(int runningLoan, bool isWithSchedule) { List loans = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(true); DataReader dr = new DataReader(FmLoanDA.Get(tc, runningLoan)); loans = this.CreateObjects(dr); dr.Close(); if (isWithSchedule) { foreach (FmLoan loan in loans) { LoadSchedule(tc, loan); } } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return loans; } public List GetNotSendLoan(int runningLoan, bool isWithSchedule) { List loans = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(true); DataReader dr = new DataReader(FmLoanDA.GetNotSendLoan(tc, runningLoan)); loans = this.CreateObjects(dr); dr.Close(); if (isWithSchedule) { foreach (FmLoan loan in loans) { LoadSchedule(tc, loan); } } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return loans; } #endregion //#region GetBySearch //public ObjectsTemplate GetBySearch(string sSearch) //{ // #region Cache Header // ObjectsTemplate loans = _cache["GetBySearch", sSearch] as ObjectsTemplate; // if (loans != null) // return loans; // #endregion // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(); // DataReader dr = new DataReader(LoanDA.GetBySearch(tc, sSearch)); // loans = 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(loans, "GetBySearch", sSearch); // #endregion // return loans; //} //#endregion #region GetLoanMember //public DataTable GetLoanMember(int loanCategoryID, string issueOperator, DateTime issueFromDate, DateTime issueToDate, string collectionOperator, DateTime collectionFromDate, DateTime collectionToDate, EnumLoanStatus status, int memberID, int custID) //{ // DataSet ds = new DataSet(); // TransactionContext tc = null; // try // { // string subQuery = string.Empty; // if (loanCategoryID != null && !loanCategoryID.IsUnassigned && loanCategoryID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" cat.LoanCategoryID = %n", loanCategoryID); // } // if (issueOperator != string.Empty && issueOperator != "None" && issueOperator != "" && issueOperator != "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate " + issueOperator + " %d ", issueFromDate); // } // if (issueOperator == "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate Between %d AND %d ", issueFromDate, issueToDate); // } // //if (collectionOperator != string.Empty && collectionOperator != "None" && collectionOperator != "" && collectionOperator != "<>") // //{ // // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth " + collectionOperator + " %d ", collectionFromDate); // //} // //if (issueOperator == "<>") // //{ // // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth Between %d AND %d ", collectionFromDate, collectionToDate); // //} // string statusClause = string.Empty; // if (status != EnumLoanStatus.All) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.Status = %n", status); // } // string memberClause = string.Empty; // if (custID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" cust.CustomerID = %n", custID); // } // tc = TransactionContext.Begin(true); // ds = FmLoanDA.GetLoanMember(tc, subQuery, custID); // tc.End(); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // throw new ServiceException(e.Message, e); // #endregion // } // return ds.Tables[0]; //} #endregion #region GetLoanList //public DataTable GetLoanList(EnumLoanStatus status, int memberID) //{ // DataSet ds = new DataSet(); // TransactionContext tc = null; // try // { // string subQuery = string.Empty; // string statusClause = string.Empty; // if (status != EnumLoanStatus.All) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.Status = %n", status); // } // string memberClause = string.Empty; // if (memberID != null && !memberID.IsUnassigned && memberID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.MemberID = %n", memberID); // } // tc = TransactionContext.Begin(true); // ds = FmLoanDA.GetLoanList(tc, subQuery); // tc.End(); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // throw new ServiceException(e.Message, e); // #endregion // } // return ds.Tables[0]; //} //public DataTable GetLoanList(int loanCategoryID, string issueOperator, DateTime issueFromDate, DateTime issueToDate, string collectionOperator, DateTime collectionFromDate, DateTime collectionToDate, EnumLoanIssueStatus status, int memberID) //{ // DataSet ds = new DataSet(); // TransactionContext tc = null; // try // { // string subQuery = string.Empty; // if (loanCategoryID != null && !loanCategoryID.IsUnassigned && loanCategoryID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" cat.LoanCategoryID = %n", loanCategoryID); // } // if (issueOperator != string.Empty && issueOperator != "None" && issueOperator != "" && issueOperator != "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate " + issueOperator + " %d ", issueFromDate); // } // if (issueOperator == "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate Between %d AND %d ", issueFromDate, issueToDate); // } // if (collectionOperator != string.Empty && collectionOperator != "None" && collectionOperator != "" && collectionOperator != "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth " + collectionOperator + " %d ", collectionFromDate); // } // //if (issueOperator == "<>") // //{ // // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth Between %d AND %d ", collectionFromDate, collectionToDate); // //} // string statusClause = string.Empty; // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.LoanIssueStatus = %n", status); // string memberClause = string.Empty; // if (memberID != null && !memberID.IsUnassigned && memberID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" m.MemberID = %n", memberID); // } // tc = TransactionContext.Begin(true); // ds = FmLoanDA.GetLoanList(tc, subQuery); // tc.End(); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // throw new ServiceException(e.Message, e); // #endregion // } // return ds.Tables[0]; //} //public DataTable GetLoanList(int loanCategoryID, string issueOperator, DateTime issueFromDate, DateTime issueToDate, string collectionOperator, DateTime collectionFromDate, DateTime collectionToDate, EnumLoanStatus status, int memberID) //{ // DataSet ds = new DataSet(); // TransactionContext tc = null; // try // { // string subQuery = string.Empty; // if (loanCategoryID != null && !loanCategoryID.IsUnassigned && loanCategoryID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" cat.LoanCategoryID = %n", loanCategoryID); // } // if (issueOperator != string.Empty && issueOperator != "None" && issueOperator != "" && issueOperator != "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate " + issueOperator + " %d ", issueFromDate); // } // if (issueOperator == "<>") // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.IssueDate Between %d AND %d ", issueFromDate, issueToDate); // } // //if (collectionOperator != string.Empty && collectionOperator != "None" && collectionOperator != "" && collectionOperator != "<>") // //{ // // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth " + collectionOperator + " %d ", collectionFromDate); // //} // //if (issueOperator == "<>") // //{ // // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.StartPayBackMonth Between %d AND %d ", collectionFromDate, collectionToDate); // //} // string statusClause = string.Empty; // if (status != EnumLoanStatus.All) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" issue.Status = %n", status); // } // string memberClause = string.Empty; // if (memberID != null && !memberID.IsUnassigned && memberID > 0) // { // subQuery = SQLParser.TagSQL(subQuery) + SQLParser.MakeSQL(" m.MemberID = %n", memberID); // } // tc = TransactionContext.Begin(true); // ds = FmLoanDA.GetLoanList(tc, subQuery); // tc.End(); // } // catch (Exception e) // { // #region Handle Exception // if (tc != null) // tc.HandleError(); // throw new ServiceException(e.Message, e); // #endregion // } // return ds.Tables[0]; //} #endregion #region GetTable public DataTable GetTable(DateTime fromDate, DateTime toDate) { DataTable dTbl = new DataTable(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); dTbl = FmLoanDA.GetTable(tc, fromDate, toDate); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return dTbl; } public DataTable GetTable(string smemberId, DateTime fromDate, DateTime toDate) { DataTable dTbl = new DataTable(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); dTbl = FmLoanDA.GetTable(tc, smemberId, fromDate, toDate); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return dTbl; } public DataTable GetLoanInfoByMonth(DateTime scheduleMonth) { DataTable dtLoanScheduleInfo = new DataTable(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); dtLoanScheduleInfo = FmLoanDA.GetLoanInfoByMonth(tc, scheduleMonth); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return dtLoanScheduleInfo; } public DataSet GetLoans() { DataTable dt = new DataTable(); DataSet ds = new DataSet(); TransactionContext tc = null; try { ConnectionContext cc = new ConnectionContext("serviceHandler1"); tc = TransactionContext.Begin(true, cc); ds = FmLoanDA.GetLoans(tc); tc.End(); } catch (Exception e) { throw new ServiceException("Failed to Get Members" + e.Message, e); } return ds; } #endregion #endregion #region IFASService Members //public void SaveUserRecords(TransactionContext tc, List subsidiarysUpload) //{ // UserRecordService userRecordService = new UserRecordService(); // foreach (HelperForSubsidiaryUpload subUpload in subsidiarysUpload) // { // if (subUpload.UserRcds.Count > 0) // { // foreach (UserRecord userRecord in subUpload.UserRcds) // { // _uploadedUserRecordID = userRecordService.Insert(tc, userRecord); // } // } // } //} //public void SaveVoucher(TransactionContext tc, EaseFAS.BO.GLTrans glTrans, int systemTranIDinInt) //{ // EaseFAS.Service.GLTranService glTranService = new EaseFAS.Service.GLTranService(); // Ease.Core.DataAccess.TransactionContext tcore = Ease.Core.DataAccess.TransactionContext.SetConnection(tc.Connection, tc.Transaction); // glTranService.Insert(tcore, glTrans); //} #endregion internal void Delete(TransactionContext tc, Loan loan) { try { FmLoanDA.DeleteLoanLog(tc, loan.ID); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } } }