diff --git a/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/Project_Default.xml b/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 382942f1d..000000000 --- a/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/profiles_settings.xml b/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 3b312839b..000000000 --- a/Android/BewoMitarbeiterApp/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/.idea/vcs.xml b/Android/BewoMitarbeiterApp/.idea/vcs.xml deleted file mode 100644 index b2bdec2d7..000000000 --- a/Android/BewoMitarbeiterApp/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml b/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml index fb3ed83ef..1e4a40047 100644 --- a/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml +++ b/Android/BewoMitarbeiterApp/BewoMitarbeiterApp.iml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/Android/BewoMitarbeiterApp/app/app.iml b/Android/BewoMitarbeiterApp/app/app.iml index 7ec9dbda5..96a41f48a 100644 --- a/Android/BewoMitarbeiterApp/app/app.iml +++ b/Android/BewoMitarbeiterApp/app/app.iml @@ -66,14 +66,6 @@ - - - - - - - - @@ -82,34 +74,25 @@ - + + + + + + + + - - - - - - - - - - - - - - - - diff --git a/Android/BewoMitarbeiterApp/build.gradle b/Android/BewoMitarbeiterApp/build.gradle index eb6bdaa34..0b3adfcc1 100644 --- a/Android/BewoMitarbeiterApp/build.gradle +++ b/Android/BewoMitarbeiterApp/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:2.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index 8f7c378d5..a55204e7c 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -432,6 +432,10 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer @@ -619,6 +623,7 @@ + @@ -818,6 +823,9 @@ ChatEmojisView.xaml + + SchulbegleitenderDienstCustomer.xaml + SchulbegleitenderDienstMasterView.xaml diff --git a/BeWo/BeWoApp.xaml.cs b/BeWo/BeWoApp.xaml.cs index 7617f6cd6..80f8adac9 100644 --- a/BeWo/BeWoApp.xaml.cs +++ b/BeWo/BeWoApp.xaml.cs @@ -941,11 +941,11 @@ namespace BeWo var mainWindowUIElements = new UIElement[lbtnParent.Children.Count]; lbtnParent.Children.CopyTo(mainWindowUIElements, 0); - List elementList = mainWindowUIElements.ToList(); - string username = ((TextBox) elementList.Where(el => el is TextBox && ((TextBox) el).Name.Equals("TextBoxUsername")).ToList()[0]).Text; - string password = ((PasswordBox) elementList.Where(el => el is PasswordBox && ((PasswordBox) el).Name.Equals("PasswordBoxPassword")).ToList()[0]).Password; + var elementList = mainWindowUIElements.ToList(); + var username = ((TextBox) elementList.Where(el => el is TextBox && ((TextBox) el).Name.Equals("TextBoxUsername")).ToList()[0]).Text; + var password = ((PasswordBox) elementList.Where(el => el is PasswordBox && ((PasswordBox) el).Name.Equals("PasswordBoxPassword")).ToList()[0]).Password; - if (String.IsNullOrEmpty(username) || !username.Equals(_LoggedOnUser.LoginName, StringComparison.OrdinalIgnoreCase)) + if (string.IsNullOrEmpty(username) || !username.Equals(_LoggedOnUser.LoginName, StringComparison.OrdinalIgnoreCase)) { MessageBox.Show("Das Programm kann nur vom Benutzer '" + _LoggedOnUser.LoginName + "' entsperrt werden.", "Fehler bei der Anmeldung", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; @@ -962,17 +962,18 @@ namespace BeWo Current.Dispatch(delegate { CurrentBeWo.MainWindow.Content = _lockedContent; - foreach (Window form in OpenDevExpressEditForms) - { - try - { - form.Show(); - } - catch (Exception) - { - } - } - }); + foreach(Window form in OpenDevExpressEditForms) + { + try + { + form.Show(); + } + catch(Exception exception) + { + ShowError("Ein Fehler ist beim Entsperren aufgetreten", exception, true); + } + } + }); }, true); } diff --git a/BeWo/LockedPage.xaml.cs b/BeWo/LockedPage.xaml.cs index ea3928ded..aeea4a916 100644 --- a/BeWo/LockedPage.xaml.cs +++ b/BeWo/LockedPage.xaml.cs @@ -1,5 +1,4 @@ -using System; -using System.Windows; +using System.Windows; namespace BeWo { @@ -10,16 +9,18 @@ namespace BeWo InitializeComponent(); Loaded += LockedPage_Loaded; - TextBoxUsername.Focus(); + LblVersion.Content = BeWoApp.Version; - lblGesperrt.Content = String.Format("Gesperrt von Benutzer {0} {1}", BeWoApp.LoggedOnUser.Employee.FirstName, BeWoApp.LoggedOnUser.Employee.LastName); + lblGesperrt.Content = $"Gesperrt von Benutzer {BeWoApp.LoggedOnUser.Employee.FirstName} {BeWoApp.LoggedOnUser.Employee.LastName}"; } private void LockedPage_Loaded(object sender, RoutedEventArgs e) { var top = (ActualHeight - 400) / 3; GridLogin.Margin = new Thickness(0, top, 0, 0); + + TextBoxUsername.Focus(); } } } diff --git a/BeWo/Ressources/Icons/Haeckchen.png b/BeWo/Ressources/Icons/Haeckchen.png new file mode 100644 index 000000000..d4379ecab Binary files /dev/null and b/BeWo/Ressources/Icons/Haeckchen.png differ diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml b/BeWo/Scheduler/View/NewSchedulerView.xaml index e5132c3a0..0cdc38787 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml @@ -970,10 +970,10 @@ this.Dispatch(() => { - var erg = ((!BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderKliententermineAlleAnsehen)) ? liste.Where(c => c.IsRelatedToEmployee).ToList() : liste).Where(c => c.IsArchived == false).ToList(); + var erg = (!BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderKliententermineAlleAnsehen) ? liste.Where(c => c.IsRelatedToEmployee).ToList() : liste).Where(c => c.IsArchived == false).ToList(); AllCustomers = erg; CustomerList = AllCustomers; @@ -829,10 +827,41 @@ namespace BeWo.Scheduler.View private void UpdateRequestString() { ServiceFacade.DoResourceServiceSync(r => Liste = r.GetAllOpenAppointmentsForEmployee(BeWoApp.LoggedOnEmployee.EmployeeOid.Value)); - var summe = Liste.Count; - Enabled = Liste.Count > 0; - Requests = string.Format("{0} Benachrichtigung{1}", summe == 0 ? "keine" : summe.ToString(), summe == 1 ? "" : "en"); + var count = 0; + var oidList = new List(); + foreach (var termin in Liste) + { + if (termin.Originator.EmployeeOid == BeWoApp.LoggedOnEmployee.EmployeeOid.Value) + { + foreach (var status in termin.EmployeeList.Where(w => w.Employee.EmployeeOid != BeWoApp.LoggedOnEmployee.EmployeeOid.Value)) + { + if (status.IsPChanged && status.ParticipationAnswer != ParticipationAnswer.Offen && status.ParticipationAnswer != ParticipationAnswer.Verstrichen && !oidList.Contains(status.Employee2SchedulerAppointmentOid.Value)) + { + oidList.Add(status.Employee2SchedulerAppointmentOid.Value); + count++; + } + } + } + else + { + if (termin.EmployeeList.Any(a => a.Employee.EmployeeOid == BeWoApp.LoggedOnEmployee.EmployeeOid.Value)) + { + foreach (var status in termin.EmployeeList.Where(w => w.Employee.EmployeeOid == BeWoApp.LoggedOnEmployee.EmployeeOid.Value)) + { + if (!status.IsPChanged && status.ParticipationAnswer == ParticipationAnswer.Offen && status.ParticipationAnswer != ParticipationAnswer.Verstrichen && !oidList.Contains(status.Employee2SchedulerAppointmentOid.Value)) + { + oidList.Add(status.Employee2SchedulerAppointmentOid.Value); + count++; + } + } + } + } + } + + + Enabled = count > 0; + Requests = string.Format("{0} Benachrichtigung{1}", count == 0 ? "keine" : count.ToString(), count == 1 ? "" : "en"); } private List Liste = new List(); @@ -938,9 +967,9 @@ namespace BeWo.Scheduler.View //Synchronize(); } - private void scheduler_EditAppointmentFormShowing(object sender, EditAppointmentFormEventArgs e) + private void Scheduler_EditAppointmentFormShowing(object sender, EditAppointmentFormEventArgs e) { - var control = (DevExpress.Xpf.Scheduler.SchedulerControl) sender; + var control = (SchedulerControl) sender; if (istNeu) { @@ -967,7 +996,7 @@ namespace BeWo.Scheduler.View private void SchedulerControl_EditRecurrentAppointmentFormShowing(object sender, EditAppointmentFormEventArgs e) { } - private void scheduler_PopupMenuShowing(object sender, SchedulerMenuEventArgs e) + private void Scheduler_PopupMenuShowing(object sender, SchedulerMenuEventArgs e) { if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderMitarbeitertermineAnsehen) || !BeWoApp.LoggedOnUser.HasRight(UserRightType.Mitarbeiterstundenkonto_ViewAll)) @@ -993,13 +1022,13 @@ namespace BeWo.Scheduler.View } private bool istNeu; - private void scheduler_InitNewAppointment(object sender, AppointmentEventArgs e) + private void Scheduler_InitNewAppointment(object sender, AppointmentEventArgs e) { istNeu = true; ViewModel.InitNewAppointment(e.Appointment); } - private void scheduler_AppointmentViewInfoCustomizing(object sender, DevExpress.Xpf.Scheduler.AppointmentViewInfoCustomizingEventArgs e) + private void Scheduler_AppointmentViewInfoCustomizing(object sender, DevExpress.Xpf.Scheduler.AppointmentViewInfoCustomizingEventArgs e) { e.ViewInfo.CustomViewInfo = e.ViewInfo.Appointment.CustomFields; } @@ -1008,14 +1037,12 @@ namespace BeWo.Scheduler.View { var darfTerminDetailsSehen = true; var appointment = e.Appointment; - var ersteller = (CompactEmployeeDC) appointment.CustomFields["Originator"]; + var ersteller = (CompactEmployeeDC) appointment.CustomFields["Originator"]; var mitarbeiterliste = (List)appointment.CustomFields["EmployeeList"]; var hatNurAndereMitarbeiter = mitarbeiterliste.Count > 0 && !(mitarbeiterliste.Count == 1 && mitarbeiterliste.ElementAt(0).Employee.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid)); var hatKlienten = ((List) appointment.CustomFields["CustomerList"]).Count > 0; - bool istErsteller = ersteller.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid); - - //var hatRessourcen = ((List) apt.CustomFields["ResourceList"]).Count > 0; + var istErsteller = ersteller.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid); if (hatNurAndereMitarbeiter || !istErsteller) { @@ -1139,7 +1166,9 @@ namespace BeWo.Scheduler.View var zuBestaetigen = vm.Appointments.Where(app => { - if (!app.CustomFields.ContainsKey("EmployeeList")) + var originator = (CompactEmployeeDC) app.CustomFields["Originator"]; + + if (!app.CustomFields.ContainsKey("EmployeeList") || originator.EmployeeOid == BeWoApp.LoggedOnEmployee.EmployeeOid.Value) { return false; } @@ -1159,7 +1188,7 @@ namespace BeWo.Scheduler.View var empList = (List) app.CustomFields["EmployeeList"]; var or = (CompactEmployeeDC) app.CustomFields["Originator"]; - return or.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid) && empList.Any(a => a.IsPChanged && a.ParticipationAnswer != ParticipationAnswer.Offen && !a.Employee.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid)); + return or.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid) && empList.Any(a => a.IsPChanged && a.ParticipationAnswer != ParticipationAnswer.Offen && a.ParticipationAnswer != ParticipationAnswer.Verstrichen && !a.Employee.EmployeeOid.Equals(BeWoApp.LoggedOnEmployee.EmployeeOid)); }).ToList(); if (!zuBestaetigen.Any() && !updates.Any()) @@ -1167,13 +1196,13 @@ namespace BeWo.Scheduler.View return; } - var x = new RequestAnswerView(zuBestaetigen, updates); + var requestAnswerView = new RequestAnswerView(zuBestaetigen, updates); - x.Closed += RequestAnswerViewClosedEvent; - x.ParticipationChanged += UpdateRequestStringEvent; - x.ParticipationChanged += UpdateBeiParticipationChanged; - - x.Show(); + requestAnswerView.Closed += RequestAnswerViewClosedEvent; + requestAnswerView.ParticipationChanged += UpdateRequestStringEvent; + requestAnswerView.ParticipationChanged += UpdateBeiParticipationChanged; + + requestAnswerView.Show(); } private void RequestAnswerViewClosedEvent(object sender, EventArgs e) @@ -1429,10 +1458,15 @@ namespace BeWo.Scheduler.View var items = SelectedItems; + var testtesttest = ViewModel.ActiveAppointmentViewModel; + OnPropertyChanged("AllResources"); OnPropertyChanged("SelectedEmployees"); OnPropertyChanged("SelectedItems"); - } + OnPropertyChanged("ViewModel"); + + Scheduler.ActiveView.LayoutChanged(); + } //private void ExportAsiCal(object sender, RoutedEventArgs e) //{ diff --git a/BeWo/Scheduler/View/RequestAnswerView.xaml b/BeWo/Scheduler/View/RequestAnswerView.xaml index 86c00a756..beec41c81 100644 --- a/BeWo/Scheduler/View/RequestAnswerView.xaml +++ b/BeWo/Scheduler/View/RequestAnswerView.xaml @@ -34,7 +34,7 @@ - + - - --> - - - + + - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - - + + + + + + + + + + + + + + + + + + diff --git a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs b/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs index 702684f1e..7dc973a82 100644 --- a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs +++ b/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +using System.Drawing; using System.Globalization; using System.IO; using System.Linq; @@ -12,6 +13,7 @@ using System.Windows.Data; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; +using System.Windows.Media.Imaging; using System.Windows.Navigation; using BeWo.Annotations; @@ -20,7 +22,9 @@ using BeWo.Core.Service; using BeWo.Scheduler.Converter; using BeWo.Scheduler.ViewModel; using BeWo.ServiceProxy; - +using BeWo.View; +using BeWo.View.Detail; +using BeWo.ViewModel; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; @@ -38,7 +42,9 @@ using Appointment = DevExpress.XtraScheduler.Appointment; using ColorConverter = System.Windows.Media.ColorConverter; using DragDropEffects = System.Windows.DragDropEffects; using DragEventArgs = System.Windows.DragEventArgs; +using Image = System.Windows.Controls.Image; using MessageBox = System.Windows.MessageBox; +using Point = System.Windows.Point; using SchedulerControl = DevExpress.Xpf.Scheduler.SchedulerControl; @@ -48,184 +54,777 @@ namespace BeWo.SchulbegleitenderDienst { public List Mitarbeiter { get; set; } + private List items = new List(); + + private SchulbegleitenderDienstBearbeitungsView view = null; + public NewSchulbegleitenderDienstView() { InitializeComponent(); + GridDataControl.ItemsSource = items; + + GetAllVertretungenOnLoad(DateTime.Now); - TestMitarbeiter(); - - TestSchulBegleitenderDienst(); - - setAktDate(); - - //SchulbegleitenderDienstList.ItemContainerStyle = (Style)SchulbegleitenderDienstList.Resources["itemstyle"]; - } - - public void TestMitarbeiter() - { - // Hier muss nacher die Funktion hin die Alle Verfügbaen Mitarbeiter Rauspickt - - //List items = new List(); - - //items.Add(new User() { Mitarbeiter = "John Doe" }); - //items.Add(new User() { Mitarbeiter = "Miss Piggi" }); - //items.Add(new User() { Mitarbeiter = "Lynchknoten" }); - //items.Add(new User() { Mitarbeiter = "Franz Dita von HodenKnecht" }); - - List items = new List(); - - items.Add("John Doe"); - items.Add("Miss Piggi"); - items.Add("Lynchknoten"); - items.Add("Franz Dita von HodenKnecht"); - - //Mitarbeiter = items.ToList(); - ComboBoxEditSettingsVertretung.ItemsSource = items; - // MitarbeiterList.ItemsSource = items; + SetAbwesenheiten(); + } - public void TestSchulBegleitenderDienst() - { - //Hier muss nacher die Funktion hin die Alle Daten Rauspickt - List items = new List(); + + + + public void SetAbwesenheiten() + { + var abwesenheiten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllAbsenceReasons()); + + ComboBoxKlientVertretung.ItemsSource = abwesenheiten; + ComboBoxMitarbeiterVertretung.ItemsSource = abwesenheiten; + + //List ssx = new List(); + + //foreach (var x in abwesenheiten) + //{ + // ssx.Add(x.); + //} + AbwesenheitsKategorieComboBox.ItemsSource = abwesenheiten; + } - items.Add(new SchulbegleitenderDienst() { Vertretung = "John Doe" , Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.03.2017 - 13.03.2017", MaFehlzeit = "KEine",KindFehlzeit = "Keine"}); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Miss Piggi" , Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.05.2017 - 13.06.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Lynchknoten" , Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.06.2017 - 13.07.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Franz Dita von HodenKnecht" , Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "02.03.2017 - 13.03.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Miss Piggi", Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.05.2017 - 13.06.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Miss Piggi", Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.05.2017 - 13.06.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.05.2017 - 13.06.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - items.Add(new SchulbegleitenderDienst() { Vertretung = "Miss Piggi", Kunde = "Schlumpfine", KrankerMitarbeiter = "Hanz", KrankheitsZeitraum = "10.05.2017 - 13.06.2017", MaFehlzeit = "KEine", KindFehlzeit = "Keine" }); - - //SchulbegleitenderDienstList.ItemsSource = items; - GridDataControl.ItemsSource = items; - } public void setAktDate() { DateTime dt = DateTime.Now; Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); - + //hole zuerst alle Daten Datepicker.DateTime = dt; + + //MitarbeiterVertretung + MVDatepickerVon.DateTime = dt; + MVDatepickerBis.DateTime = dt; + + //KlientenVertretung + KVDatepickerVon.DateTime = dt; + KVDatepickerBis.DateTime = dt; + + //ArbeitsUnfähigkeitsKrankmeldung Am + KrankMeldungMitarbeiterDatepicker.DateTime = dt; + KrankMeldungKlientDatepicker.DateTime = dt; + } - public void ColorDataGrid() + + public void GetAllVertretungenOnLoad(DateTime AusgewähltesDatum) { - GridControl grid = GridDataControl; - - foreach (object column in grid.Columns) + items.Clear(); + + ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListe(AusgewähltesDatum),r =>{ + + + foreach (var vertritt in r.Vertretungsliste) { - - var Schulbegleit = (SchulbegleitenderDienst) column; - - if (Schulbegleit.Vertretung.IsNullOrEmpty()) + if (vertritt.VertretungsZeitraumVon.Date == AusgewähltesDatum.Date) { - //Farbe Rot Fordergrund gelb + var employeeName = ""; + var customerName = ""; + AbsenceReasonDC abwesenheitskategorie = null; + var VertretenderMitarbeiter = " "; - //new SolidColorBrush(Colors.Red); + foreach (var klient in r.Customersliste) + { + if (vertritt.CustomerOid == klient.CustomerOid) + { + customerName = klient.FirstName + " " + klient.LastName; + } + } - //new SolidColorBrush(Colors.Yellow); - + foreach (var mit in r.Employeesliste) + { + if (vertritt.EmployeeOid == mit.EmployeeOid) + { + employeeName = mit.FirstName + " " + mit.LastName; + } + + if (vertritt.VertretenderMitarbeiterOid == mit.EmployeeOid) + { + VertretenderMitarbeiter = mit.FirstName + " " + mit.LastName; + } + } + + foreach (var ab in r.AbsenceReasonsliste) + { + if (vertritt.AbwesenheitsOid == ab.AbsenceReasonOid) + { + abwesenheitskategorie = ab; + } + } + AddItemsToGrid(vertritt, employeeName, customerName, abwesenheitskategorie, VertretenderMitarbeiter); + } - else - { - //Farbe Grün und Fordergrund weis - - //new SolidColorBrush(Colors.Green); - - - //new SolidColorBrush(Colors.White); - } - } + + this.Dispatch(delegate + { + GridDataControl.RefreshData(); + GridDataControl.RefreshUI(); + }); + + }); } - public object getAllVertretungen(string MitarbeiterAbsenstime, DateTime AusgewähltesDatum, string KlientenAbsenstime) + public void AddItemsToGrid(VertretungDC vertritt,string employee, string customer, AbsenceReasonDC abwesenheit,string vertretenderMitarbeiter) { - //Hole hier alle Vertretungs Objekte raus || für die Liste - return null; - } + int i = 0; + if (!customer.Equals("")) + { + i = 1; + } + int y = 0; - + if (!employee.Equals("")) + { + y = 1; + } + + items.Add(new SchulbegleitenderDienst() + { + KrankheitsZeitraum = vertritt.VertretungsZeitraumVon.ToString("dd.MM.yyyy") + " - " + vertritt.VertretungsZeitraumBis.ToString("dd.MM.yyyy"), + KrankerMitarbeiter = employee, + Vertretung = vertretenderMitarbeiter, + Kunde = customer, + AbwesenheitsKategorie = abwesenheit, + Beschreibung = vertritt.Notice, + KrankheitsMeldung = vertritt.KrankheitsMeldung, + VertretungsDC = vertritt, + IsMitarbeiter = y, + IsKunde = i + //ParentId = 0, + //Oid = (int)vertritt.VertretungOid.Value + //.ToString("dd.MM.yyyy") + + }); + } - //######################### Action Event Listener ########################### - private void MitarbeiterList_OnDragEnter(object sender, DragEventArgs e) + public void UpdateGridControl() { - e.Effects = DragDropEffects.Copy; + GridDataControl.RefreshData(); + GridDataControl.RefreshUI(); } - private void GridDataControl_OnDragEnter(object sender, DragEventArgs e) - { - //items.Add(new SchulbegleitenderDienst() { Vertretung = e.Data.ToString()}); - } - private void GridDataControl_OnDragLeave(object sender, DragEventArgs e) - { - MessageBox.Show("Hallo"); + //------------------------------------------------------------------------------------------------------------------------------------ + //################################ Mitarbeiter DatePicker Von - Bis ################################ + +#region Mitarbeiter Vertretungs Datum von - bis + + // hier ist eine abfrage noch fehlerhaft (hier und Klient) + private void MVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + if (dt > MVDatepickerBis.DateTime) + { + MVDatepickerBis.DateTime = dt; + } } - private void MitarbeiterList_OnDragLeave(object sender, DragEventArgs e) - { - MessageBox.Show("tschüss"); + private void MVDatepickerBis_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + + if(dt < MVDatepickerVon.DateTime) { + MVDatepickerVon.DateTime = dt; + } } - - private void Datepicker_OnEditValueChanged(object sender, EditValueChangedEventArgs e) - { - var dt = (DateTime) e.NewValue; - - Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); +#endregion + + //################################################################################################## + //------------------------------------------------------------------------------------------------------------------------------------- - } - //#################### Popup GEdöns ########################################################## + + + //------------------------------------------------------------------------------------------------------------------------------------- + //################################ Klienten Vertrtung Von - Bis #################################### + +#region Klienten Vertretungs Datum von - bis + + private void KVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + if(dt > KVDatepickerBis.DateTime) { + KVDatepickerBis.DateTime = dt; + } + } + + private void KVDatepickerBis_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + if(dt < MVDatepickerVon.DateTime) { + KVDatepickerVon.DateTime = dt; + } + } + +#endregion + + //################################################################################################### + //------------------------------------------------------------------------------------------------------------------------------------- + + //------------------------------------------------------------------------------------------------------------------------------------------------------ + //#################### Mitarbeiter Vertretungs Popup gedönse ########################################################## + +#region Mitarbeiter Vertretung + + private CompactEmployeeDC currentEmployee; + private void MitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) { - popup_newEnvironmentPerson.IsOpen = true; + popup_newMitarbeiterVertretung.IsOpen = true; } private void Button_cancelMitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) { - popup_newEnvironmentPerson.IsOpen = false; + ClearAllMitarbeiterValues(); + popup_newMitarbeiterVertretung.IsOpen = false; + } + + private void Popupedit_MitarbeiterVertretungSearch_OnPopUpClick_popupedit_MitarbeiterVertretungSearch_PopUpClick(object sender, RoutedEventArgs e) + { + MitarbeiterVertretungsearchview.ItemSelected += MitarbeiterVertretungsearchview_MitarbeiterVertretungSelected; + popup_MitarbeiterVertretung.IsOpen = true; } + private void MitarbeiterVertretungsearchview_MitarbeiterVertretungSelected(object sender, EventArgs e) + { + popup_MitarbeiterVertretung.IsOpen = false; + MitarbeiterVertretungsearchview.ItemSelected -= MitarbeiterVertretungsearchview_MitarbeiterVertretungSelected; - private void KlientVertretung_Button_OnClick(object sender, RoutedEventArgs e) + currentEmployee = e.Data; + popupedit_MitarbeiterVertretungSearch.Text = currentEmployee.FirstName + " " + currentEmployee.LastName; + + //hole alle mit Service Raus + var employeeList = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllActiveEmployeesCompact()); + + MitarbeiterVertretungsearchview.ObjectList = employeeList; + + popupedit_MitarbeiterVertretungSearch.Focus(); + + + } + + private void Button_addMitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) + { + bool xsf = false; + + if (!popupedit_MitarbeiterVertretungSearch.Text.Equals("")) + { + xsf = true; + } + else + { + MessageBox.Show("Bitte wählen sie zuerst einen Mitarbeiter aus."); + } + + + if (xsf) + { + popup_newMitarbeiterVertretung.IsOpen = false; + + SaveEmployeeInVertretung(); + + ClearAllMitarbeiterValues(); + } + + // GetAllVertretungenOnLoad(null, DateTime.Now, null); + + } + + private void ClearAllMitarbeiterValues() { - popup_newKlientVertretung.IsOpen = true; + //Diese Methode dient nur als "Puffer" später wird alles via Vertretung Vm Gehändelt + MVDatepickerVon.DateTime = DateTime.Now; + MVDatepickerBis.DateTime = DateTime.Now; + popupedit_MitarbeiterVertretungSearch.Text = ""; + + ComboBoxMitarbeiterVertretung.SelectedIndex = -1; + MitarbeiterNotice.Text = ""; + + } + + private void SaveEmployeeInVertretung() + { + VertretungDC vertretung = new VertretungDC(); + + vertretung.VertretungsZeitraumVon = MVDatepickerVon.DateTime.Date; + vertretung.VertretungsZeitraumBis = MVDatepickerBis.DateTime.Date; + vertretung.CustomerOid = 0; + vertretung.EmployeeOid = currentEmployee.EmployeeOid; + vertretung.KrankheitsMeldung = KrankMeldungMitarbeiterDatepicker.DateTime.Date; + vertretung.VertretenderMitarbeiterOid = 0; + + var x = (AbsenceReasonDC)ComboBoxMitarbeiterVertretung.SelectedValue; + + if (x != null){ + vertretung.AbwesenheitsOid = x.AbsenceReasonOid; + } + else + { + vertretung.AbwesenheitsOid = 0; + } + + vertretung.Notice = MitarbeiterNotice.Text; + + ServiceFacade.DoOperationsServiceSync(s => s.InsertNewMitarbeiterVertretung(vertretung)); + } +#endregion + + //------------------------------------------------------------------------------------------------------------------------------------------------------ + // ############################ Klienten Vertretungs Popup gedönse ###################################################### + +#region Klient Vertretung + + private CompactCustomerDC currentKlient; + + private void KlientVertretung_Button_OnClick(object sender, RoutedEventArgs e) + { + popup_newKlientVertretung.IsOpen = true; + + } + + private void Button_cancelKlientVertretung_OnClick(object sender, RoutedEventArgs e) + { + popup_newKlientVertretung.IsOpen = false; + ClearAllKlientValues(); + } + + //Ab hier muss noch am Inhalt bearbeitet werden + private void Popupedit_KlientVertretungSearch_OnPopUpClick_popupedit_KlientVertretungSearch_PopUpClick(object sender, RoutedEventArgs e) + { + KlientVertretungsearchview.ItemSelected +=KlientVertretungsearchview_KlientVertretungSelected; + popup_KlientVertretung.IsOpen = true; + } + + private void KlientVertretungsearchview_KlientVertretungSelected(object sender, EventArgs e) + { + popup_KlientVertretung.IsOpen = false; + KlientVertretungsearchview.ItemSelected -= KlientVertretungsearchview_KlientVertretungSelected; + + currentKlient = e.Data; + popupedit_KlientVertretungSearch.Text = currentKlient.FullName; + + + //hole alle mit Service Raus + var customerList = ServiceFacade.DoCustomerServiceSync(s => s.GetAllActiveCompactCustomers()); + + KlientVertretungsearchview.ObjectList = customerList; + + popupedit_MitarbeiterVertretungSearch.Focus(); + + + } + + private void Button_addKlientVertretung_OnClick(object sender, RoutedEventArgs e) + { + bool xsf = false; + + if (!popupedit_KlientVertretungSearch.Text.Equals("")) + { + xsf = true; + } + else + { + MessageBox.Show("Bitte wählen sie zuerst einen Klienten aus."); + } + + + if(xsf){ + popup_newKlientVertretung.IsOpen = false; + + SaveKlientInVertretung(); + + ClearAllKlientValues(); + } + + // GetAllVertretungenOnLoad(null, DateTime.Now, null); + } + + private void ClearAllKlientValues() + { + //Das gleiche gilt hier auch wie bei mitarbeiter + + KVDatepickerVon.DateTime = DateTime.Now; + KVDatepickerBis.DateTime = DateTime.Now; + popupedit_KlientVertretungSearch.Text = ""; + + ComboBoxKlientVertretung.SelectedIndex = -1; + KlientNotice.Text = ""; + + } + + private void SaveKlientInVertretung() + { + VertretungDC vertretung = new VertretungDC(); + + vertretung.VertretungsZeitraumVon = KVDatepickerVon.DateTime.Date; + vertretung.VertretungsZeitraumBis = KVDatepickerBis.DateTime.Date; + vertretung.CustomerOid = currentKlient.CustomerOid; + vertretung.EmployeeOid = 0; + vertretung.KrankheitsMeldung = KrankMeldungKlientDatepicker.DateTime.Date; + vertretung.VertretenderMitarbeiterOid = 0; + + var x = (AbsenceReasonDC)ComboBoxKlientVertretung.SelectedValue; + + if (x != null){ + vertretung.AbwesenheitsOid = x.AbsenceReasonOid; + } + else + { + vertretung.AbwesenheitsOid = 0; + } + + vertretung.Notice = KlientNotice.Text; + + //Safe in die Daten Tabelle + ServiceFacade.DoOperationsServiceSync(s => s.InsertNewKlientenVertretung(vertretung)); + } + +#endregion + + //######################################################################################################################### + //------------------------------------------------------------------------------------------------------------------------------------------------------ + + + //######################### Action Event Listener ########################### + + //Fertig + private void Datepicker_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); + + //Vorbereitung hole alle vom ausgewählten Datum + GetAllVertretungenOnLoad(dt); + } + + //Fertig + private void ButtonEditSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) + { + //Es gibt noch probleme -> Button anclickbar obwohl nicht sichtbar + //Rufe hier ein Neues Fenster auf das VErschiedenste Settings bearbeitet + + if (view == null) + { + view = new SchulbegleitenderDienstBearbeitungsView(); + + view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); + view.ShowDialog(); + } + else + { + view.Close(); + view = new SchulbegleitenderDienstBearbeitungsView(); + + view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); + view.ShowDialog(); + } + + } + + //Fertig + private void newWindow_RaiseCustomEvent(object sender, CustomEventArgs e) + { + UpdateMitarbeiterToVertretung(e.Message); + } + + //Fertig + private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee) + { + var a = (SchulbegleitenderDienst)GridDataControl.SelectedItem; + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + vert.VertretenderMitarbeiterOid = employee.EmployeeOid; + + + ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + + view.Close(); + + GetAllVertretungenOnLoad(Datepicker.DateTime.Date); } - private void Button_cancelKlientVertretung_OnClick(object sender, RoutedEventArgs e) + //################### Kontext Menue bereich ############################### + + private void DataViewBase_OnShowGridMenu(object sender, GridMenuEventArgs e) { - popup_newKlientVertretung.IsOpen = false; + if (e.MenuInfo.Column.FieldName == "Kunde") + { + BarButtonItem x = new BarButtonItem() {Content = "Kunden Info"}; + x.ItemClick += Kundeninfo_OnClick; + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "KrankerMitarbeiter") + { + BarButtonItem x = new BarButtonItem() {Content = "Mitarbeiter Info"}; + x.ItemClick += Mitarbeiterinfo_OnClick; + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "Vertretung") + { + BarButtonItem s = new BarButtonItem() { Content = "Mitarbeiter Info" }; + s.ItemClick += MitarbeiterVertretunginfo_OnClick; + e.Customizations.Add(s); + } + + BarButtonItem y = new BarButtonItem() { Content = "Löschen" }; + y.ItemClick += DeletPerson_OnClick; + e.Customizations.Add(y); + } + + //Fertig + private void Kundeninfo_OnClick(object sender, RoutedEventArgs e) + { + + var a = (SchulbegleitenderDienst)GridDataControl.SelectedItem; + + if (!a.Kunde.Equals("")) + { + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + List abf = new List(); + abf.Add(vert.CustomerOid.Value); + + var sgf = ServiceFacade.DoCustomerServiceSync(s => s.GetCompactCustomersById(abf)); + var selectedCustomer = sgf[0]; + + VMFactory.CreateCustomerVMAsync(selectedCustomer.CustomerOid, + cb => this.Dispatch( + () => + BeWoUtils.OpenModalViewWindow(cb, null, () => this.Dispatch( + delegate + { + var updatedCustomer = new CompactCustomerDC(); + + ServiceFacade.DoCustomerServiceSync( + s => updatedCustomer = s.GetCompactCustomerDC(selectedCustomer.CustomerOid)); + selectedCustomer = new CompactCustomerDC(); + selectedCustomer = updatedCustomer; + // UpdateControls(); + // customerText.Text = updatedCustomer.ToString(); + + BeWoUtils.UpdateAllViews(selectedCustomer); + })) + )); + } + else + MessageBox.Show("Es wurde der Vertretung kein Kunde zugeteilt"); + + } + + //Fertig + private void Mitarbeiterinfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (SchulbegleitenderDienst)GridDataControl.SelectedItem; + + if (!a.KrankerMitarbeiter.Equals("")) + { + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + List abf = new List(); + abf.Add(vert.EmployeeOid.Value); + + var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(vert.EmployeeOid.Value)); + var selectedEmployee = sgf; + + VMFactory.CreateEmployeeVMAsync(selectedEmployee.EmployeeOid, + cb => this.Dispatch( + () => + BeWoUtils.OpenModalViewWindow(cb, null, () => this.Dispatch( + delegate + { + var updatedEmployee = new CompactEmployeeDC(); + + ServiceFacade.DoEmployeeServiceSync( + s => updatedEmployee = s.GetActiveCompactEmployeeWithOid(selectedEmployee.EmployeeOid)); + selectedEmployee = new CompactEmployeeDC(); + selectedEmployee = updatedEmployee; + // UpdateControls(); + // customerText.Text = updatedCustomer.ToString(); + + BeWoUtils.UpdateAllViews(selectedEmployee); + })) + )); + } + else + MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); } - + //Fertig + private void MitarbeiterVertretunginfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (SchulbegleitenderDienst)GridDataControl.SelectedItem; + + if (!a.Vertretung.Equals("")) + { + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + List abf = new List(); + abf.Add(vert.EmployeeOid.Value); + + var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(vert.VertretenderMitarbeiterOid.Value)); + var selectedEmployee = sgf; + + VMFactory.CreateEmployeeVMAsync(selectedEmployee.EmployeeOid, + cb => this.Dispatch( + () => + BeWoUtils.OpenModalViewWindow(cb, null, () => this.Dispatch( + delegate + { + var updatedEmployee = new CompactEmployeeDC(); + + ServiceFacade.DoEmployeeServiceSync( + s => updatedEmployee = s.GetActiveCompactEmployeeWithOid(selectedEmployee.EmployeeOid)); + selectedEmployee = new CompactEmployeeDC(); + selectedEmployee = updatedEmployee; + // UpdateControls(); + // customerText.Text = updatedCustomer.ToString(); + + BeWoUtils.UpdateAllViews(selectedEmployee); + })) + )); + } + else + MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); + } + + //Fertig + private void DeletPerson_OnClick(object sender, RoutedEventArgs e) + { + if (MessageBox.Show("Möchten Sie die Vertretung wirklich Löschen?", "Vertretung Löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) + { + //get oid from vertretung + var a = (SchulbegleitenderDienst) GridDataControl.SelectedItem; + + // delet vertretung from oid + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert)); + + GetAllVertretungenOnLoad(Datepicker.DateTime.Date); + } + } + + //############################################################################ + + //################## Ermögliche save nach änderung am grid ################### + + private void GridViewBase_OnRowUpdated(object sender, RowEventArgs e) + { + var a = (SchulbegleitenderDienst) GridDataControl.SelectedItem; + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + + vert.Notice = a.Beschreibung; + + vert.AbwesenheitsOid = a.AbwesenheitsKategorie.AbsenceReasonOid; + + //noch alle daten übergeben + vert.KrankheitsMeldung = a.KrankheitsMeldung; + + try + { + string[] zeitraum = a.KrankheitsZeitraum.Split('-'); + + vert.VertretungsZeitraumVon = DateTime.Parse(zeitraum[0]); + vert.VertretungsZeitraumBis = DateTime.Parse(zeitraum[1]); + } + catch (Exception exception) + { + MessageBox.Show("Es ist ein Fehler beim splitten eines strings aufgetretten"); + } + + + ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + + + GetAllVertretungenOnLoad(Datepicker.DateTime.Date); + + } + + //############################################################################ } - //Binding Connectoren - public class User - { - public string Mitarbeiter { get; set; } - } +#region Connectoren - public class SchulbegleitenderDienst + //Binding Connectoren + + public class SchulbegleitenderDienst //---> muss durch die VertretungsVM ersetzt weden. { + public VertretungDC VertretungsDC { get; set; } // ---> Sicherheitsrisiko ?? public string Vertretung { get; set; } public string Kunde { get; set; } public string KrankerMitarbeiter { get; set; } - public string MaFehlzeit { get; set; } - public string KindFehlzeit { get; set; } + public AbsenceReasonDC AbwesenheitsKategorie { get; set; } + public DateTime KrankheitsMeldung { get; set; } + //public string MaFehlzeit { get; set; } + //public string KindFehlzeit { get; set; } public string KrankheitsZeitraum { get; set; } + public string Beschreibung { get; set; } + //public int ParentId { get; set; } + //public int Oid { get; set; } + //Farbe der Jeweiligen Zeile + public int IsKunde { get; set; } + //{ + // get + // { + // //Bearbeiten, vllt Grid Updaten oder so + // if (!Kunde.Equals("")) + // { + // return 1; //true + // } + // else + // { + // return 0; //false + // } + // } + + //} + + public int IsMitarbeiter { get; set; } + + //Villeicht mal schauen mal sehen + public string AbwesenheitsKategorieToString + { + get { return AbwesenheitsKategorie.Description; } + } + + } + +#endregion + + } diff --git a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml new file mode 100644 index 000000000..9055d4f4b --- /dev/null +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +