コード例 #1
0
        public ActionResult Group(Guid semId, Guid groupId)
        {
            var user     = GetCurrentUser();
            var semester = SemesterService.GetSemester(semId);
            var capGroup = Db.CapacityGroups.SingleOrDefault(x => x.Id == groupId);

            var semGroup =
                Db.SemesterGroups.FirstOrDefault(x =>
                                                 x.CapacityGroup.Id == capGroup.Id && x.Semester.Id == semester.Id);

            if (user.MemberState != MemberState.Staff && !semGroup.IsAvailable)
            {
                return(View("NotAvailable", semGroup));
            }

            var allTopics = Db.SemesterTopics
                            .Where(x => x.Activities.Any(s => s.SemesterGroups.Any(g => g.Id == semGroup.Id))).ToList();

            var model = new SemesterActiveViewModel
            {
                Semester      = semester,
                Organiser     = capGroup.CurriculumGroup.Curriculum.Organiser,
                Curriculum    = capGroup.CurriculumGroup.Curriculum,
                CapacityGroup = capGroup,
                SemesterGroup = semGroup
            };

            return(View(allTopics.Any() ? "GroupByTopic" : "Group", model));
        }
コード例 #2
0
        public ActionResult Index()
        {
            var user = GetCurrentUser();

            var model = new HomeViewModel();

            // Alle Semester mit veröffentlichten Semestergruppen
            var allPublishedSemester = Db.Semesters.Where(x => x.Groups.Any()).OrderByDescending(s => s.EndCourses).Take(4).ToList();

            foreach (var semester in allPublishedSemester)
            {
                var isStaff    = user.MemberState == MemberState.Staff;
                var activeOrgs = SemesterService.GetActiveOrganiser(semester, !isStaff);

                var semModel = new SemesterActiveViewModel
                {
                    Semester   = semester,
                    Organisers = activeOrgs.ToList()
                };

                model.ActiveSemester.Add(semModel);
            }

            ViewBag.UserRight = GetUserRight();

            return(View(model));
        }
コード例 #3
0
ファイル: ScheduleController.cs プロジェクト: weedkiller/NINE
        public ActionResult Curriculum(Guid curId, Guid semId)
        {
            var semester  = SemesterService.GetSemester(semId);
            var curriclum = Db.Curricula.SingleOrDefault(x => x.Id == curId);

            var courses = Db.Activities.OfType <Course>().Where(x =>
                                                                x.SemesterGroups.Any(g =>
                                                                                     g.Semester.Id == semId && g.CapacityGroup.CurriculumGroup.Curriculum.Id == curId)).ToList();


            var model = new SemesterActiveViewModel
            {
                Semester   = semester,
                Curriculum = curriclum,
            };

            var courseService = new CourseService(Db);

            foreach (var course in courses)
            {
                var summary = courseService.GetCourseSummary(course);
                model.Courses.Add(summary);
            }

            return(View(model));
        }
コード例 #4
0
ファイル: ScheduleController.cs プロジェクト: weedkiller/NINE
        // GET: Schedule
        public ActionResult Index(Guid?semId)
        {
            var allPublishedSemester = Db.Semesters.Where(x => x.Groups.Any()).OrderByDescending(s => s.EndCourses).Take(4).ToList();

            Semester semester = null;

            if (semId != null)
            {
                semester = SemesterService.GetSemester(semId);
            }
            else
            {
                semester = Db.Semesters.Where(x => x.Groups.Any()).OrderByDescending(s => s.EndCourses).FirstOrDefault();
            }

            var isStaff = false;

            var curricula = SemesterService.GetActiveCurricula(semester, !isStaff).ToList();

            var model = new SemesterActiveViewModel
            {
                Semester  = semester,
                Curricula = curricula
            };

            ViewBag.AllSemester = allPublishedSemester;


            return(View(model));
        }
