private void DeleteMitarbeiterCommandExecute()
        {
            if (!CanDeleteMitarbeiterCommandExecute())
            {
                return;
            }

            var dlg = MessageBox.Show($"Wollen Sie den Mitarbeiter: {SelectedMitarbeiter.Name} wirklich löschen?",
                                      "Mitarbeiter löschen", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (dlg == MessageBoxResult.Yes)
            {
                MitarbeiterCollection.Remove(SelectedMitarbeiter);
            }
        }
        private void CreateMitarbeiterCommandExecute()
        {
            if (!CanCreateMitarbeiterCommandExecute())
            {
                return;
            }

            SelectedMitarbeiter = new MitarbeiterViewmodel()
            {
                Name = ""
            };
            MitarbeiterCollection.Add(SelectedMitarbeiter);
            MitarbeiterView.Refresh();

            FocusToBindingPath = "Name";
        }
        private async void SaveMitarbeiterCommandExecute()
        {
            if (!CanSaveMitarbeiterCommandExecute())
            {
                return;
            }

            IsBusy = true;
            try
            {
                await Task.Run(() => _serializationService.WriteMitarbeiterListe(MitarbeiterCollection.Select(x => x.MapViewmodelToMitarbeiter()).ToList()));

                MitarbeiterView.Refresh();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler beim Speichern der Daten. " + Environment.NewLine + ex.GetAllErrorMessages());
            }
            finally
            {
                IsBusy = false;
            }
        }
        public bool HasChanges()
        {
            var mitarbeiters    = _serializationService.ReadMitarbeiterListe() ?? new List <Common.Entities.Mitarbeiter>();
            var savedCollection = new ObservableCollection <MitarbeiterViewmodel>(mitarbeiters.Select(x => x.MapMitarbeiterToViewmodel()));

            if (savedCollection.Count != MitarbeiterCollection.Count)
            {
                return(true);
            }

            var savedOrdered = savedCollection.OrderBy(x => x.Name).ToList();
            var checkOrdered = MitarbeiterCollection.OrderBy(x => x.Name).ToList();

            for (int i = 0; i < savedOrdered.Count; i++)
            {
                var saved = savedOrdered[i];
                var check = checkOrdered[i];

                if (saved.Name != check.Name ||
                    saved.DefaultGruppe != check.DefaultGruppe ||
                    saved.WochenStunden != check.WochenStunden ||
                    saved.Wunschdienste != check.Wunschdienste ||
                    saved.DefaultThema != check.DefaultThema ||
                    saved.KindFreieZeit != check.KindFreieZeit)
                {
                    return(true);
                }

                if (saved.NichtDaZeiten.Count != check.NichtDaZeiten.Count ||
                    saved.NichtDaZeiten.Intersect(check.NichtDaZeiten).Count() != saved.NichtDaZeiten.Count)
                {
                    return(true);
                }
            }

            return(false);
        }