//This controller obtains a list of pay summary objects for the week selected in the UI public ActionResult GetPayData(TimeSheet model) { List <PaySummary> paySumList = new List <PaySummary>(); PaySummary paySum = new PaySummary(); var wED = model.WeekEnding; List <int> empIds = paySum.GetEmpIdsByWeekEndDate(wED); foreach (int empId in empIds) { paySumList.Add(new PaySummary(empId, wED)); } Session["PaySummaryList"] = paySumList; return(RedirectToAction("Index", "HR")); }
private IEnumerable <PaySummary> GetRepaySummaryList() { var allRepayTask = context.li_repayment_tasks.Where(r => r.status != (int)Agp2pEnums.RepaymentStatusEnum.Invalid) .OrderByDescending(r => r.should_repay_time); var query2 = allRepayTask.GroupBy(r => r.should_repay_time.Year + "年" + r.should_repay_time.Month + "月"); var query3 = query2.AsEnumerable().OrderByDescending(r => r.Key).Zip(Utils.Infinite(1), (rt, no) => new { rt, no }).Select(rs => { var repayTasks = rs.rt; PaySummary paySummary = new PaySummary { Index = rs.no.ToString(), YearMonth = repayTasks.Key }; //已付款 repayTasks.Where(r => r.status >= (int)Agp2pEnums.RepaymentStatusEnum.ManualPaid).ForEach(r => { getRepayTransactions(r).ForEach(p => { paySummary.RepayAmount += p.interest + p.principal ?? p.principal; paySummary.RepayCount++; }); }); //逾期付款 int overTimePay = repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.OverTimePaid).Sum(r => getRepayTransactions(r).Count()); //逾期未付款 int overTimeNotPay = 0; decimal overTimeNotPayAmount = 0; repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.OverTime).ForEach(r => { getRepayTransactions(r).ForEach(p => { overTimeNotPayAmount += p.interest + p.principal ?? p.principal; overTimeNotPay++; }); }); //未到期付款 int noYetPay = 0; decimal noYetPayAmount = 0; repayTasks.Where(r => r.status == (int)Agp2pEnums.RepaymentStatusEnum.Unpaid).ForEach(r => { getRepayTransactions(r).ForEach(p => { noYetPayAmount += p.interest + p.principal ?? p.principal; noYetPay++; }); }); paySummary.ShouldRepayCount = paySummary.RepayCount + overTimeNotPay + noYetPay; paySummary.ShouldRepayAmount = (paySummary.RepayAmount + overTimeNotPayAmount + noYetPayAmount).ToString("c"); paySummary.RepayRate = (paySummary.RepayCount / paySummary.ShouldRepayCount).ToString("P1"); paySummary.RepayOnTimeCount = paySummary.RepayCount - overTimePay; paySummary.RepayOnTimeRate = (paySummary.RepayOnTimeCount / paySummary.ShouldRepayCount).ToString("P1"); paySummary.OverCount = overTimePay + overTimeNotPay; paySummary.OverRate = (paySummary.OverCount / paySummary.ShouldRepayCount).ToString("P1"); paySummary.OverNoRepayCount = overTimeNotPay; paySummary.OverNoRepayRate = (overTimeNotPay / paySummary.ShouldRepayCount).ToString("P1"); return(paySummary); }).AsQueryable(); totalCount = query3.Count(); return(query3); }