Example #1
0
        public ActionResult Unsubscribe(Guid id)
        {
            var student = Db.Students.SingleOrDefault(x => x.Id == id);
            var user    = GetUser(student.UserId);

            var model = new StudentSubscriptionModel();

            model.Student = student;
            model.User    = user;


            return(View(model));
        }
Example #2
0
        public ActionResult Unsubscribe(StudentSubscriptionModel model)
        {
            var org      = GetMyOrganisation();
            var semester = SemesterService.GetSemester(model.SemesterName);

            if (semester == null)
            {
                ModelState.AddModelError("SemesterName", "Es existiert kein Semester mit dieser Bezeichnung");
                return(View(model));
            }


            var courses = Db.Activities.OfType <Course>().Where(x =>
                                                                x.ShortName.Equals(model.CourseShortName.Trim()) &&
                                                                x.SemesterGroups.Any(g =>
                                                                                     g.Semester.Id == semester.Id && g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == org.Id)).ToList();

            if (!courses.Any())
            {
                ModelState.AddModelError("CourseShortName", "Es existiert keine Lehrveranstaltung mit dieser Bezeichnung");
                return(View(model));
            }

            if (courses.Count > 1)
            {
                ModelState.AddModelError("CourseShortName", $"Bezeichnung nicht eindeutig. Es existieren {courses.Count} Lehrveranstaltungen mit dieser Bezeichnung");
                return(View(model));
            }

            var host   = GetCurrentUser();
            var course = courses.First();

            var subscription = course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(model.User.Id));

            if (subscription == null)
            {
                ModelState.AddModelError("CourseShortName", "Ist in dieser Lehrveranstaltung nicht eingetragen.");
                return(View(model));
            }

            var subService = new SubscriptionService(Db);

            subService.DeleteSubscription(subscription);

            var mailService = new SubscriptionMailService();

            mailService.SendSubscriptionEMail(course, model.User.Id, host);

            return(RedirectToAction("CoursePlan", new { id = model.User.Id, semId = semester.Id }));
        }
Example #3
0
        public ActionResult Subscribe(StudentSubscriptionModel model)
        {
            var org      = GetMyOrganisation();
            var semester = SemesterService.GetSemester(model.SemesterName.Trim());

            if (semester == null)
            {
                ModelState.AddModelError("SemesterName", "Es existiert kein Semester mit dieser Bezeichnung");
                return(View(model));
            }


            var courses = Db.Activities.OfType <Course>().Where(x =>
                                                                x.ShortName.Equals(model.CourseShortName.Trim()) &&
                                                                x.SemesterGroups.Any(g =>
                                                                                     g.Semester.Id == semester.Id && g.CapacityGroup.CurriculumGroup.Curriculum.Organiser.Id == org.Id)).ToList();

            if (!courses.Any())
            {
                ModelState.AddModelError("CourseShortName", "Es existiert keine Lehrveranstaltung mit dieser Bezeichnung");
                return(View(model));
            }

            if (courses.Count > 1)
            {
                ModelState.AddModelError("CourseShortName", $"Bezeichnung nicht eindeutig. Es existieren {courses.Count} Lehrveranstaltungen mit dieser Bezeichnung");
                return(View(model));
            }

            var host   = GetCurrentUser();
            var course = courses.First();

            var subscription = course.Occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(model.User.Id));

            if (subscription != null)
            {
                ModelState.AddModelError("CourseShortName", "Ist bereits in dieser Lehrveranstaltung eingetragen.");
                return(View(model));
            }

            subscription               = new OccurrenceSubscription();
            subscription.TimeStamp     = DateTime.Now;
            subscription.UserId        = model.User.Id;
            subscription.OnWaitingList = false;
            subscription.Occurrence    = course.Occurrence;
            course.Occurrence.Subscriptions.Add(subscription);

            // wenn es ein Wahlverfahren gibt, dann als Prio 1
            var lottery =
                Db.Lotteries.FirstOrDefault(x => x.Occurrences.Any(y => y.Id == course.Occurrence.Id));

            if (lottery != null)
            {
                subscription.Priority = 1;

                var game = lottery.Games.FirstOrDefault(x => x.UserId.Equals(model.User.Id));
                if (game == null)
                {
                    game = new LotteryGame
                    {
                        Lottery       = lottery,
                        UserId        = subscription.UserId,
                        AcceptDefault = false,
                        CoursesWanted = lottery.MaxConfirm,
                        Created       = DateTime.Now,
                        LastChange    = DateTime.Now
                    };
                    lottery.Games.Add(game);
                }
            }

            Db.SaveChanges();

            // Bei Erfolg Mail versenden
            var mailService = new SubscriptionMailService();

            mailService.SendSubscriptionEMail(course, subscription, host);



            return(RedirectToAction("CoursePlan", new { id = model.User.Id, semId = semester.Id }));
        }