Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
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);
        }