/// <summary> /// /// </summary> /// <returns></returns> public ActionResult OfficeHour(Guid?id) { var semester = SemesterService.GetSemester(id); var member = GetMyMembership(); var officeHour = Db.Activities.OfType <OfficeHour>().FirstOrDefault(x => x.Semester.Id == semester.Id && x.Owners.Any(y => y.Member.Id == member.Id)); var infoService = new OfficeHourInfoService(UserManager); if (officeHour == null) { return(RedirectToAction("Create", "OfficeHour", new { id = semester.Id })); } var model = new OfficeHourSubscriptionViewModel { OfficeHour = officeHour, Semester = semester, Host = infoService.GetHost(officeHour), }; if (officeHour.ByAgreement) { return(View("DateListAgreement", model)); } model.Dates.AddRange(infoService.GetDates(officeHour)); return(View("DateList", model)); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult OfficeHour(Guid?id) { var user = GetCurrentUser(); var infoService = new OfficeHourInfoService(UserManager); if (id == null) { var summaryModel = new LecturerSummaryModel() { Memberships = MemberService.GetFacultyMemberships(user.Id) }; var officeHours = Db.Activities.OfType <OfficeHour>().Where(x => x.Owners.Any(o => !string.IsNullOrEmpty(o.Member.UserId) && o.Member.UserId.Equals(user.Id))) .ToList(); foreach (var oh in officeHours) { var ohModel = new LecturerOfficehourSummaryModel() { OfficeHour = oh }; summaryModel.OfficeHours.Add(ohModel); } var semester = SemesterService.GetSemester(DateTime.Today); ViewBag.ThisSemester = semester; ViewBag.NextSemester = SemesterService.GetNextSemester(semester); return(View(summaryModel)); } var officeHour = Db.Activities.OfType <OfficeHour>().SingleOrDefault(x => x.Id == id.Value); var model = new OfficeHourSubscriptionViewModel { OfficeHour = officeHour, Semester = officeHour.Semester, Host = infoService.GetHost(officeHour), }; if (officeHour.ByAgreement) { return(View("DateListAgreement", model)); } model.Dates.AddRange(infoService.GetDates(officeHour)); return(View("DateList", model)); }
public ActionResult DateDetails(Guid id) { var date = Db.ActivityDates.SingleOrDefault(x => x.Id == id); var officeHour = date.Activity as OfficeHour; var infoService = new OfficeHourInfoService(UserManager); var model = new OfficeHourDateViewModel(); model.OfficeHour = officeHour; model.Date = date; model.Subscriptions.AddRange(infoService.GetSubscriptions(date)); return(View(model)); }
private DashboardViewModel CreateDashboardModelOrgMember(UserRight userRight) { var user = userRight.User; var semester = SemesterService.GetSemester(DateTime.Today); var nextSemester = SemesterService.GetNextSemester(semester); var previousSemester = SemesterService.GetPreviousSemester(semester); var org = GetMyOrganisation(); var member = GetMyMembership(); var model = new DashboardViewModel { Semester = semester, User = user, Member = member, Organiser = org, ThisSemesterActivities = { Semester = semester } }; if (member == null) { return(model); } var ohs = new OfficeHourInfoService(UserManager); // alle Aktivitäten, im aktuellen Semester var officeHour = new OfficeHourService(Db).GetOfficeHour(member, semester); model.ThisSemesterActivities.MyOfficeHour = officeHour; if (officeHour != null) { model.ThisSemesterActivities.NextOfficeHourDate = ohs.GetPreviewNextDate(officeHour); } model.ThisSemesterActivities.MyCourses.AddRange(GetLecturerCourses(semester, userRight.User)); model.ThisSemesterActivities.MyEvents.AddRange(GetLecturerEvents(semester, userRight.User)); model.ThisSemesterActivities.MyReservations.AddRange(GetLecturerReservations(semester, userRight.User)); model.ThisSemesterActivities.MyExams.AddRange(GetLecturerExams(semester, userRight.User)); // und für das nächste Semester // nur wenn es Stundenpläne gibt, diese müssen noch nicht freigegeben sein, Existenz reicht if (nextSemester != null) { var activeCurriclula = SemesterService.GetActiveCurricula(org, nextSemester, false); if (activeCurriclula.Any()) { model.NextSemester = nextSemester; officeHour = new OfficeHourService(Db).GetOfficeHour(member, nextSemester); model.NextSemesterActivities.MyOfficeHour = officeHour; model.NextSemesterActivities.Semester = nextSemester; if (officeHour != null) { model.NextSemesterActivities.NextOfficeHourDate = ohs.GetPreviewNextDate(officeHour); } model.NextSemesterActivities.MyCourses.AddRange(GetLecturerCourses(nextSemester, userRight.User)); model.NextSemesterActivities.MyEvents.AddRange(GetLecturerEvents(nextSemester, userRight.User)); model.NextSemesterActivities.MyReservations.AddRange(GetLecturerReservations(nextSemester, userRight.User)); model.NextSemesterActivities.MyExams.AddRange(GetLecturerExams(nextSemester, userRight.User)); } } // es gibt (noch) kein nächstes Semester, dann das vorherige prüfen if (model.NextSemester == null && previousSemester != null) { var activeCurriclula = SemesterService.GetActiveCurricula(org, previousSemester, false); if (activeCurriclula.Any()) { model.PreviousSemester = previousSemester; officeHour = new OfficeHourService(Db).GetOfficeHour(member, previousSemester); model.PreviousSemesterActivities.MyOfficeHour = officeHour; model.PreviousSemesterActivities.Semester = previousSemester; if (officeHour != null) { model.PreviousSemesterActivities.NextOfficeHourDate = ohs.GetPreviewNextDate(officeHour); } model.PreviousSemesterActivities.MyCourses.AddRange(GetLecturerCourses(previousSemester, userRight.User)); model.PreviousSemesterActivities.MyEvents.AddRange(GetLecturerEvents(previousSemester, userRight.User)); model.PreviousSemesterActivities.MyReservations.AddRange(GetLecturerReservations(previousSemester, userRight.User)); model.PreviousSemesterActivities.MyExams.AddRange(GetLecturerExams(previousSemester, userRight.User)); } } // Was läuft gerade? // alles was jetzt läuft // alles was in den nächsten 60 min beginnt var now = DateTime.Now; var endOfDay = now.AddHours(1); var nowPlaying = Db.ActivityDates.Where(d => d.Activity is Course && (d.Begin <= now && now <d.End || d.Begin> now && d.Begin < endOfDay) && d.Activity.SemesterGroups.Any(g => g.CapacityGroup != null && g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == org.Id)) .OrderBy(d => d.Begin).ThenBy(d => d.End).ToList(); model.NowPlayingDates = nowPlaying; return(model); }