Exemplo n.º 1
0
        public void Save(int userId)
        {
            var subject = new Subject
            {
                Id               = SubjectId,
                Name             = DisplayName,
                ShortName        = ShortName,
                SubjectModules   = new Collection <SubjectModule>(),
                SubjectLecturers = new Collection <SubjectLecturer>()
            };

            foreach (var module in Modules)
            {
                if (module.Checked)
                {
                    if (module.Type == ModuleType.Labs)
                    {
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId  = ModulesManagementService.GetModules().First(e => e.ModuleType == ModuleType.ScheduleProtection).Id,
                            SubjectId = SubjectId
                        });
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId  = ModulesManagementService.GetModules().First(e => e.ModuleType == ModuleType.StatisticsVisits).Id,
                            SubjectId = SubjectId
                        });
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId  = ModulesManagementService.GetModules().First(e => e.ModuleType == ModuleType.Results).Id,
                            SubjectId = SubjectId
                        });
                    }

                    subject.SubjectModules.Add(new SubjectModule
                    {
                        ModuleId  = module.ModuleId,
                        SubjectId = SubjectId
                    });
                }
            }

            subject.SubjectLecturers.Add(new SubjectLecturer
            {
                SubjectId  = SubjectId,
                LecturerId = userId
            });

            if (SelectedGroups != null)
            {
                subject.SubjectGroups = SelectedGroups.Select(e => new SubjectGroup
                {
                    GroupId   = e,
                    SubjectId = SubjectId
                }).ToList();
            }
            else
            {
                subject.SubjectGroups = new Collection <SubjectGroup>();
            }

            Subject sub = SubjectManagementService.SaveSubject(subject);

            foreach (var module in sub.SubjectModules)
            {
                if (module.ModuleId == 9)
                {
                    MaterialsManagementService.CreateRootFolder(module.Id, sub.Name);
                }
            }
        }
        public void Save(int userId, string color)
        {
            var subject = new Subject
            {
                Id               = SubjectId,
                Name             = DisplayName,
                ShortName        = ShortName,
                Color            = color,
                SubjectModules   = new Collection <SubjectModule>(),
                SubjectLecturers = new Collection <SubjectLecturer>()
            };

            foreach (var module in Modules)
            {
                if (module.Checked)
                {
                    if (module.Type == ModuleType.Labs)
                    {
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId = ModulesManagementService.GetModules()
                                       .First(e => e.ModuleType == ModuleType.ScheduleProtection).Id,
                            SubjectId = SubjectId
                        });
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId = ModulesManagementService.GetModules()
                                       .First(e => e.ModuleType == ModuleType.StatisticsVisits).Id,
                            SubjectId = SubjectId
                        });
                        subject.SubjectModules.Add(new SubjectModule
                        {
                            ModuleId = ModulesManagementService.GetModules()
                                       .First(e => e.ModuleType == ModuleType.Results).Id,
                            SubjectId = SubjectId
                        });
                    }

                    subject.SubjectModules.Add(new SubjectModule
                    {
                        ModuleId  = module.ModuleId,
                        SubjectId = SubjectId
                    });
                }
            }

            subject.SubjectLecturers.Add(new SubjectLecturer
            {
                SubjectId  = SubjectId,
                LecturerId = userId
            });

            var selectedGroupdsOld = new List <SubjectGroup>();

            if (SubjectId != 0)
            {
                selectedGroupdsOld = SubjectManagementService
                                     .GetSubject(new Query <Subject>(e => e.Id == SubjectId).Include(e => e.SubjectGroups)).SubjectGroups
                                     .ToList();
            }

            var oldGroupIds = selectedGroupdsOld.Select(x => x.GroupId);

            if (SelectedGroups != null)
            {
                UpdateNewAssignedGroups(Modules.Where(e => e.Checked),
                                        SelectedGroups.Where(e => !oldGroupIds.Contains(e)).ToList());
                subject.SubjectGroups = SelectedGroups.Select(e => new SubjectGroup
                {
                    GroupId   = e,
                    SubjectId = SubjectId,
                    IsActiveOnCurrentGroup = true
                }).ToList();
            }
            else
            {
                subject.SubjectGroups = new Collection <SubjectGroup>();
            }

            foreach (var subjectSubjectGroup in selectedGroupdsOld)
            {
                if (subject.SubjectGroups.Any(e => e.GroupId == subjectSubjectGroup.GroupId))
                {
                    continue;
                }

                TestsManagementService.UnlockAllTestForGroup(subjectSubjectGroup.GroupId);
                SubjectManagementService.DeleteNonReceivedUserFiles(subjectSubjectGroup.GroupId);
            }

            var acp = Context.AssignedCourseProjects.Include("Student")
                      .Where(x => x.CourseProject.SubjectId == subject.Id);

            foreach (var a in acp)
            {
                var flag = subject.SubjectGroups.Any(s => s.GroupId == a.Student.GroupId);

                if (!flag)
                {
                    Context.AssignedCourseProjects.Remove(a);
                }
                CPManagementService.DeletePercenageAndVisitStatsForUser(a.StudentId);
            }

            var cpg = Context.CourseProjectGroups.Where(x => x.CourseProject.SubjectId == subject.Id);

            foreach (var a in cpg)
            {
                var flag = subject.SubjectGroups.Any(s => s.GroupId == a.GroupId);

                if (!flag)
                {
                    Context.CourseProjectGroups.Remove(a);
                }
            }

            Context.SaveChanges();

            var sub = SubjectManagementService.SaveSubject(subject);

            SubjectId = sub.Id;
            CreateOrUpdateSubGroups();

            foreach (var module in sub.SubjectModules)
            {
                if (module.ModuleId == 9)
                {
                    MaterialsManagementService.CreateRootFolder(module.Id, sub.Name);
                }
            }
        }