コード例 #5
0
        public PartialViewResult CourseListForGroup(Guid semGroupId, bool showPersonalDates)
        {
            var user     = GetCurrentUser();
            var semGroup = Db.SemesterGroups.SingleOrDefault(x => x.Id == semGroupId);

            var model = new SemesterActiveViewModel
            {
                Semester      = semGroup.Semester,
                Organiser     = semGroup.CapacityGroup.CurriculumGroup.Curriculum.Organiser,
                Curriculum    = semGroup.CapacityGroup.CurriculumGroup.Curriculum,
                CapacityGroup = semGroup.CapacityGroup,
                SemesterGroup = semGroup
            };

            var courseService = new CourseService(Db);

            var courses = semGroup.Activities.OfType <Course>().ToList();

            if (user != null && showPersonalDates)
            {
                var activities = Db.Activities.OfType <Course>().Where(a =>
                                                                       a.SemesterGroups.Any(s => s.Semester.Id == semGroup.Semester.Id) &&
                                                                       a.Occurrence.Subscriptions.Any(u => u.UserId.Equals(user.Id))).ToList();

                foreach (var course in activities)
                {
                    if (!courses.Contains(course))
                    {
                        courses.Add(course);
                    }
                }
            }


            foreach (var course in courses)
            {
                var summary = courseService.GetCourseSummary(course);

                if (Request.IsAuthenticated && showPersonalDates)
                {
                    var state = ActivityService.GetActivityState(course.Occurrence, user);

                    summary.User         = user;
                    summary.Subscription = state.Subscription;

                    summary.Lottery =
                        Db.Lotteries.FirstOrDefault(x => x.Occurrences.Any(y => y.Id == course.Occurrence.Id));
                }


                model.Courses.Add(summary);
            }

            return(PartialView("_GroupList", model));
        }
コード例 #6
0
        public ActionResult Semester(Guid id)
        {
            var semester = SemesterService.GetSemester(id);

            var curricula = SemesterService.GetActiveCurricula(semester, true).ToList();

            var model = new SemesterActiveViewModel
            {
                Semester  = semester,
                Curricula = curricula.OrderBy(x => x.Organiser.ShortName).ThenBy(x => x.Name).ToList()
            };

            return(View(model));
        }
コード例 #7
0
        public ActionResult Organiser(Guid semId, Guid orgId)
        {
            var semester = SemesterService.GetSemester(semId);

            var organiser = Db.Organisers.SingleOrDefault(x => x.Id == orgId);

            var model = new SemesterActiveViewModel
            {
                Semester  = semester,
                Curricula = organiser.Curricula.OrderBy(x => x.Name).ToList(),
                Organiser = organiser
            };

            return(View(model));
        }
コード例 #8
0
        public ActionResult Curriculum(Guid semId, Guid currId)
        {
            var semester = SemesterService.GetSemester(semId);

            var curr = Db.Curricula.SingleOrDefault(x => x.Id == currId);

            var model = new SemesterActiveViewModel
            {
                Semester   = semester,
                Organiser  = curr.Organiser,
                Curriculum = curr
            };


            return(View(model));
        }
コード例 #9
0
        public ActionResult Semester(Guid id)
        {
            var semester = SemesterService.GetSemester(id);

            var organiser = GetMyOrganisation();

            var model = new SemesterActiveViewModel
            {
                Semester  = semester,
                Events    = organiser.Activities.OfType <Event>().Where(x => x.Dates.Any(d => semester.StartCourses <= d.Begin && d.Begin <= semester.EndCourses)).ToList(),
                Organiser = organiser
            };

            ViewBag.UserRight = GetUserRight();

            return(View(model));
        }
コード例 #10
0
        public ActionResult Semester(Guid semId)
        {
            var semester = SemesterService.GetSemester(semId);

            var user    = GetCurrentUser();
            var isStaff = user.MemberState == MemberState.Staff;

            var curricula = SemesterService.GetActiveCurricula(semester, !isStaff).ToList();

            var orgs = curricula.GroupBy(x => x.Organiser).Select(x => x.Key).OrderBy(x => x.ShortName).ToList();

            var model = new SemesterActiveViewModel
            {
                Semester   = semester,
                Organisers = orgs
            };

            return(View(model));
        }
