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