Пример #1
0
        public ActionResult RejectConfiremd(Guid id)
        {
            var subscription = Db.Subscriptions.OfType <OccurrenceSubscription>().SingleOrDefault(x => x.Id == id);
            var thesis       = Db.Activities.OfType <Exam>()
                               .SingleOrDefault(x => x.Occurrence.Id == subscription.Occurrence.Id);
            var user = GetUser(subscription.UserId);

            thesis.Occurrence.Subscriptions.Remove(subscription);
            Db.Subscriptions.Remove(subscription);
            Db.SaveChanges();


            var mailModel = new ThesisRejectMailModel
            {
                Thesis   = thesis,
                Lecturer = GetCurrentUser(),
                User     = user, // der Student
            };

            var mail = new MailController();

            mail.ThesisRejectEMail(mailModel).Deliver();

            return(RedirectToAction("Admin", new { id = thesis.Id }));
        }
Пример #2
0
        public PartialViewResult SubscribeActivity(Guid Id)
        {
            //Db.Database.BeginTransaction()



            var activity = Db.Occurrences.SingleOrDefault(ac => ac.Id == Id);

            var model = new OccurrenceStateModel();

            if (activity != null)
            {
                model.Occurrence = activity;

                var userProfile = UserManager.FindByName(User.Identity.Name);


                var occService = new OccurrenceService(UserManager);
                var msg        = occService.SubscribeOccurrence(activity.Id, userProfile);

                model.HasError     = msg.HasError;
                model.ErrorMessage = msg.Message;
                model.Subscription = msg.Subscription;


                var logger  = LogManager.GetLogger("SubscribeActivity");
                var ac      = new ActivityService();
                var summary = ac.GetSummary(Id);
                if (msg.HasError)
                {
                    logger.InfoFormat("{0} ({1}) by [{2}]: {3}",
                                      summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name, msg.Message);
                }
                else
                {
                    logger.InfoFormat("{0} ({1}) by [{2}]",
                                      summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name);
                }


                if (new SystemConfig().MailSubscriptionEnabled)
                {
                    var mailModel = new SubscriptionMailModel
                    {
                        Summary      = summary,
                        Subscription = model.Subscription,
                        User         = userProfile,
                    };

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

            return(PartialView("_SubscriptionState", 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 Marking(Guid id)
        {
            var userService = new UserInfoService();
            var user        = GetCurrentUser();

            var thesis = Db.Theses.SingleOrDefault(x => x.Id == id);

            // Mail mit Notenbeleg zum Ausdrucken an sich selbst senden
            var tm = new ThesisStateModel()
            {
                Thesis  = thesis,
                Student = thesis.Student,
                User    = userService.GetUser(thesis.Student.UserId),
                Mark    = ""
            };


            // hier zunächst mit Postal - weil es so geht
            var stream = new MemoryStream();

            var email = new ThesisEmail("ThesisMarked");

            email.To       = user.Email;
            email.From     = MailController.InitSystemFrom();
            email.Subject  = "Notenmeldung Abschlussarbeit";
            email.Thesis   = tm;
            email.Receiver = user;


            var         html = this.RenderViewToString("_ThesisPrintOut", email);
            PdfDocument pdf  = PdfGenerator.GeneratePdf(html, PageSize.A4);

            //pdf.Save("document.pdf");
            pdf.Save(stream, false);

            // Stream zurücksetzen
            stream.Position = 0;
            email.Attach(new Attachment(stream, "Notenmeldung.pdf", System.Net.Mime.MediaTypeNames.Application.Pdf));
            email.Send();


            return(RedirectToAction("Details", new { id = thesis.Id }));
        }
        public JsonResult MoveDates(Guid sourceDozId, Guid targetDozId)
        {
            var sourceMember = Db.Members.SingleOrDefault(x => x.Id == sourceDozId);
            var targetMember = Db.Members.SingleOrDefault(x => x.Id == targetDozId);

            // alle termine, des abgebenden Dozenten
            var dates = Db.ActivityDates.Where(x => x.Hosts.Any(h => h.Id == sourceMember.Id) && x.End > DateTime.Now).OrderBy(x => x.Begin).ToList();

            // Umhängen
            foreach (var date in dates)
            {
                date.Hosts.Remove(sourceMember);
                // nur hinzufügen, falls nicht eh schon dabe
                if (!date.Hosts.Contains(targetMember))
                {
                    date.Hosts.Add(targetMember);
                }
            }
            Db.SaveChanges();

            // jetzt noch eine Mail senden
            var userService = new UserInfoService();

            var mailModel = new MemberMoveDateMailModel
            {
                SourceUser   = userService.GetUser(sourceMember.UserId),
                TargetUser   = userService.GetUser(targetMember.UserId),
                SourceMember = sourceMember,
                TargetMember = targetMember,
                AdminMember  = GetMyMembership(),
                User         = GetCurrentUser(),
                Dates        = dates
            };

            var mail = new MailController();

            mail.MemberMoveDateEMail(mailModel).Deliver();


            // Redirect
            return(Json(new { result = "Redirect", url = Url.Action("Index") }));
        }
Пример #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult CustomOccurrenceMail(Guid id)
        {
            var db = new TimeTableDbContext();

            var occ = db.Occurrences.SingleOrDefault(c => c.Id == id);

            var model = new OccurrenceMailingModel();

            if (occ != null)
            {
                var summary     = new ActivityService().GetSummary(id);
                var subscribers = summary.Subscriptions;

                model.OccurrenceId  = occ.Id;
                model.Name          = summary.Name;
                model.Subject       = $"[{summary.Name}]";
                model.ReceiverCount = subscribers.Count;
            }

            ViewBag.UserRight  = GetUserRight();
            ViewBag.SystemMail = MailController.InitSystemFrom();

            return(View(model));
        }
Пример #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Id"></param>
        public void DeleteSubscription(Guid Id)
        {
            var activity = Db.Occurrences.SingleOrDefault(ac => ac.Id == Id);

            if (activity != null)
            {
                var logger = LogManager.GetLogger("DischargeActivity");

                var userProfile = UserManager.FindByName(User.Identity.Name);

                // das können auch mehrere sein!
                // es ist nicht klar, welche Subscription gemeint ist
                // die erste ist dann die beste
                var subscription = activity.Subscriptions.FirstOrDefault(s => s.UserId.Equals(userProfile.Id));

                var ac      = new ActivityService();
                var summary = ac.GetSummary(Id);

                if (subscription != null)
                {
                    var allDrawings = Db.SubscriptionDrawings.Where(x => x.Subscription.Id == subscription.Id).ToList();
                    foreach (var drawing in allDrawings)
                    {
                        Db.SubscriptionDrawings.Remove(drawing);
                    }


                    var bets = subscription.Bets.ToList();
                    foreach (var bet in bets)
                    {
                        Db.LotteriyBets.Remove(bet);
                    }

                    activity.Subscriptions.Remove(subscription);
                    Db.Subscriptions.Remove(subscription);

                    Db.SaveChanges();

                    logger.InfoFormat("{0} ({1}) by [{2}]",
                                      summary.Activity.Name, summary.Activity.ShortName, User.Identity.Name);


                    if (new SystemConfig().MailSubscriptionEnabled)
                    {
                        var mailModel = new SubscriptionMailModel
                        {
                            Summary      = summary,
                            Subscription = subscription,
                            User         = userProfile,
                        };

                        var mail = new MailController();
                        mail.Discharge(mailModel).Deliver();
                    }
                }
                else
                {
                    logger.ErrorFormat("Missing subscription for activity {0} and user {1}", summary.Activity.Name, User.Identity.Name);
                }
            }
        }