Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
            }
        }