Пример #1
0
        public ConregationViewModel(Conregation versammlung, ConregationsViewModelCollection all)
        {
            _all                     = all;
            Versammlung              = versammlung;
            _myConregation           = versammlung == DataContainer.MeineVersammlung;
            RednerListe              = new SpeakersViewModelCollection(versammlung);
            DeleteCommand            = new DelegateCommand <object>(Delete);
            NewPersonCommand         = new DelegateCommand(NewPerson);
            CalculateDistanceCommand = new DelegateCommand(CalculateDistance);
            AddZeitCommand           = new DelegateCommand(AddZusammenkunftszeit);

            _zusammenkunftszeitenItems = new ObservableCollection <ZeitItem>();
            var zeitItems = new List <Zusammenkunftszeit>(1)
            {
                Versammlung.Zeit.Get(DateTime.Today.Year)
            };

            zeitItems.AddRange(Versammlung.Zeit.Items.Where(x => x.Jahr >= DateTime.Today.Year && x != zeitItems[0]));
            if (zeitItems.Count == 0)
            {
                zeitItems.Add(Versammlung.Zeit.GetLastItem());
            }

            foreach (var eintrag in zeitItems)
            {
                var uiItem = new ZeitItem(eintrag, _zusammenkunftszeitenItems, Versammlung.Zeit, _myConregation);
                _zusammenkunftszeitenItems.Add(uiItem);
            }
        }
Пример #2
0
        public static int?GetDistance(Conregation start, Conregation end)
        {
            if (start is null || end is null)
            {
                Log.Info(nameof(GetDistance), $"start oder end is null");
                return(null);
            }
            Log.Info(nameof(GetDistance), $"start={start.Name}, end={end.Name}");

            if (start == null || end == null)
            {
                return(null);
            }

            var startAdress = start.Anschrift1 + " " + start.Anschrift2;

            if (string.IsNullOrWhiteSpace(startAdress))
            {
                startAdress = start.Name;
            }

            var endAdress = end.Anschrift1 + " " + end.Anschrift2;

            if (string.IsNullOrWhiteSpace(endAdress))
            {
                endAdress = end.Name;
            }

            return(GetDistance(startAdress, endAdress));
        }
Пример #3
0
        private static void OnConregationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var sh = (DropDownVersammlung)d;
            //sh.SelectedName = ((Conregation)e.NewValue).Name;
            Conregation oldC = (Conregation)e.OldValue;
            Conregation newC = (Conregation)e.NewValue;

            sh.OnConregationChanged(oldC, newC);
        }
        public SpeakersViewModelCollection(Conregation versammlung)
        {
            var redner = DataContainer.Redner.Where(x => x.Versammlung == versammlung).OrderBy(x => x.Name);

            foreach (Speaker r in redner)
            {
                Add(new SpeakerViewModel(r));
            }
        }
Пример #5
0
        public static DateTime CalculateWeek(int week, Conregation versammlung)
        {
            //am ersten Montag im Jahr beginnt kw1
            var      jahr = week / 100;
            var      kw   = week - jahr * 100 - 1;
            DateTime tag1 = GetFirstMondayOfYear(jahr);
            var      day  = versammlung.Zeit.Get(jahr).Tag;

            //Tag 1 + KW Wochen = Montag in der KW + Wochentag der Vers.
            tag1 = tag1.AddDays((kw) * 7).AddDays((int)day - 1);
            if (day == DayOfWeeks.Sonntag)
            {
                tag1 = tag1.AddDays(7);
            }

            return(tag1);
        }
Пример #6
0
        public static void BuchungVerschieben(IEvent buchung, string mailtext, DateTime datumAlt, string zielBuchung, string header)
        {
            Conregation versammlung = null;
            Speaker     redner      = null;
            Talk        vortrag     = null;
            int         kw          = buchung.Kw;

            var objekt = $"{zielBuchung}{Environment.NewLine}" +
                         $"Datum: " + datumAlt.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture)
                         + " → " + Core.Helper.CalculateWeek(buchung.Kw).ToString("dd.MM.yyyy", CultureInfo.InvariantCulture);

            var rednereinladung = (buchung as Invitation);

            if (rednereinladung != null)
            {
                redner      = rednereinladung.Ältester;
                versammlung = redner.Versammlung;
                vortrag     = rednereinladung.Vortrag.Vortrag;
                objekt     += $"{Environment.NewLine}Vortrag: {rednereinladung.Vortrag.Vortrag.NumberTopicShort}";
            }

            var ereignis = (buchung as SpecialEvent);

            if (ereignis != null)
            {
                versammlung = DataContainer.MeineVersammlung;
                if (!string.IsNullOrEmpty(ereignis.Name))
                {
                    objekt += $"{Environment.NewLine}Ereignis: {ereignis.Name}{Environment.NewLine}"; //EventName
                }
                else
                {
                    objekt += $"{Environment.NewLine}Ereignis: {ereignis.Typ}{Environment.NewLine}"; //EventName
                }
                if (!string.IsNullOrEmpty(ereignis.Vortragender))
                {
                    objekt += $"Redner: {ereignis.Vortragender}{Environment.NewLine}"; //Redner
                }
                if (ereignis.Vortrag != null)
                {
                    vortrag = ereignis.Vortrag.Vortrag;
                    objekt += $"Thema: {ereignis.Vortrag.Vortrag.NumberTopicShort}";
                }
                else if (!string.IsNullOrEmpty(ereignis.Thema))
                {
                    objekt += $"Thema: {ereignis.Thema}";
                }
            }

            var anfrage = (buchung as Inquiry);

            if (anfrage != null)
            {
                versammlung = anfrage.Versammlung;
            }

            var log = new Activity
            {
                Typ         = Types.BuchungVerschieben,
                Versammlung = versammlung,
                Redner      = redner,
                Mails       = mailtext,
                KalenderKw  = kw,
                Vortrag     = vortrag,
                Objekt      = objekt,
                Kommentar   = header
            };

            Add(log);
        }
