コード例 #1
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"));
        }