示例#1
0
        private DashboardStudentViewModel CreateDashboardModelStudentNew(UserRight userRight)
        {
            var student = StudentService.GetCurrentStudent(userRight.User.Id);

            var currentSemester = student != null?SemesterService.GetNewestSemester(student.Curriculum.Organiser) : SemesterService.GetSemester(DateTime.Today);

            var prevSemester = SemesterService.GetPreviousSemester(currentSemester);



            var model = new DashboardStudentViewModel
            {
                User         = userRight.User,
                Semester     = prevSemester,
                NextSemester = currentSemester,
                Student      = student,
                Organiser    = student?.Curriculum.Organiser
            };

            if (student != null)
            {
                var limit = DateTime.Today.AddDays(-7);
                model.Advertisements = Db.Advertisements.Where(x => x.Owner.Organiser.Id == student.Curriculum.Organiser.Id &&
                                                               x.Created >= limit).ToList();
            }
            else
            {
                model.Advertisements = new List <Advertisement>();
            }



            return(model);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        public ActionResult PersonalPlanList(Guid id)
        {
            var semester = SemesterService.GetSemester(id);
            var user     = AppUser;

            var courseService = new CourseService(Db);

            var model = new DashboardStudentViewModel();

            model.Semester = semester;
            model.User     = user;
            model.Student  = StudentService.GetCurrentStudent(user);
            model.Courses  = new List <CourseSummaryModel>();

            var courses = Db.Activities.OfType <Course>().Where(a =>
                                                                a.SemesterGroups.Any(g => g.Semester.Id == semester.Id) &&
                                                                a.Occurrence.Subscriptions.Any(u => u.UserId.Equals(model.User.Id))).ToList();

            foreach (var course in courses)
            {
                var summary = courseService.GetCourseSummary(course);
                model.Courses.Add(summary);

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

            return(View(model));
        }
示例#3
0
        private DashboardStudentViewModel CreateDashboardModelOrgMemberNew(UserRight userRight)
        {
            var org = GetMyOrganisation();

            var currentSemester = SemesterService.GetNewestSemester(org);
            var prevSemester    = SemesterService.GetPreviousSemester(currentSemester);

            var model = new DashboardStudentViewModel
            {
                User         = userRight.User,
                Semester     = prevSemester,
                NextSemester = currentSemester,
                Organiser    = org
            };

            return(model);
        }
示例#4
0
        private DashboardStudentViewModel CreateDashboardModelStudentNew(UserRight userRight)
        {
            var student = StudentService.GetCurrentStudent(userRight.User.Id);

            var currentSemester = SemesterService.GetNewestSemester(student.Curriculum.Organiser);
            var prevSemester    = SemesterService.GetPreviousSemester(currentSemester);

            var model = new DashboardStudentViewModel
            {
                User         = userRight.User,
                Semester     = prevSemester,
                NextSemester = currentSemester,
                Student      = student,
                Organiser    = student.Curriculum.Organiser
            };

            return(model);
        }
示例#5
0
        public ActionResult Schedule(Guid id)
        {
            var userRight = GetUserRight();

            ViewBag.UserRight = userRight;

            var semSubService = new SemesterSubscriptionService();

            var user = AppUser;

            // das übergebene Semester
            var currentSemester = SemesterService.GetSemester(id);

            var model = new DashboardStudentViewModel();

            model.User      = user;
            model.Organiser = GetMyOrganisation();

            model.Semester      = currentSemester;
            model.SemesterGroup = semSubService.GetSemesterGroup(user.Id, currentSemester);

            return(View(model));
        }
示例#6
0
        private DashboardStudentViewModel CreateDashboardModelOrgMemberNew(UserRight userRight)
        {
            var org = GetMyOrganisation();

            var currentSemester = SemesterService.GetNewestSemester(org);
            var prevSemester    = SemesterService.GetPreviousSemester(currentSemester);

            var model = new DashboardStudentViewModel
            {
                User         = userRight.User,
                Semester     = prevSemester,
                NextSemester = currentSemester,
                Organiser    = org
            };

            var limit = DateTime.Today.AddDays(-7);

            model.Advertisements = Db.Advertisements.Where(x => x.Owner.Organiser.Id == org.Id &&
                                                           x.Created >= limit).ToList();


            return(model);
        }
示例#7
0
        private DashboardStudentViewModel CreateDashboardModelStudent(UserRight userRight)
        {
            var semSubService = new SemesterSubscriptionService();

            var currentSemester = SemesterService.GetSemester(DateTime.Today);
            var nextSemester    = SemesterService.GetNextSemester(DateTime.Today);

            var model = new DashboardStudentViewModel
            {
                User          = userRight.User,
                Semester      = currentSemester,
                SemesterGroup = semSubService.GetSemesterGroup(userRight.User.Id, currentSemester),
                Student       = Db.Students.Where(x => x.UserId.Equals(userRight.User.Id)).OrderByDescending(x => x.Created).FirstOrDefault()
            };

            // keine Semestergruppe gewählt => aktive Pläne suchen
            if (model.SemesterGroup == null)
            {
                model.ActiveOrgsSemester = SemesterService.GetActiveOrganiser(currentSemester, true);
            }


            // das nächste Semester nur anzeigen, wenn es einen veröffentlichsten Stundenplan für die letzte Fakultät gibt!
            var nextSemesterOrgs = SemesterService.GetActiveOrganiser(nextSemester, true);

            if (nextSemesterOrgs.Any())
            {
                model.NextSemester      = nextSemester;
                model.NextSemesterGroup = semSubService.GetSemesterGroup(userRight.User.Id, nextSemester);
                if (model.NextSemesterGroup == null)
                {
                    model.ActiveOrgsNextSemester = nextSemesterOrgs;
                }
            }



            // Alle Anfragen zu Abschlussarbeiten
            var supervisions = Db.Activities.OfType <Supervision>()
                               .Where(x => x.Occurrence.Subscriptions.Any(y => y.UserId.Equals(userRight.User.Id))).ToList();

            foreach (var supervision in supervisions)
            {
                var request = new SupervisionRequestModel();

                request.Supervision  = supervision;
                request.Lecturer     = supervision.Owners.First().Member;
                request.Subscription =
                    supervision.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(userRight.User.Id));

                model.Requests.Add(request);
            }

            // Alle Abschlussarbeiten
            var theses = Db.Theses.Where(x => x.Student.UserId.Equals(userRight.User.Id)).ToList();

            foreach (var thesis in theses)
            {
                var tModel = new ThesisDetailModel();

                tModel.Thesis   = thesis;
                tModel.Lecturer = thesis.Supervision.Owners.First().Member;

                model.Theses.Add(tModel);
            }

            // Alle heutigen Termine
            // Alle Eintragungen
            var begin = DateTime.Now;
            var end   = DateTime.Today.AddDays(1);

            var allDates =
                Db.ActivityDates.Where(d =>
                                       (d.Activity.Occurrence.Subscriptions.Any(s => s.UserId.Equals(userRight.User.Id)) ||
                                        d.Occurrence.Subscriptions.Any(s => s.UserId.Equals(userRight.User.Id)) ||
                                        d.Slots.Any(slot => slot.Occurrence.Subscriptions.Any(s => s.UserId.Equals(userRight.User.Id)))) &&
                                       d.End >= begin && d.End <= end).OrderBy(d => d.Begin).ToList();

            foreach (var date in allDates)
            {
                var act = new AgendaActivityViewModel
                {
                    Date = date,
                    Slot = date.Slots.FirstOrDefault(x => x.Occurrence.Subscriptions.Any(s => s.UserId.Equals(userRight.User.Id)))
                };

                model.TodaysActivities.Add(act);
            }

            if (model.Student != null)
            {
                var org = model.Student.Curriculum.Organiser;


                // Alle Platzverlosungen
                // letzte 90 Tage
                var lastEnd     = DateTime.Today;
                var alLotteries = Db.Lotteries.Where(x =>
                                                     x.IsActiveUntil >= lastEnd && x.IsAvailable &&
                                                     x.Organiser != null && x.Organiser.Id == org.Id).OrderBy(x => x.FirstDrawing).ToList();

                foreach (var lottery in alLotteries)
                {
                    var courseList = new List <Course>();
                    courseList.AddRange(
                        lottery.Occurrences.Select(
                            occurrence => Db.Activities.OfType <Course>().SingleOrDefault(
                                c => c.Occurrence.Id == occurrence.Id)).Where(course => course != null));

                    var hasFit =
                        courseList.Any(c => c.SemesterGroups.Any(g =>
                                                                 g.CapacityGroup.CurriculumGroup.Curriculum.Id == model.Student.Curriculum.Id));

                    if (hasFit)
                    {
                        model.Lotteries.Add(lottery);
                    }
                }
            }


            return(model);
        }