/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult MemberAdmin(Guid id) { var member = Db.Members.SingleOrDefault(m => m.Id == id); if (member == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // Alle Vorlesungen // Alle Sprechstunden // Alle Newsletter // Alle Veranstaltungen // => var model = new LecturerCharacteristicModel { Lecturer = member }; var semester = SemesterService.GetLatestSemester(member.Organiser); var user = AppUser; var courseService = new CourseService(Db); model.Courses = courseService.GetCourses(semester.Name, member); foreach (var course in model.Courses) { var lectures = Db.Members.Where(l => l.Dates.Any(occ => occ.Activity.Id == course.Course.Id)).ToList(); course.Lecturers.AddRange(lectures); var rooms = Db.Rooms.Where(l => l.Dates.Any(occ => occ.Activity.Id == course.Course.Id)).ToList(); course.Rooms.AddRange(rooms); course.State = ActivityService.GetActivityState(course.Course.Occurrence, user); } // Sprechstunde im aktuellen Semester var ohService = new OfficeHourService(Db); model.OfficeHour = ohService.GetLatestOfficeHour(member); model.Semester = semester; ViewBag.UserRight = GetUserRight(User.Identity.Name, member.Organiser.ShortName); return(View("Member", 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); }