Esempio n. 1
0
        public PlanungManager()
        {
            _serializationService = new SerializationService();
            _msg = new WpfMessageBoxService();

            var planungen = _serializationService.ReadPlanungListe() ?? new List <Arbeitswoche>();

            ArbeitswochenCollection = new ObservableCollection <ArbeitswocheViewmodel>(planungen.Select(x => x.MapArbeitswocheToViewmodel()));

            PlanungView = CollectionViewSource.GetDefaultView(ArbeitswochenCollection);
            PlanungView.SortDescriptions.Add(new SortDescription("Jahr", ListSortDirection.Ascending));
            PlanungView.SortDescriptions.Add(new SortDescription("KalenderWoche", ListSortDirection.Ascending));

            PlanungView.GroupDescriptions.Add(new PropertyGroupDescription("Jahr"));

            _lazyCreatePlanungswocheCommand = new Lazy <DelegateCommand>(() => new DelegateCommand(CreatePlanungswocheCommandExecute, CanCreatePlanungswocheCommandExecute));
            _lazySavePlanungswocheCommand   = new Lazy <DelegateCommand>(() => new DelegateCommand(SavePlanungswocheCommandExecute, CanSavePlanungswocheCommandExecute));
            _lazyDeletePlanungswocheCommand = new Lazy <DelegateCommand>(() => new DelegateCommand(DeletePlanungswocheCommandExecute, CanDeletePlanungswocheCommandExecute));
            _lazyRunPlanungCommand          = new Lazy <DelegateCommand>(() => new DelegateCommand(RunPlanungCommandExecute, CanRunPlanungCommandExecute));
            _lazyRunPlanungCheckCommand     = new Lazy <DelegateCommand>(() => new DelegateCommand(RunPlanungCheckCommandExecute, CanRunPlanungCheckCommandExecute));
            _lazyExportPlanungCommand       = new Lazy <DelegateCommand>(() => new DelegateCommand(ExportPlanungCommandExecute, CanExportPlanungCommandExecute));


            Jahr = DateTime.Now.Year;
        }
Esempio n. 2
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);
        }