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