Пример #1
0
        public ActionResult EditRequest(SupervisionRequestModel model)
        {
            var subscription = Db.Subscriptions.OfType <OccurrenceSubscription>()
                               .SingleOrDefault(x => x.Id == model.Subscription.Id);

            subscription.SubscriberRemark = model.Description;
            Db.SaveChanges();

            return(RedirectToAction("RequestDetails", new { id = model.Subscription.Id }));
        }
Пример #2
0
        public ActionResult CreateRequest(Guid id)
        {
            var supervision = Db.Activities.OfType <Supervision>().SingleOrDefault(x => x.Id == id);

            var model = new SupervisionRequestModel();

            model.Supervision = supervision;

            return(View(model));
        }
Пример #3
0
        public ActionResult CreateRequest(SupervisionRequestModel model)
        {
            var user        = GetCurrentUser();
            var supervision = Db.Activities.OfType <Supervision>().SingleOrDefault(x => x.Id == model.Supervision.Id);

            // hat schon eine Anfrage bei diesem Angebot
            if (supervision.Occurrence.Subscriptions.Any(x => x.UserId.Equals(user.Id)))
            {
                // Schon eingetragen
                // Fehlermeldung: da sind sie schon drin
                return(RedirectToAction("Index", "Dashboard"));
            }

            // Lehrende sollten sehen können, wo jemand eingetragen ist
            // Die Ablehnungs Mails sind dann Nachweis für ein "Nichtfinden"

            var subscription = new OccurrenceSubscription
            {
                UserId           = user.Id,
                SubscriberRemark = model.Description,
                TimeStamp        = DateTime.Now,
                OnWaitingList    = true,
                IsConfirmed      = false,
                Occurrence       = supervision.Occurrence
            };

            Db.Subscriptions.Add(subscription);
            Db.SaveChanges();

            // EMail versenden
            // Mail an Betreuer
            if (supervision.Owners.Any())
            {
                var member   = supervision.Owners.First().Member;
                var hostUser = GetUser(member.UserId);

                var mailModel = new ThesisRequestMailModel
                {
                    Supervision = supervision,
                    Request     = subscription,
                    Requester   = user,     // der anfragende Student
                    User        = hostUser, // der Betreuuer
                };

                var mail = new MailController();
                mail.ThesisRequestEMail(mailModel).Deliver();
            }



            return(RedirectToAction("Index", "Dashboard"));
        }
Пример #4
0
        public ActionResult RequestDetails(Guid id)
        {
            var subscription = Db.Subscriptions.OfType <OccurrenceSubscription>().SingleOrDefault(x => x.Id == id);

            var supervision = Db.Activities.OfType <Supervision>()
                              .SingleOrDefault(x => x.Occurrence.Id == subscription.Occurrence.Id);


            var model = new SupervisionRequestModel();

            model.Subscription = subscription;
            model.Supervision  = supervision;

            return(View(model));
        }
Пример #5
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);
        }