コード例 #11
0
        public ActionResult UniversityCalendar()
        {
            var model = new HomeViewModel();


            // Alle Semester mit veröffentlichten Semestergruppen
            var allPublishedSemester = Db.Semesters.Where(x => x.Groups.Any(g => g.IsAvailable)).OrderByDescending(s => s.EndCourses).Take(4).ToList();

            foreach (var semester in allPublishedSemester)
            {
                var activeOrgs = SemesterService.GetActiveOrganiser(semester, true);

                var semModel = new SemesterActiveViewModel
                {
                    Semester   = semester,
                    Organisers = activeOrgs.ToList()
                };

                model.ActiveSemester.Add(semModel);
            }

            return(View(model));
        }
コード例 #12
0
        public ActionResult GroupList(Guid semId, Guid groupId)
        {
            var semester = SemesterService.GetSemester(semId);
            var capGroup = Db.CapacityGroups.SingleOrDefault(x => x.Id == groupId);

            var model = new SemesterActiveViewModel
            {
                Semester      = semester,
                Organiser     = capGroup.CurriculumGroup.Curriculum.Organiser,
                Curriculum    = capGroup.CurriculumGroup.Curriculum,
                CapacityGroup = capGroup,
            };

            var semGroup =
                Db.SemesterGroups.FirstOrDefault(x =>
                                                 x.CapacityGroup.Id == capGroup.Id && x.Semester.Id == semester.Id);



            model.SemesterGroup = semGroup;

            return(View("Group", model));
        }
