public ActionResult OverdueFees(long id) { var parent = repository.GetUser(id); var canview = parent.GetCanView(sessionid.Value, auth); if (!canview) { return(SendJsonNoPermission()); } var studentids = parent.students_guardians1.Select(x => x.studentid).ToArray(); var viewmodel = new LateFeeAlertSiblings(studentids); return(View(viewmodel)); }
public ActionResult Alerts(long[] studentids) { var viewmodel = new LateFeeAlertSiblings(studentids); return(View(new[] { viewmodel })); }
public ActionResult Index() { var viewmodel = new FinanceViewModel(baseviewmodel); viewmodel.schoolList = new[] { new SelectListItem() { Value = "", Text = "Select school ..." } }.Union( repository.GetSchools().Select(x => new SelectListItem() { Text = x.name, Value = x.id.ToString() })); // don't care about reminders, otherwise if reminder is > today then it will not show up // check if they are any overdue fees. grouped by var overdueStudents = db.fees.Where(x => x.status == FeePaymentStatus.UNPAID.ToString() && x.duedate < DateTime.Now) .OrderBy(x => x.duedate) .GroupBy(x => x.user); var alerts = new List <LateFeeAlert>(); foreach (var entry in overdueStudents) { var rel = entry.Key.students_guardians.SingleOrDefault(x => x.type.HasValue && x.type.Value == (byte)GuardianType.FATHER); if (rel == null) { rel = entry.Key.students_guardians.SingleOrDefault( x => x.type.HasValue && x.type.Value == (byte)GuardianType.MOTHER); } var parent = rel.user1; var alert = new LateFeeAlert { parentid = parent.id, parentname = parent.ToName(), studentname = entry.Key.ToName(false), studentid = entry.Key.id, overdueFees = entry.Select(x => x).ToModel(auth.perms) }; alerts.Add(alert); } // group by parent var parentGroups = alerts.GroupBy(x => new { x.parentid, x.parentname }); foreach (var entry in parentGroups) { var siblings = new LateFeeAlertSiblings(); siblings.children = entry.Select(x => x); viewmodel.alerts.Add(siblings); } // TODO: list most overdued groups first // get templates viewmodel.templates = db.fees_templates.OrderBy(x => x.title).ToRowModel(); return(View(viewmodel)); }