//List<PaymentDetailsReport> reportList = new List<PaymentDetailsReport>(); private void ShowPaymentDetails(Payment p) { var holdersRepos = _unitOfWork.FamilyMembers; var periodsRepos = _unitOfWork.PeriodSettings; var sequenceRepos = _unitOfWork.PaymentSequences; var paymentsRepos = _unitOfWork.Payments; var detailsRepos = _unitOfWork.PaymentTransactions; var historyRepos = _unitOfWork.LoanPayments; var loansRepos = _unitOfWork.Loans; IList <FamilyMember> holders = holdersRepos.GetAll(); IList <PeriodSetting> perods = periodsRepos.GetAll(); IList <PaymentSequence> sequences = sequenceRepos.GetAll(); IList <Payment> payments = paymentsRepos.GetAll(); IList <PaymentTransaction> details = detailsRepos.GetAll(); // var results = from payment in payments join detail in details on payment.PaymentNo equals detail.PaymentNo join holder in holders on detail.MemberCode equals holder.Code join period in perods on payment.PayYear equals period.Id join sequ in sequences on payment.PaySequence equals sequ.Id where p.PaymentNo == payment.PaymentNo //new Added select new { detail.TransNo, ShareHolderCode = holder.Code, holder.FullName, PeriodSettingsId = period.Id, Year = period.YearPart, SequenId = sequ.Id, SequenDesc = sequ.SequenceDescription, SharesNo = detail.ShareNumbers, PaymentAmount = payment.Amount, TotalPayments = (payment.Amount * detail.ShareNumbers), LoansTatal = detail.AmountDue, detail.NetPayments, MemberSex = holder.Sex }; foreach (var result in results) { //var loans = loansRepos.Query( // lo => lo.ShareHolder.Code == result.ShareHolderCode // && // lo.PaymentSequence.Id == result.SequenId // && // lo.PeriodSetting.Id == result.PeriodSettingsId // ).ToList(); var resultCopy = result; //Copy foreach variable to avoid accessing it in clousre List <LoanPayment> loansPaymentHistory = historyRepos.Query( hist => hist.FamilyMember.Code == resultCopy.ShareHolderCode && hist.PaymentTransaction.Payment.PaymentSequence.Id == resultCopy.SequenId && hist.PaymentTransaction.Payment.PeriodSetting.Id == resultCopy.PeriodSettingsId).ToList(); if (loansPaymentHistory.Count != 0) { bool isFirstLine = true; foreach (LoanPayment history in loansPaymentHistory) { if (isFirstLine) { //For Show var pdrHeader = new PaymentDetailsReport ( result.TransNo, result.ShareHolderCode, result.FullName, result.Year, result.SequenDesc, result.PaymentAmount, result.SharesNo, result.TotalPayments, history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, result.LoansTatal, result.NetPayments, result.MemberSex ); PaymentDetails.Add(pdrHeader); var spdHeader = new SearchablePaymentDetails ( result.TransNo, result.ShareHolderCode, result.FullName, result.Year, result.SequenDesc, result.PaymentAmount, result.SharesNo, result.TotalPayments, history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, result.LoansTatal, result.NetPayments, result.MemberSex, true ); _seacrhablePaymentDetails.Add(spdHeader); isFirstLine = false; continue; } var pdrDetail = new PaymentDetailsReport ( result.TransNo, history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, result.MemberSex ); PaymentDetails.Add(pdrDetail); var spdDetail = new SearchablePaymentDetails ( result.TransNo, result.ShareHolderCode, result.FullName, result.Year, result.SequenDesc, result.PaymentAmount, result.SharesNo, result.TotalPayments, history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, result.LoansTatal, result.NetPayments, result.MemberSex, false ); _seacrhablePaymentDetails.Add(spdDetail); } } else { var pdr = new PaymentDetailsReport( result.TransNo, result.ShareHolderCode, result.FullName, result.Year, result.SequenDesc, result.PaymentAmount, result.SharesNo, result.TotalPayments, 0.00M, null, null, result.LoansTatal, result.NetPayments, result.MemberSex ); PaymentDetails.Add(pdr); var spd = new SearchablePaymentDetails ( result.TransNo, result.ShareHolderCode, result.FullName, result.Year, result.SequenDesc, result.PaymentAmount, result.SharesNo, result.TotalPayments, 0.00M, null, null, result.LoansTatal, result.NetPayments, result.MemberSex, true ); _seacrhablePaymentDetails.Add(spd); } } }
private void ShowData(PaymentTransaction detail, bool isFirstLine, Tuple <double, double, string> progMetadata) { double p = (progMetadata.Item1 / progMetadata.Item2) * 100; string currMember = progMetadata.Item3; //Action action = () => // { if (_uiLoansHistory.Count > 0) { foreach (LoanPayment history in _uiLoansHistory) { if (isFirstLine) { //This for show. var pdrHeader = new PaymentDetailsReport( detail.TransNo, detail.FamilyMember.Code, detail.FamilyMember.FullName, detail.Payment.PeriodSetting.YearPart, detail.Payment.PaymentSequence.SequenceDescription, detail.Payment.Amount, detail.FamilyMember.Shares, (detail.Payment.Amount * detail.FamilyMember.Shares), history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, detail.AmountDue, detail.NetPayments, detail.FamilyMember.Sex); PaymentDetails.Add(pdrHeader); //This for search. var spdHeader = new SearchablePaymentDetails ( detail.TransNo, detail.FamilyMember.Code, detail.FamilyMember.FullName, detail.Payment.PeriodSetting.YearPart, detail.Payment.PaymentSequence.SequenceDescription, detail.Payment.Amount, detail.FamilyMember.Shares, (detail.Payment.Amount * detail.FamilyMember.Shares), history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, detail.AmountDue, detail.NetPayments, detail.FamilyMember.Sex, true ); _seacrhablePaymentDetails.Add(spdHeader); isFirstLine = false; continue; } //This for show. var pdrDetail = new PaymentDetailsReport ( detail.TransNo, history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, detail.FamilyMember.Sex ); PaymentDetails.Add(pdrDetail); //This for search. var spdDetail = new SearchablePaymentDetails ( detail.TransNo, detail.FamilyMember.Code, detail.FamilyMember.FullName, detail.Payment.PeriodSetting.YearPart, detail.Payment.PaymentSequence.SequenceDescription, detail.Payment.Amount, detail.FamilyMember.Shares, (detail.Payment.Amount * detail.FamilyMember.Shares), history.AmountPaid, history.Loan.LoanType.LoanDescription, history.Loan.Remarks, detail.AmountDue, detail.NetPayments, detail.FamilyMember.Sex, false ); _seacrhablePaymentDetails.Add(spdDetail); } _uiLoansHistory.Clear(); } else { var pdr = new PaymentDetailsReport ( detail.TransNo, detail.FamilyMember.Code, detail.FamilyMember.FullName, detail.Payment.PeriodSetting.YearPart, detail.Payment.PaymentSequence.SequenceDescription, detail.Payment.Amount, detail.FamilyMember.Shares, (detail.Payment.Amount * detail.FamilyMember.Shares), 0.00M, null, null, detail.AmountDue, detail.NetPayments, detail.FamilyMember.Sex ); PaymentDetails.Add(pdr); var spd = new SearchablePaymentDetails ( detail.TransNo, detail.FamilyMember.Code, detail.FamilyMember.FullName, detail.Payment.PeriodSetting.YearPart, detail.Payment.PaymentSequence.SequenceDescription, detail.Payment.Amount, detail.FamilyMember.Shares, (detail.Payment.Amount * detail.FamilyMember.Shares), 0.00M, null, null, detail.AmountDue, detail.NetPayments, detail.FamilyMember.Sex, true ); _seacrhablePaymentDetails.Add(spd); } ProgressCounter = p; ProgCurrent = currMember; //}; //Dispatcher.Invoke(action, null); }