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(); } }
private bool CanCreatePlanungswocheCommandExecute() { if (KalenderWoche > 0 && KalenderWoche < 53 && !ArbeitswochenCollection.Any(x => x.Jahr == Jahr && x.KalenderWoche == KalenderWoche)) { return(true); } return(false); }
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(); } }
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(); }
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(); }
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); }