コード例 #13
0
        public PartialViewResult CourseListForTopic(Guid semGroupId, bool showPersonalDates)
        {
            var semGroup = Db.SemesterGroups.SingleOrDefault(x => x.Id == semGroupId);
            var semester = semGroup.Semester;
            var capGroup = semGroup.CapacityGroup;

            var model = new SemesterActiveViewModel
            {
                Semester      = semester,
                Organiser     = capGroup.CurriculumGroup.Curriculum.Organiser,
                Curriculum    = capGroup.CurriculumGroup.Curriculum,
                CapacityGroup = capGroup,
            };


            model.SemesterGroup = semGroup;

            var allTopics = Db.SemesterTopics.Where(x => x.Activities.Any(s => s.SemesterGroups.Any(g => g.Id == semGroup.Id))).ToList();


            List <Course> activities = null;

            if (Request.IsAuthenticated)
            {
                var user = GetCurrentUser();
                activities = Db.Activities.OfType <Course>().Where(a =>
                                                                   a.SemesterGroups.Any(g => g.Semester.Id == semester.Id) &&
                                                                   a.Occurrence.Subscriptions.Any(u => u.UserId.Equals(user.Id))).ToList();
            }

            var courseService = new CourseService(Db);

            foreach (var topic in allTopics)
            {
                var courses = topic.Activities.OfType <Course>().ToList();

                var model2 = new List <CourseSummaryModel>();


                foreach (var course in courses)
                {
                    var summary = courseService.GetCourseSummary(course);

                    if (Request.IsAuthenticated)
                    {
                        var user = GetCurrentUser();

                        var state = ActivityService.GetActivityState(course.Occurrence, user);

                        summary.User         = user;
                        summary.Subscription = state.Subscription;

                        summary.Lottery =
                            Db.Lotteries.FirstOrDefault(x => x.Occurrences.Any(y => y.Id == course.Occurrence.Id));

                        // Konflikte suchen
                        foreach (var date in course.Dates)
                        {
                            var conflictingActivities = activities.Where(x => x.Dates.Any(d =>
                                                                                          (d.End > date.Begin && d.End <= date.End) ||     // Veranstaltung endet im Zeitraum
                                                                                          (d.Begin >= date.Begin && d.Begin < date.End) || // Veranstaltung beginnt im Zeitraum
                                                                                          (d.Begin <= date.Begin && d.End >= date.End)     // Veranstaltung zieht sich über gesamten Zeitraum
                                                                                          )).ToList();

                            if (conflictingActivities.Any())
                            {
                                foreach (var conflictingActivity in conflictingActivities.Where(x => x.Id != course.Id))        // nicht mit dem Vergleichen, wo selbst eingetragen
                                {
                                    summary.ConflictingDates[date] = new List <ActivityDate>();

                                    var conflictingDates = conflictingActivity.Dates.Where(d =>
                                                                                           (d.End > date.Begin && d.End <= date.End) || // Veranstaltung endet im Zeitraum
                                                                                           (d.Begin >= date.Begin &&
                                                                                            d.Begin < date.End) ||                      // Veranstaltung beginnt im Zeitraum
                                                                                           (d.Begin <= date.Begin &&
                                                                                            d.End >= date.End)                          // Veranstaltung zieht sich über gesamten Zeitraum
                                                                                           ).ToList();

                                    summary.ConflictingDates[date].AddRange(conflictingDates);
                                }
                            }
                        }
                    }


                    model2.Add(summary);
                }

                model.Topics.Add(new TopicSummaryModel
                {
                    Topic   = topic,
                    Courses = model2
                });
            }

            // jetzt noch die ohne Topics
            var withoutTopic = semGroup.Activities.OfType <Course>().Where(x => !x.SemesterTopics.Any()).ToList();

            if (withoutTopic.Any())
            {
                var model2 = new List <CourseSummaryModel>();

                foreach (var course in withoutTopic)
                {
                    var summary = courseService.GetCourseSummary(course.Id);

                    if (Request.IsAuthenticated)
                    {
                        var user = GetCurrentUser();

                        var state = ActivityService.GetActivityState(course.Occurrence, user);

                        summary.User         = user;
                        summary.Subscription = state.Subscription;

                        summary.Lottery =
                            Db.Lotteries.FirstOrDefault(x => x.Occurrences.Any(y => y.Id == course.Occurrence.Id));

                        // Konflikte suchen
                        foreach (var date in course.Dates)
                        {
                            var conflictingActivities = activities.Where(x => x.Dates.Any(d =>
                                                                                          (d.End > date.Begin && d.End <= date.End) ||     // Veranstaltung endet im Zeitraum
                                                                                          (d.Begin >= date.Begin && d.Begin < date.End) || // Veranstaltung beginnt im Zeitraum
                                                                                          (d.Begin <= date.Begin && d.End >= date.End)     // Veranstaltung zieht sich über gesamten Zeitraum
                                                                                          )).ToList();

                            if (conflictingActivities.Any())
                            {
                                foreach (var conflictingActivity in conflictingActivities.Where(x => x.Id != course.Id))        // nicht mit dem Vergleichen, wo selbst eingetragen
                                {
                                    summary.ConflictingDates[date] = new List <ActivityDate>();

                                    var conflictingDates = conflictingActivity.Dates.Where(d =>
                                                                                           (d.End > date.Begin && d.End <= date.End) || // Veranstaltung endet im Zeitraum
                                                                                           (d.Begin >= date.Begin &&
                                                                                            d.Begin < date.End) ||                      // Veranstaltung beginnt im Zeitraum
                                                                                           (d.Begin <= date.Begin &&
                                                                                            d.End >= date.End)                          // Veranstaltung zieht sich über gesamten Zeitraum
                                                                                           ).ToList();

                                    summary.ConflictingDates[date].AddRange(conflictingDates);
                                }
                            }
                        }
                    }

                    model2.Add(summary);
                }

                model.Topics.Add(new TopicSummaryModel
                {
                    Topic   = null,
                    Courses = model2
                });
            }

            return(PartialView("_GroupListByTopicNew", model));
        }