public void MailtextAnzeigen()
        {
            var w    = new InfoAnRednerUndKoordinatorWindow();
            var data = (InfoAnRednerUndKoordinatorViewModel)w.DataContext;

            data.Titel = $"Original Mailtext vom {AnfrageDatum}";
            data.MailTextKoordinator = string.IsNullOrWhiteSpace(BaseAnfrage.Mailtext) ? "kein Mailtext vorhanden!" + Environment.NewLine + BaseAnfrage.Kommentar : BaseAnfrage.Mailtext;
            data.DisableCancelButton();

            w.ShowDialog();
        }
        public void Save(ICloseable window)
        {
            var startKw    = StartEvent.Kw;
            var startDatum = Core.Helper.CalculateWeek(StartEvent.Kw);
            var zielKw     = Helper.CalculateWeek(ZielDatum);

            StartEvent.Kw = zielKw;
            var sendMail = false;

            var mails     = new InfoAnRednerUndKoordinatorWindow();
            var mailsData = (InfoAnRednerUndKoordinatorViewModel)mails.DataContext;

            mailsData.DisableCancelButton();

            //MAIL WEGEN STARTBUCHUNG
            if (StartEvent.Status == EventStatus.Zugesagt)
            {
                var ev = (StartEvent as Invitation);
                if (ev.Ältester.Versammlung == DataContainer.MeineVersammlung)
                {
                    mailsData.InfoAnKoordinatorTitel = "Info an Redner";
                    mailsData.MailTextKoordinator    = Templates.GetMailTextEreignisTauschenAnRedner(ev.Ältester, startDatum, ZielDatum, ev.Vortrag.Vortrag.ToString(), ev.Ältester.Versammlung.Name);
                }
                else
                {
                    mailsData.InfoAnKoordinatorTitel = "Info an Koordinator";
                    mailsData.MailTextKoordinator    = Templates.GetMailTextEreignisTauschenAnKoordinator(ev.Ältester.Versammlung, startDatum, ZielDatum, ev.Ältester.Name, ev.Vortrag.Vortrag.ToString(), ev.Ältester.Versammlung.Name);
                }

                sendMail = true;
            }
            string startBuchungInfo = string.Empty;

            //MAIL & TODO WEGEN ZIELBUCHUNG
            if (ZielBuchungBelegt)
            {
                var headerText = string.Empty;
                if (ZielbuchungTauschenChecked)
                {
                    if (ZielEvent.Status == EventStatus.Anfrage)
                    {
                        var ev = (ZielEvent as Inquiry);
                        ev.Kws.Remove(zielKw);
                        ev.Kws.Add(startKw);
                    }
                    else if (ZielEvent.Status == EventStatus.Ereignis)
                    {
                        ZielEvent.Kw = startKw;
                    }
                    else
                    {
                        ZielEvent.Kw = startKw;
                        var ev = (ZielEvent as Invitation);
                        if (ev.Ältester.Versammlung == DataContainer.MeineVersammlung)
                        {
                            mailsData.InfoAnRednerTitel = "Info an Redner";
                            mailsData.MailTextRedner    = Templates.GetMailTextEreignisTauschenAnRedner(ev.Ältester, ZielDatum, startDatum, ev.Vortrag.Vortrag.ToString(), ev.Ältester.Versammlung.Name);
                        }
                        else
                        {
                            mailsData.InfoAnRednerTitel = "Info an Koordinator";
                            mailsData.MailTextRedner    = Templates.GetMailTextEreignisTauschenAnKoordinator(ev.Ältester.Versammlung, ZielDatum, startDatum, ev.Ältester.Name, ev.Vortrag.Vortrag.ToString(), ev.Ältester.Versammlung.Name);
                        }
                        sendMail = true;
                    }
                    startBuchungInfo = "Die Buchung am neuen Datum wurde mit dem bisherigen Datum getauscht.";
                    headerText       = "Diese Buchung wurde verschoben";
                }
                else if (ZielbuchungLöschenChecked)
                {
                    switch (ZielEvent.Status)
                    {
                    case EventStatus.Anfrage:
                        var ev = (ZielEvent as Inquiry);
                        ev.Kws.Remove(zielKw);
                        if (ev.Kws.Count == 0)
                        {
                            DataContainer.OffeneAnfragen.Remove(ev);
                        }
                        //ToDo: Info an Versammlung über doppelbuchung der Anfrage??
                        break;

                    case EventStatus.Zugesagt:
                        var inv = (ZielEvent as Invitation);
                        if (inv.Ältester.Versammlung == DataContainer.MeineVersammlung)
                        {
                            mailsData.InfoAnRednerTitel = "Info an Redner";
                            mailsData.MailTextRedner    = Templates.GetMailTextAblehnenRedner(inv);
                        }
                        else
                        {
                            mailsData.InfoAnRednerTitel = "Info an Koordinator";
                            mailsData.MailTextRedner    = Templates.GetMailTextAblehnenKoordinator(inv);
                        }
                        DataContainer.Absagen.Add(new Cancelation(zielKw, inv.Ältester, EventStatus.Zugesagt));
                        DataContainer.MeinPlanRemove(inv);
                        sendMail = true;
                        break;

                    case EventStatus.Ereignis:
                        DataContainer.MeinPlanRemove(ZielEvent);
                        break;

                    default:
                        break;
                    }
                    startBuchungInfo = "Die Buchung am neuen Datum wurde gelöscht.";
                    headerText       = "Diese Buchung wurde gelöscht";
                }
                ActivityLog.AddActivity.BuchungVerschieben(ZielEvent, mailsData.MailTextRedner, ZielDatum, "Eine andere Buchung wurde auf das bisherige Datum verschoben.", headerText);
            }
            else
            {
                startBuchungInfo = "Das neue Datum war in der Planung offen.";
            }

            if (sendMail)
            {
                mails.ShowDialog();
            }

            DataContainer.UpdateTalkDate(StartEvent?.Vortrag?.Vortrag);
            DataContainer.UpdateTalkDate(ZielEvent?.Vortrag?.Vortrag);

            ActivityLog.AddActivity.BuchungVerschieben(StartEvent, mailsData.MailTextKoordinator, startDatum, startBuchungInfo, "Buchung wurde verschoben"); // Event1
            //Event2
            Speichern = true;
            window?.Close();
        }