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; }
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); }