Пример #1
0
        /// <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));
        }
Пример #2
0
        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);
        }