예제 #1
0
        private async void SavePlanungswocheCommandExecute()
        {
            if (!CanSavePlanungswocheCommandExecute())
            {
                return;
            }

            IsBusy = true;

            try
            {
                await Task.Run(() =>
                {
                    var sr = new SerializationService();
                    sr.WritePlanungListe(ArbeitswochenCollection.Select(x => x.MapViewmodelToArbeitswoche()).ToList());
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Fehler beim Speichern der Planung.{Environment.NewLine}{ex.GetAllErrorMessages()}");
            }
            finally
            {
                IsBusy = false;
                CommandManager.InvalidateRequerySuggested();
            }
        }
예제 #2
0
        private bool CanCreatePlanungswocheCommandExecute()
        {
            if (KalenderWoche > 0 && KalenderWoche < 53 &&
                !ArbeitswochenCollection.Any(x => x.Jahr == Jahr && x.KalenderWoche == KalenderWoche))
            {
                return(true);
            }

            return(false);
        }
예제 #3
0
        private async void RunPlanungCommandExecute()
        {
            if (!CanRunPlanungCommandExecute())
            {
                return;
            }

            if (SelectedArbeitswoche.PlanungProMitarbeiterListe.Any(x => x.HasPlanzeitenEntries))
            {
                var dlg = _msg.ShowYesNo("Wollen Sie eine neue Planung durchführen?", CustomDialogIcons.Question);
                if (dlg == CustomDialogResults.No)
                {
                    return;
                }
            }

            IsBusy = true;

            try
            {
                var woche = SelectedArbeitswoche.MapViewmodelToArbeitswoche();

                await Task.Run(() => PlanService.ErstelleWochenplan(woche, woche.Mitarbeiter));

                var neu = woche.MapArbeitswocheToViewmodel();

                ArbeitswochenCollection.Remove(SelectedArbeitswoche);
                ArbeitswochenCollection.Add(neu);
                SelectedArbeitswoche = neu;

                ArbeitswocheVorschau.Refresh();

                SelectedPlanungswocheMitarbeiterItem = SelectedArbeitswoche.PlanungProMitarbeiterListe.First();

                FocusToBindingPath = nameof(ArbeitswocheVorschau);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Fehler beim Ausführen der Planung.{Environment.NewLine}{ex.GetAllErrorMessages()}");
            }
            finally
            {
                IsBusy = false;
                CommandManager.InvalidateRequerySuggested();
            }
        }
예제 #4
0
        private void CreatePlanungswocheCommandExecute()
        {
            if (!CanCreatePlanungswocheCommandExecute())
            {
                return;
            }

            var am = new ArbeitswochenService();
            var aw = am.CreateArbeitswoche(Jahr, KalenderWoche);
            var ms = new SerializationService();

            aw.Mitarbeiter = new List <Common.Entities.Mitarbeiter>(ms.ReadMitarbeiterListe());
            var vm = aw.MapArbeitswocheToViewmodel();

            ArbeitswochenCollection.Add(vm);
            SelectedArbeitswoche = vm;

            ArbeitswocheVorschau.Refresh();
        }
예제 #5
0
        private void DeletePlanungswocheCommandExecute()
        {
            if (!CanDeletePlanungswocheCommandExecute())
            {
                return;
            }

            var dlg = MessageBox.Show($"Wollen Sie die Arbeitswoche: {SelectedArbeitswoche.KalenderWoche}/{SelectedArbeitswoche.Jahr} wirklich löschen?",
                                      "Planungswoche löschen", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (dlg != MessageBoxResult.Yes)
            {
                return;
            }

            ArbeitswochenCollection.Remove(SelectedArbeitswoche);
            if (ArbeitswochenCollection.Count == 0)
            {
                return;
            }

            SelectedArbeitswoche = ArbeitswochenCollection.First();
            ArbeitswocheVorschau.Refresh();
        }
예제 #6
0
        public bool HasChanges()
        {
            var planungen       = _serializationService.ReadPlanungListe() ?? new List <Arbeitswoche>();
            var savedCollection = new ObservableCollection <ArbeitswocheViewmodel>(planungen.Select(x => x.MapArbeitswocheToViewmodel()));

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

            var savedOrdered = savedCollection.OrderBy(x => x.Jahr).ThenBy(x => x.KalenderWoche).ToList();
            var checkOrdered = ArbeitswochenCollection.OrderBy(x => x.Jahr).ThenBy(x => x.KalenderWoche).ToList();

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

                if (saved.Jahr != check.Jahr || saved.KalenderWoche != check.KalenderWoche)
                {
                    return(true);
                }

                if (saved.Mitarbeiter.Count != check.Mitarbeiter.Count)
                {
                    return(true);
                }

                for (int j = 0; j < saved.Mitarbeiter.Count; j++)
                {
                    var savedMitarbeiter = saved.Mitarbeiter[j];
                    var checkMitarbeiter = check.Mitarbeiter[j];

                    if (savedMitarbeiter.Name != checkMitarbeiter.Name ||
                        savedMitarbeiter.DefaultGruppe != checkMitarbeiter.DefaultGruppe ||
                        savedMitarbeiter.WochenStunden != checkMitarbeiter.WochenStunden ||
                        savedMitarbeiter.Wunschdienste != checkMitarbeiter.Wunschdienste ||
                        savedMitarbeiter.KindFreieZeit != checkMitarbeiter.KindFreieZeit)
                    {
                        return(true);
                    }

                    if (savedMitarbeiter.NichtDaZeiten.Count != checkMitarbeiter.NichtDaZeiten.Count ||
                        savedMitarbeiter.NichtDaZeiten.Intersect(checkMitarbeiter.NichtDaZeiten).Count() != savedMitarbeiter.NichtDaZeiten.Count)
                    {
                        return(true);
                    }

                    var savedPlanzeiten = saved.PlanungProMitarbeiterListe.SingleOrDefault(x => x.Mitarbeiter == savedMitarbeiter);
                    var checkPlanzeiten = check.PlanungProMitarbeiterListe.SingleOrDefault(x => x.Mitarbeiter == checkMitarbeiter);

                    if (savedPlanzeiten == null && checkPlanzeiten != null ||
                        savedPlanzeiten != null && checkPlanzeiten == null)
                    {
                        return(true);
                    }

                    if (savedPlanzeiten == null && checkPlanzeiten == null)
                    {
                        continue;
                    }

                    var savedPlanitems = new List <PlanItem>()
                    {
                        savedPlanzeiten.Montag.Planzeit,
                        savedPlanzeiten.Dienstag.Planzeit,
                        savedPlanzeiten.Mittwoch.Planzeit,
                        savedPlanzeiten.Donnerstag.Planzeit,
                        savedPlanzeiten.Freitag.Planzeit
                    };

                    var checkPlanitems = new List <PlanItem>()
                    {
                        checkPlanzeiten.Montag.Planzeit,
                        checkPlanzeiten.Dienstag.Planzeit,
                        checkPlanzeiten.Mittwoch.Planzeit,
                        checkPlanzeiten.Donnerstag.Planzeit,
                        checkPlanzeiten.Freitag.Planzeit
                    };


                    for (int k = 0; k < savedPlanitems.Count; k++)
                    {
                        var savedPl = savedPlanitems[k];
                        var checkPl = checkPlanitems[k];

                        if (!savedPl.Zeitraum.Equals(checkPl.Zeitraum) ||
                            savedPl.Dienst != checkPl.Dienst ||
                            savedPl.Gruppe != checkPl.Gruppe ||
                            savedPl.Thema != checkPl.Thema)
                        {
                            return(true);
                        }
                    }
                }

                if (saved.IsMontagFeiertag != check.IsMontagFeiertag ||
                    saved.IsDienstagFeiertag != check.IsDienstagFeiertag ||
                    saved.IsMittwochFeiertag != check.IsMittwochFeiertag ||
                    saved.IsDonnerstagFeiertag != check.IsDonnerstagFeiertag ||
                    saved.IsFreitagFeiertag != check.IsFreitagFeiertag ||
                    saved.HasMontagGrossteam != check.HasMontagGrossteam ||
                    saved.HasDienstagGrossteam != check.HasDienstagGrossteam ||
                    saved.HasMittwochGrossteam != check.HasMittwochGrossteam ||
                    saved.HasDonnerstagGrossteam != check.HasDonnerstagGrossteam ||
                    saved.HasFreitagGrossteam != check.HasFreitagGrossteam)
                {
                    return(true);
                }
            }

            return(false);
        }