示例#1
0
        private void UpdateEnrollmentsStudents(User student)
        {
            //Get student identifier
            var identifier = student.ToIdentifier();

            //Get modules runs for that student
            var moduleRunStudentsFilter = Builders <ModuleRun> .Filter.AnyEq(x => x.Students, identifier);

            var oldIds = ModuleRuns.Find(moduleRunStudentsFilter).Project(x => x.Id).ToList();
            //Get student enrollments
            var studentEnrollmentsFilter = Builders <ModuleRun> .Filter.In(x => x.Id, student.Enrollments.Select(x => x.Id));

            var newIds = ModuleRuns.Find(studentEnrollmentsFilter).Project(x => x.Id).ToList();

            //Remove enrollments not present, ignoring enrollments we want to insert
            oldIds.Except(newIds).ToList().ForEach(runId =>
            {
                var moduleRunIdFilter       = Builders <ModuleRun> .Filter.Eq(x => x.Id, runId);
                var moduleRunStudentsUpdate = Builders <ModuleRun> .Update.Pull(x => x.Students, identifier);
                ModuleRuns.UpdateOne(moduleRunIdFilter, moduleRunStudentsUpdate);
            });
            //Insert new set of enrollments, ignoring enrollments already present
            newIds.Except(oldIds).ToList().ForEach(runId =>
            {
                var moduleRunIdFilter       = Builders <ModuleRun> .Filter.Eq(x => x.Id, runId);
                var moduleRunStudentsUpdate = Builders <ModuleRun> .Update.Push(x => x.Students, identifier);
                ModuleRuns.UpdateOne(moduleRunIdFilter, moduleRunStudentsUpdate);
            });
        }
示例#2
0
        /// <summary>
        /// inside this method we call the rest api and retrieve a data
        /// </summary>
        /// <returns></returns>
        protected async override Task OnInitializedAsync()
        {
            int.TryParse(Id, out int planId);

            if (planId != 0)
            {
                Plan = await PlanService.GetPlan(int.Parse(Id));

                AutumnSemester = Plan.AutumnSemester;
                SpringSemester = Plan.SpringSemester;

                Semesters = new List <SemesterDto> {
                    AutumnSemester, SpringSemester
                };

                SemesterId     = Semester.SemesterId.ToString();
                ModuleId       = Module.ModuleId.ToString();
                Lmr            = new LecturerModuleRunDto();
                SelectedPlanId = Plan.Id;
                ListLmr        = (await LecturerModuleRunService.GetLecturerModuleRuns()).ToList();
                foreach (var sem in Semesters)
                {
                    foreach (var mr in sem.ModuleRuns)
                    {
                        ModuleRuns.Add(mr);
                    }
                }
                await ShowLastYearPlan();
            }


            else
            {
                Plan     = new PlanDto {
                };
                Semester = new SemesterDto {
                };
                Module   = new ModuleDto {
                };
                ListLmr  = new List <LecturerModuleRunDto> {
                };
            }
            Plans          = (await PlanService.GetPlans()).ToList();
            ModuleRuns     = (await ModuleRunService.GetModuleRuns()).ToList();
            Modules        = (await ModuleService.GetModules()).ToList();
            Lecturers      = (await LecturerService.GetLecturers()).ToList();
            LecturerGroups = (await LecturerGroupService.GetLecturerGroups()).ToList();
        }