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