Пример #7
0
            public static bool Versammlung(string filename, bool clear)
            {
                Log.Info(nameof(Versammlung), filename);
                var file = new FileInfo(filename);

                if (clear)
                {
                    DataContainer.Versammlungen.Clear();
                }

                try
                {
                    using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        using (ExcelPackage package = new ExcelPackage(fs))
                        {
                            ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

                            var row = 2;
                            var id  = 1;
                            if (DataContainer.Versammlungen.Count > 0)
                            {
                                id = DataContainer.Versammlungen.Max(x => x.Id) + 1;
                            }
                            while (true)
                            {
                                var kreis   = Helper.ConvertToString(worksheet.Cells[row, 1].Value);
                                var vers    = Helper.ConvertToString(worksheet.Cells[row, 2].Value);
                                var strasse = Helper.ConvertToString(worksheet.Cells[row, 3].Value);
                                var ort     = Helper.ConvertToString(worksheet.Cells[row, 4].Value);
                                var anreise = Helper.ConvertToString(worksheet.Cells[row, 5].Value);
                                var tel     = Helper.ConvertToString(worksheet.Cells[row, 6].Value);
                                var zoom    = Helper.ConvertToString(worksheet.Cells[row, 7].Value);
                                var zeit    = Helper.ConvertToString(worksheet.Cells[row, 8].Value);

                                var koordName  = Helper.ConvertToString(worksheet.Cells[row, 9].Value);
                                var koordTel   = Helper.ConvertToString(worksheet.Cells[row, 10].Value);
                                var koordHandy = Helper.ConvertToString(worksheet.Cells[row, 11].Value);
                                var koordMail  = Helper.ConvertToString(worksheet.Cells[row, 12].Value);
                                var koordJw    = Helper.ConvertToString(worksheet.Cells[row, 13].Value);

                                if (string.IsNullOrEmpty(kreis))
                                {
                                    kreis = "-1";
                                }

                                if (string.IsNullOrEmpty(vers))
                                {
                                    break;
                                }

                                var v = new Conregation
                                {
                                    Id         = id,
                                    Kreis      = int.Parse(kreis, Helper.German),
                                    Name       = vers,
                                    Anschrift1 = strasse,
                                    Anschrift2 = ort,
                                    Anreise    = anreise,
                                    Telefon    = tel,
                                    Zoom       = zoom,

                                    Koordinator        = koordName,
                                    KoordinatorTelefon = koordTel,
                                    KoordinatorMobil   = koordHandy,
                                    KoordinatorMail    = koordMail,
                                    KoordinatorJw      = koordJw,
                                };

                                //Zusammenkunftszeit in Wochentag + Uhrzeit aufteilen
                                var tag     = DayOfWeeks.Sonntag;
                                var uhrzeit = "Unbekannt";

                                foreach (DayOfWeeks d in (DayOfWeeks[])Enum.GetValues(typeof(DayOfWeeks)))
                                {
                                    if (Helper.GetDayOfWeeks(ref zeit, d))
                                    {
                                        tag     = d;
                                        uhrzeit = zeit.Trim('.', ',', ' ', '-');
                                        break;
                                    }
                                }
                                v.Zeit.Add(DateTime.Today.Year, tag, uhrzeit);

                                DataContainer.Versammlungen.Add(v);

                                row++;
                                id++;
                            }
                        }
                }
                catch (Exception e)
                {
                    ThemedMessageBox.Show("Fehler",
                                          $"Beim Einlesen der Excel-Datei ist es zu folgendem Fehler gekommen\n:{e.Message}",
                                          System.Windows.MessageBoxButton.OK,
                                          System.Windows.MessageBoxImage.Error);
                    return(false);
                }
                return(true);
            }