示例#1
0
        internal V_RISK(SeamlessViewsContext Context, ST ST, bool KGDAvailable, bool KGGAvailable)
            : base(Context)
        {
            var year      = DateTime.Now.Year;
            var eslCutOff = new DateTime(year, 1, 1);

            _FIRST_REG_NO = ST.FIRST_REG_NO;
            _STKEY        = ST.STKEY;
            _ENTRY        = ST.ENTRY?.ToString("MM/dd/yyyy");
            _SCHOOL_YEAR  = ST.SCHOOL_YEAR;
            _HOME_GROUP   = ST.HOME_GROUP;
            _STUDENT      = $"{ST.SURNAME}, {ST.FIRST_NAME}";

            var attendance = ST.
                             STKEY_SXAB_STKEY
                             .Where(sxab => sxab.ABSENCE_DATE.Value.Year == year)
                             .Select(sxab => new
            {
                sxab.STKEY,
                sxab.ABSENCE_DATE,
                AM     = sxab.AM_ACT_TYPE_KCT,
                PM     = sxab.PM_ACT_TYPE_KCT,
                Source = 0         // SXAB
            })
                             .Concat(
                ST.STKEY_SXABCONV_STKEY
                .Where(conv => conv.ABSENCE_DATE.Value.Year == year)
                .Select(conv => new
            {
                conv.STKEY,
                conv.ABSENCE_DATE,
                AM     = conv.AM_TYPE_KCT,
                PM     = conv.PM_TYPE_KCT,
                Source = 1                 // SXABCONV
            }))
                             .GroupBy(
                r => new { r.STKEY, r.ABSENCE_DATE },
                (k, g) => new
            {
                k.STKEY,
                k.ABSENCE_DATE,
                AM = g.Aggregate((r1, r2) => r2.AM.KCTKEY > 0 && (r1.Source == 1 && (r2.Source == 0 || r2.AM.KCTKEY > r1.AM.KCTKEY)) || (r1.Source == 0 && r2.Source == 0 && r2.AM.KCTKEY > r1.AM.KCTKEY) ? r2 : r1).AM,
                PM = g.Aggregate((r1, r2) => r2.PM.KCTKEY > 0 && (r1.Source == 1 && (r2.Source == 0 || r2.PM.KCTKEY > r1.PM.KCTKEY)) || (r1.Source == 0 && r2.Source == 0 && r2.PM.KCTKEY > r1.PM.KCTKEY) ? r2 : r1).PM
            }).ToList();
            var absences   = attendance.Aggregate(0m, (v, r) => (r.AM.KCTKEY >= 200 && r.AM.CURRICULUM == "N" ? .5m : 0m) + (r.PM.KCTKEY >= 200 && r.PM.CURRICULUM == "N" ? .5m : 0m));
            var daysMarked = attendance.Aggregate(0m, (v, r) => (r.AM.KCTKEY > 0 ? .5m : 0m) + (r.PM.KCTKEY > 0 ? .5m : 0m));

            _UNAPPROVED     = attendance.Aggregate(0m, (v, r) => (r.AM.KCTKEY == 208 || r.AM.KCTKEY == 300 || r.AM.KCTKEY == 500 ? .5m : 0m) + (r.PM.KCTKEY == 208 || r.PM.KCTKEY == 300 || r.PM.KCTKEY == 500 ? .5m : 0m));
            _ATTEND_PERCENT = daysMarked > 0m
                ? (daysMarked - absences) / daysMarked * 100m
                : 0m;
            _ENGREA = ST.STKEY_STVDI_SKEY.Where(r => r.VDIMENSION == "ENGREA" && r.SCORE != "NA").Aggregate((STVDI)null, (a, r) => a == null || r.YEAR_SEMESTER.CompareTo(a.YEAR_SEMESTER) > 0 ? r : a)?.SCORE ?? "";
            _ENGWRI = ST.STKEY_STVDI_SKEY.Where(r => r.VDIMENSION == "ENGWRI" && r.SCORE != "NA").Aggregate((STVDI)null, (a, r) => a == null || r.YEAR_SEMESTER.CompareTo(a.YEAR_SEMESTER) > 0 ? r : a)?.SCORE ?? "";
            _MATNUM = ST.STKEY_STVDI_SKEY.Where(r => r.VDIMENSION == "MATNUM" && r.SCORE != "NA").Aggregate((STVDI)null, (a, r) => a == null || r.YEAR_SEMESTER.CompareTo(a.YEAR_SEMESTER) > 0 ? r : a)?.SCORE ?? "";
            _MATSTR = ST.STKEY_STVDI_SKEY.Where(r => r.VDIMENSION == "MATSTR" && r.SCORE != "NA").Aggregate((STVDI)null, (a, r) => a == null || r.YEAR_SEMESTER.CompareTo(a.YEAR_SEMESTER) > 0 ? r : a)?.SCORE ?? "";
            _INTERNAL_SUSPENSION = attendance.Aggregate(0m, (v, r) => (r.AM.KCTKEY == 400 ? .5m : 0m) + (r.PM.KCTKEY == 400 ? .5m : 0m));
            _EXTERNAL_SUSPENSION = attendance.Aggregate(0m, (v, r) => (r.AM.KCTKEY == 401 ? .5m : 0m) + (r.PM.KCTKEY == 401 ? .5m : 0m));
            _OCCUPATION_CODE     = ST.FAMILY_OCCUPATION;
            _ALERTS     = $"{ST.KOORIE ?? "N"}{(ST.BIRTH_COUNTRY_KGT?.REFUGEE == "Y" ? "Y" : (ST.ESL(eslCutOff, 7) == "Y" && ST.VISA_SUBCLASS_KCV?.REFUGEE == "Y" ? "Y" : "N"))}{ST.DISABILITY ?? "N"}{ST.INTEGRATION ?? "N"}{ST.YOUTH_ALLOW ?? "N"}{ST.ACCESS_ALERT ?? "N"}{ST.RISK_ALERT ?? "N"}{ST.MEDICAL_ALERT ?? "N"}";
            _GENDER     = ST.GENDER;
            _LIVING_ARR = ST.LIVING_ARR;
            _EXIT_DATE  = ST.EXIT_DATE?.ToString("dd/MM/yyyy");

            // KGD isn't currently included in any typical eduHub services
            if (KGDAvailable)
            {
                _EXIT_0 = ST.STATUS == "LEFT"
                    ? (ST.SCHOOL_YEAR.CompareTo("09") < 0 || ST.SCHOOL_YEAR == "UG"
                        ? ST.NEXT_SCHOOL_SKGS?.NAME ?? ""
                        : ST.EXIT_DEST01_KGD?.DESCRIPTION ?? "")
                    : "";
            }
            else
            {
                _EXIT_0 = ST.STATUS == "LEFT"
                    ? ST.NEXT_SCHOOL_SKGS?.NAME ?? ""
                    : "";
            }

            // KGG isn't currently included in any typical eduHub services
            if (KGGAvailable)
            {
                _EXIT_6 = ST.EXIT_CAT01_KGG?.DESCRIPTION;
            }
            else
            {
                _EXIT_6 = null;
            }
        }