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)); }
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)); }
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)); }
// 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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }