public async Task <ActionResult> Teilnehmerliste(string schulungGuid) { // TODO: test try { if (schulungGuid == null) { return(new StatusCodeResult(400)); } Schulung schulung = await _schulungRepository.GetByIdAsync(schulungGuid); if (schulung == null) { return(NotFound("Schulung mit angegebener ID nicht gefunden!")); } TeilnehmerlisteViewModel tl = new TeilnehmerlisteViewModel(); tl.Schulung = schulung; tl.Anmeldungen = _anmeldungRepository.GetBySchulungGuid(schulungGuid); tl.RundmailLink = "&subject=Informationen%20zur%20" + tl.Schulung.Titel + "&body=Hallo%20Teilnehmer%20der%20" + tl.Schulung.Titel + ",%0D%0A%0D%0Ahier%20steht%20die%20Nachricht."; var empfaenger = tl.Anmeldungen // filtert anonymisierte raus .Where(a => a.Email.Contains("@")) .Select(a => a.Email); // füge Dozenten zu Empfängern hinzu empfaenger = empfaenger.Concat(tl.Schulung.Dozenten.Select(d => d.EMail)); tl.RundmailLink = String.Join(";%20", empfaenger) + tl.RundmailLink; tl.RundmailLink = tl.RundmailLink.Insert(0, "mailto:?bcc="); return(View("Teilnehmerliste", tl)); } catch (Exception e) { logger.Error(e); string code = "#204"; e = new Exception("Fehler beim Erstellen der View " + code, e); return(View("Error", e)); } }
public async Task <ActionResult> Anmeldung(AnmeldungViewModel newAnmeldung) { try { if (ModelState.IsValid) { // failsafe für den Status, wenn absichtlich falsch übergeben if (!AnmeldungViewModel.AllStati.Contains(newAnmeldung.Status)) { return(StatusCode(400, "invalid status")); } DateTime now = DateTime.Now; List <Schulung> angemeldeteSchulungen = new List <Schulung>(); var rootUrl = Util.getRootUrl(Request); var vorstand = Util.getVorstand(_context); foreach (SchulungsCheckBox checkbox in newAnmeldung.SchulungsCheckboxen) { if (checkbox.Checked) { Anmeldung anmeldung = newAnmeldung.ToAnmeldung(); anmeldung.SchulungGuid = checkbox.Guid; Schulung schulung = await _schulungRepository.GetByIdAsync(anmeldung.SchulungGuid); // nur erreicht, wenn absichtlich invalide Id übergeben if (schulung == null) { return(StatusCode(404, "Schulung existiert nicht")); } // Termine aus Datenbank laden if (schulung.Termine.Count == 0) { } // Check ob die Schulung immer noch offen ist, sonst ignorieren if (!schulung.IsAbgesagt && schulung.Anmeldefrist > now && schulung.StartAnmeldefrist < now) { if (await _anmeldungRepository.AnmeldungAlreadyExistAsync(anmeldung)) { schulung.Check = true; angemeldeteSchulungen.Add(schulung); } else { angemeldeteSchulungen.Add(schulung); await _anmeldungRepository.AddAsync(anmeldung); //logger.Info(anmeldung.AccessToken); mailingHelper.GenerateAndSendBestätigungsMailAsync(anmeldung, schulung, vorstand, rootUrl); } } } } return(View("Bestätigung", angemeldeteSchulungen)); //Weiterleitung auf Bestaetigungs-View } AnmeldungViewModel anmeldungViewModel = new AnmeldungViewModel((List <Schulung>)_schulungRepository.GetForRegSortByDate()); newAnmeldung.Schulungen = anmeldungViewModel.Schulungen; newAnmeldung.Stati = anmeldungViewModel.Stati; return(View("Anmeldung", newAnmeldung)); } catch (Exception e) { logger.Error(e); string code = "#302"; e = new Exception("Fehler beim Verarbeiten des Inputs " + code, e); return(View("Error", e)); } }