Esempio n. 1
0
        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));
        }