diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index ba1910b95..68b0713db 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -209,7 +209,7 @@ MSBuild:Compile Designer - + MSBuild:Compile Designer @@ -582,9 +582,13 @@ SchulbegleitenderDienstBearbeitungsView.xaml - - NewSchulbegleitenderDienstView.xaml + + SchulbegleitenderVertretungsDienstMainView.xaml + + + + UploadDialog.xaml @@ -1358,7 +1362,7 @@ MSBuild:Compile Designer - + MSBuild:Compile Designer MSBuild:Compile @@ -1773,8 +1777,8 @@ PercentageDisplay.xaml - - SchulbegleitenderDienst.xaml + + SchulbegleitenderDienstView.xaml AnnualReportChartControl.xaml @@ -1982,7 +1986,7 @@ - + {8a83c4dc-a0b1-4a51-ae1d-366d7a05b298} ChatController diff --git a/BeWo/SchulbegleitenderDienst/KrankheitsZeitraumView.xaml.cs b/BeWo/SchulbegleitenderDienst/KrankheitsZeitraumView.xaml.cs index 45830fb56..6a88f1ab7 100644 --- a/BeWo/SchulbegleitenderDienst/KrankheitsZeitraumView.xaml.cs +++ b/BeWo/SchulbegleitenderDienst/KrankheitsZeitraumView.xaml.cs @@ -20,13 +20,17 @@ namespace BeWo.SchulbegleitenderDienst { public event EventHandler RaiseCustomEvent; - public KrankheitsZeitraumView( DateTime start,DateTime ende) + + private TagesAnsicht tagesAansicht; + + public KrankheitsZeitraumView( DateTime start,DateTime ende, TagesAnsicht tansicht) { InitializeComponent(); DateVon.EditValue = start; DateBis.EditValue = ende; + tagesAansicht = tansicht; CloseWindow(); @@ -63,7 +67,7 @@ namespace BeWo.SchulbegleitenderDienst var b = DateBis.DateTime; - RaiseCustomEvent(this, new KrankheitsEventArgs(a,b)); + RaiseCustomEvent(this, new KrankheitsEventArgs(a,b,tagesAansicht)); } private void ButtonBase_OnClick(object sender, RoutedEventArgs e) @@ -74,14 +78,16 @@ namespace BeWo.SchulbegleitenderDienst public class KrankheitsEventArgs : EventArgs { - public KrankheitsEventArgs(DateTime s, DateTime e) + public KrankheitsEventArgs(DateTime s, DateTime e, TagesAnsicht t) { _start = s; _end = e; + _tagesAnsicht = t; } private DateTime _start; private DateTime _end; + private TagesAnsicht _tagesAnsicht; public DateTime Start { @@ -91,5 +97,10 @@ namespace BeWo.SchulbegleitenderDienst { get { return _end; } } + + public TagesAnsicht TagesItem + { + get { return _tagesAnsicht; } + } } } diff --git a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs b/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs deleted file mode 100644 index bdb7fc821..000000000 --- a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs +++ /dev/null @@ -1,2655 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Windows; - -using BeWo.Core; -using BeWo.ServiceProxy; -using BeWo.View; -using BeWo.ViewModel; -using BS.Shared; -using BS.Shared.Core; -using BS.Shared.DataContracts; -using BS.Shared.DataContracts.Compact; -using BS.Shared.Extensions; -using DevExpress.Xpf.Bars; -using DevExpress.Xpf.Editors; -using DevExpress.Xpf.Grid; -using MessageBox = System.Windows.MessageBox; - - -namespace BeWo.SchulbegleitenderDienst -{ - public partial class NewSchulbegleitenderDienstView - { - private readonly List _items = new List(); - - private readonly List _itemsWochen = new List(); - - //neu Ist immer Besser - private readonly List _itemsWochenKrankerMitarbeiter = new List(); - - private SchulbegleitenderDienstBearbeitungsView _view = null; - - private SchulbegleitenderDienstMitarbeiterBearbeitungsView _viewMitarbeiter = null; - - private KrankheitsZeitraumView _krankView = null; - - private string _mitarbeiterVertretungWocheninfo = ""; - - private string _deletVertretungsWeek = ""; - - private List _mitarbeiterwochen = new List(); - - //private List _wieAbschlagszahlung = new List(); - - public NewSchulbegleitenderDienstView() - { - InitializeComponent(); - - GridDataControlTagesansicht.ItemsSource = _items; - - GridDataControlKlientenWochenansicht.ItemsSource = _itemsWochen; - - //Only Klienten Krank ? - GridDataControlKlientenWochenansicht2.ItemsSource = _itemsWochenKrankerMitarbeiter; - - - GridDataControlMitarbeiterWochenansicht.ItemsSource = _mitarbeiterwochen; - - setAktDate(); - SetAbwesenheiten(); - - MVCheckBox.IsChecked = true; - KVCheckBox.IsChecked = true; - - } - - private void SetAbwesenheiten() - { - var abwesenheiten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllAbsenceReasons()); - - ComboBoxKlientVertretung.ItemsSource = abwesenheiten; - ComboBoxMitarbeiterVertretung.ItemsSource = abwesenheiten; - - AbwesenheitsKategorieComboBox.ItemsSource = abwesenheiten; - } - - private 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; - } - - //Lade Tagesansichts gedöns - private void GetAllVertretungenOnLoad(DateTime AusgewaehltesDatum) - { - _items.Clear(); - - ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListe(AusgewaehltesDatum),r =>{ - - foreach (var item in r) - { - AddItemsToGrid(item); - } - - #region Dispatcher Refresh Grid - this.Dispatch(delegate - { - GridDataControlTagesansicht.RefreshData(); - GridDataControlTagesansicht.RefreshUI(); - // GetWochenDienstFromItems(AusgewaehltesDatum); - }); - #endregion - }); - } - - private void GetAllVertrungenFromWeekRange(DateTime startDatum, DateTime endDatum ) - { - _items.Clear(); - ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListeWoechentlich(startDatum,endDatum), r => - { - - foreach (var item in r) - { - AddItemsToGrid(item); - } - - #region Dispatcher Refresh Grid - this.Dispatch(delegate - { - GetWochenDienstFromItems(startDatum); - //GridDataControlKlientenWochenansicht.RefreshData(); - //GridDataControlKlientenWochenansicht.RefreshUI(); - - }); - #endregion - }); - } - - private void GetAllVertretungsFreieMitarbeiter(DateTime startDatum, DateTime endDatum) - { - ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsMitarbeiterListeWoechentlich(startDatum, endDatum), r => - { - _mitarbeiterwochen.Clear(); - - foreach (var item in r) - { - AddMitarbeiterItemsToGrid(item,startDatum); - } - - #region Dispatcher Refresh Grid - this.Dispatch(delegate - { - GridDataControlMitarbeiterWochenansicht.RefreshData(); - GridDataControlMitarbeiterWochenansicht.RefreshUI(); - }); - #endregion - }); - } - - private void AddItemsToGrid(VertretungsListeItemsDC item) - { - int i = 0, y = 0; - - - if (!item.VertretenderMitarbeiter.Equals("")) - { - i = 1; - } - - if (!item.EmployeeName.Equals("")) - { - y = 1; - } - - if(item.Customer.Count != 0){ - - #region add Foreach Customers - - foreach (var customer in item.Customer) - { - SchulbegleitenderDienst xyc = CreateSchulbegleitenderDienst(item,y); - - - if (item.Vertretung != null) - { - if (item.Vertretung.CustomerOid == customer.Key) - { - xyc = Vertretungsgedoense(xyc, item, i); - - xyc.Vertreteroid = item.VertetenderMit; - - }else{ - xyc.Vertretung = ""; - } - - if (item.Vertretung.VertretenderMitarbeiterOid == 0) - { - xyc.IsKunde = 0; - } - - } - else - { - xyc.IsKunde = 0; - xyc.Vertretung = ""; - } - - xyc.AbsenceTimeDC = item.Absencetime; - xyc.Mitarbeiteroid = item.EmployeeOid; - xyc.Klientoid = customer.Key ; - xyc.Kunde = customer.Value; - xyc.WochenansichtBemerkung = item.WochenansichtBemerkung; - //xyc.Beschreibung = item.Bemerkung;//nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht - - if (item.EmployeeName.Equals("")) - { - i = 2; - xyc.IsKunde = i; - - } - - //neu - if (item.isMitarbeiterKrank) - { - xyc.IsMitarbeiterKrank = true; - xyc.IsKunde = 2; - - // hier den Tag merken um auch für WOCHEN bereich die spalte orange zu machen - - } - - if (item.isCustomerKrank) - { - xyc.IsCustomerKrank = true; - xyc.IsKunde = 2; - } - - //hier bereich zu abfrage Vertretung Gewünscht / nicht gewünscht - //################## Besser auf Server auslagern ?? ############################################# - List custOid = new List(); - custOid.Add(customer.Key); - var cus = ServiceFacade.DoCustomerServiceSync(r => r.GetCustomersById(custOid)); - - foreach (var c in cus) - { - // 1 für Grün | 0 für Rot - if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == false) - { - //anzeige Grün machen - xyc.IsKunde = 1; - } - //else if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == true) - //{ - // // anzeige noral halten - // xyc.IsKunde = 2; - //} - //else if (c.VertretungDringendErforderlich == true && c.VertretungGewuenscht == true) - //{ - // //anzeige normal halten - // xyc.IsKunde = 2; - //} - } - - //############################ - - _items.Add(xyc); - } - - #endregion - } - else - { - #region add without customer - - SchulbegleitenderDienst xyc = CreateSchulbegleitenderDienst(item, y); - - if (item.Vertretung != null) - { - xyc = Vertretungsgedoense(xyc, item, i); - - // Vertretung zwar vorhanden aber ohne einem Vertreter - if (item.Vertretung.VertretenderMitarbeiterOid == 0) - { - xyc.IsKunde = 0; - } - } - else - { - xyc.IsKunde = 0; - xyc.Vertretung = ""; - } - - xyc.AbsenceTimeDC = item.Absencetime; - xyc.Vertreteroid = item.VertetenderMit; - xyc.Mitarbeiteroid = item.EmployeeOid; - xyc.WochenansichtBemerkung = item.WochenansichtBemerkung; - //xyc.Beschreibung = item.Bemerkung; //nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht - - xyc.Kunde = ""; - xyc.Klientoid = 0; - - - if (item.EmployeeName.Equals("")) - { - i = 2; - xyc.IsKunde = i; - } - - - - _items.Add(xyc); - - #endregion - } - - } - - #region Mitarbeiter Wochenansicht Verarbeitung | Rausnehmen ??? - private void AddMitarbeiterItemsToGrid(VertretungsListeMitarbeiterItemsDC item, DateTime time) - { - - var compactEmployee = ServiceFacade.DoEmployeeServiceSync(r => r.GetActiveCompactEmployeeWithOid(item.EmployeeOid.Value)); - - MitarbeiterWochenansicht x = new MitarbeiterWochenansicht() - { - Employee = item.Employee, - EmployeeDc = compactEmployee - }; - - - DateTime dt = time; - - DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); - - DateTime anfangDt; - DateTime endeDt; - - if (item.AbsenceStartDate != null && item.AbsenceEndDate != null) - { - anfangDt = item.AbsenceStartDate.Value; - endeDt = item.AbsenceEndDate.Value; - - DateTime montagDt = startdt.Date; - DateTime dienstagDt = startdt.Date.AddDays(1); - DateTime mittwochDt = startdt.Date.AddDays(2); - DateTime donnerstagDt = startdt.Date.AddDays(3); - DateTime freitagDt = startdt.Date.AddDays(4); - DateTime samstagDt = startdt.Date.AddDays(5); - - //Bereich für Eingesetzt bei übernehmen von unterem code - // - - // Montag | 0 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, montagDt,item ,x,"EingesetztBeiMo", 0); - // Dienstag | 1 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, dienstagDt, item, x, "EingesetztBeiDi", 1); - // Mittwoch | 2 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, mittwochDt, item, x, "EingesetztBeiMi", 2); - //Donnerstag | 3 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, donnerstagDt, item, x, "EingesetztBeiDo", 3); - //Freitag | 4 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, freitagDt, item, x, "EingesetztBeiFr", 4); - // Samstag | 5 - x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, samstagDt, item, x, "EingesetztBeiSa", 5); - - } - - _mitarbeiterwochen.Add(x); - } - - public MitarbeiterWochenansicht WochentageMitarbeiterVerarbeitung(DateTime startDt, DateTime endDt, DateTime wochenTag, VertretungsListeMitarbeiterItemsDC item, MitarbeiterWochenansicht wwk, string eingesetztBei, int wochenTagZahl) - { - // mach colles zeug - if (startDt.Date <= wochenTag && wochenTag <= endDt.Date) - { - if (item != null && item.Customer != null) - { - - //------------------------------------------------------------------------------------------ - if (item.AbsenceStartDate <= wochenTag && - item.AbsenceEndDate >= wochenTag) - { - switch (wochenTagZahl) - { - case 0: - wwk.EingesetztBeiMo = item.Customer.FullName; - break; - case 1: - wwk.EingesetztBeiDi = item.Customer.FullName; - //wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 2: - wwk.EingesetztBeiMi = item.Customer.FullName; - //wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 3: - wwk.EingesetztBeiDo = item.Customer.FullName; - //wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 4: - wwk.EingesetztBeiFr = item.Customer.FullName; - //wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 5: - wwk.EingesetztBeiSa = item.Customer.FullName; - //wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - } - } - else - { - switch (wochenTagZahl) - { - case 0: - wwk.EingesetztBeiMo = ""; - break; - case 1: - wwk.EingesetztBeiDi = ""; - break; - case 2: - wwk.EingesetztBeiMi = ""; - break; - case 3: - wwk.EingesetztBeiDo = ""; - break; - case 4: - wwk.EingesetztBeiFr = ""; - break; - case 5: - wwk.EingesetztBeiSa = ""; - break; - } - } - - //-------------------------------------------------------------------------------------------------------- - } - } - else - { - switch (wochenTagZahl) - { - case 0: - wwk.EingesetztBeiMo = " "; - break; - case 1: - wwk.EingesetztBeiDi = " "; - break; - case 2: - wwk.EingesetztBeiMi = " "; - break; - case 3: - wwk.EingesetztBeiDo = " "; - break; - case 4: - wwk.EingesetztBeiFr = " "; - break; - case 5: - wwk.EingesetztBeiSa = " "; - break; - } - } - - return wwk; - } - - #endregion - - private Dictionary> a; - - private Dictionary> klientb; - - private void GetWochenDienstFromItems(DateTime time) - { - //neues hinzfügen um bei foreach all diejenigen rauszupicken die das besondere beinhlaten - _itemsWochen.Clear(); - _itemsWochenKrankerMitarbeiter.Clear(); - - DateTime dt = time; - - DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); - - foreach (var item in _items) - { - //Dictionary> a = new Dictionary>(); - - //Dictionary> klientb = new Dictionary>(); - - a = new Dictionary>(); - - klientb = new Dictionary>(); - - DateTime anfangDt; - DateTime endeDt; - - anfangDt = item.StartD; - endeDt = item.EndD; - - DateTime montagDt = startdt.Date; - DateTime dienstagDt = startdt.Date.AddDays(1); - DateTime mittwochDt = startdt.Date.AddDays(2); - DateTime donnerstagDt = startdt.Date.AddDays(3); - DateTime freitagDt = startdt.Date.AddDays(4); - DateTime samstagDt = startdt.Date.AddDays(5); - - - Wochenansichten wwk = new Wochenansichten() - { - MaKrank = item.KrankerMitarbeiter, - Kind = item.Kunde, - MaFrei = item.Vertretung, - WochenBeschreibung = item.WochenansichtBemerkung, - //Bemerkung = item.Beschreibung - - }; - - // Montag | 0 - wwk = WochentagVerarbeitung(anfangDt, endeDt, montagDt, item, "VertretungMo", "EingesetztBeiMo",wwk,0); - - //Dienstag | 1 - wwk = WochentagVerarbeitung(anfangDt, endeDt, dienstagDt, item, "VertretungDi", "EingesetztBeiDi",wwk,1); - - //Mittwoch | 2 - wwk = WochentagVerarbeitung(anfangDt, endeDt, mittwochDt, item, "VertretungMi", "EingesetztBeiMi",wwk,2); - - //Donnerstag | 3 - wwk = WochentagVerarbeitung(anfangDt, endeDt, donnerstagDt, item, "VertretungDo", "EingesetztBeiDo",wwk,3); - - //Freitag | 4 - wwk = WochentagVerarbeitung(anfangDt, endeDt, freitagDt, item, "VertretungFr", "EingesetztBeiFr",wwk,4); - - //Samstag | 5 - wwk = WochentagVerarbeitung(anfangDt, endeDt, samstagDt, item, "VertretungSa", "EingesetztBeiSa",wwk,5); - - wwk.VertretungsWoche = a; - - wwk.KlientvertretungsWoche = klientb; - - - - //Abfrage für Klienten Krank - if (wwk.IsMitarbeiterKrank) - { - _itemsWochenKrankerMitarbeiter.Add(wwk); - } - else - { - _itemsWochen.Add(wwk); - } - - } - - - // GridDataControlMitarbeiterWochenansicht.RefreshData(); - // GridDataControlMitarbeiterWochenansicht.RefreshUI(); - - GridDataControlKlientenWochenansicht.RefreshData(); - GridDataControlKlientenWochenansicht.RefreshUI(); - - //für Klient - GridDataControlKlientenWochenansicht2.RefreshData(); - GridDataControlKlientenWochenansicht2.RefreshUI(); - } - - -#region BehelfsMethoden - - private string WochenanzeigeHinzufügen(DateTime dayOfWeekDateTime, Dictionary wochentagsarbeitszeit) - { - if (wochentagsarbeitszeit.Count != 0) - { - foreach (var wa in wochentagsarbeitszeit) - { - if ((int)wa.Key +1 == (int)dayOfWeekDateTime.DayOfWeek) - { - return wa.Value; - } - } - } - - return ""; - } - - //geht das nicht irgendwie besser und verständlicher ? | also bearbeiten - private Wochenansichten WochentagVerarbeitung(DateTime anfangDt, DateTime endeDt, DateTime wochentagDt, SchulbegleitenderDienst item,string vertretungstag, string einsetzungstag,Wochenansichten wwk ,int i) - { - if (anfangDt.Date <= wochentagDt && wochentagDt <= endeDt.Date) - { - if (item.VertretungsDC != null) - { - if (item.VertretungsDC.VertretungsZeitraumVon.Date <= wochentagDt.Date && - item.VertretungsDC.VertretungsZeitraumBis.Date >= wochentagDt.Date) - { - Dictionary sa = new Dictionary(); - sa.Add(wochentagDt, item); // item.vertreteroid - - a.Add(vertretungstag, sa); - klientb.Add(einsetzungstag, sa); - - switch (i) - { - case 0: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungMo = item.Vertretung; - } - // wwk.EingesetztBeiMo = item.Kunde; - wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 1: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungDi = item.Vertretung; - } - // wwk.EingesetztBeiDi = item.Kunde; - wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 2: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungMi = item.Vertretung; - } - // wwk.EingesetztBeiMi = item.Kunde; - wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 3: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungDo = item.Vertretung; - } - // wwk.EingesetztBeiDo = item.Kunde; - wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 4: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungFr = item.Vertretung; - } - // wwk.EingesetztBeiFr = item.Kunde; - wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 5: - if (item.IsCustomerKrank) - { - wwk.isCustomerKrank = true; - } - else - { - wwk.VertretungSa = item.Vertretung; - } - // wwk.EingesetztBeiSa = item.Kunde; - wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - } - - } - else - { - switch (i) - { - case 0: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungMo = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else { - wwk.VertretungMo = ""; - } - // wwk.EingesetztBeiMo = ""; - wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 1: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungDi = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else { - wwk.VertretungDi = ""; - } - wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiDi = ""; - break; - case 2: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungMi = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else - { - wwk.VertretungMi = " "; - } - wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - - // wwk.EingesetztBeiMi = ""; - break; - case 3: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungDo = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else { - wwk.VertretungDo = ""; - } - wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - //wwk.EingesetztBeiDo = ""; - break; - case 4: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungFr = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else { - wwk.VertretungFr = ""; - } - wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiFr = ""; - break; - case 5: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungSa = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else { - wwk.VertretungSa = ""; - } - wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiSa = ""; - break; - } - } - } - else - { - Dictionary sa = new Dictionary(); - sa.Add(wochentagDt, item); // item.vertreteroid - - a.Add(vertretungstag, sa); - klientb.Add(einsetzungstag, sa); - - switch (i) - { - case 0: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungMo = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - } - else - { - wwk.VertretungMo = item.Vertretung; - } - // wwk.EingesetztBeiMo = item.Kunde; - wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 1: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungDi = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - - } - else - { - wwk.VertretungDi = item.Vertretung; - } - // wwk.EingesetztBeiDi = item.Kunde; - wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 2: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungMi = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - - } - else - { - wwk.VertretungMi = item.Vertretung; - } - // wwk.EingesetztBeiMi = item.Kunde; - wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 3: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungDo = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - - } - else - { - wwk.VertretungDo = item.Vertretung; - } - // wwk.EingesetztBeiDo = item.Kunde; - wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 4: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungFr = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - - } - else - { - wwk.VertretungFr = item.Vertretung; - } - // wwk.EingesetztBeiFr = item.Kunde; - wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - case 5: - if (item.IsMitarbeiterKrank) - { - wwk.VertretungSa = " "; - //wwk.isCustomerKrank = true; - wwk.IsMitarbeiterKrank = true; - - } - else - { - wwk.VertretungSa = item.Vertretung; - } - // wwk.EingesetztBeiSa = item.Kunde; - wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - break; - } - } - } - else - { - switch (i) - { - case 0: - wwk.VertretungMo = " "; - wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiMo = " "; - break; - case 1: - wwk.VertretungDi = " "; - wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiDi = " "; - break; - case 2: - wwk.VertretungMi = " "; - wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiMi = " "; - break; - case 3: - wwk.VertretungDo = " "; - wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiDo = " "; - break; - case 4: - wwk.VertretungFr = " "; - wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiFr = " "; - break; - case 5: - wwk.VertretungSa = " "; - wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); - // wwk.EingesetztBeiSa = " "; - break; - } - - } - - return wwk; - - - } - - private SchulbegleitenderDienst Vertretungsgedoense(SchulbegleitenderDienst xyc, VertretungsListeItemsDC item,int i) - { - if (item.Vertretung.VertretungsZeitraumVon.Date != item.Vertretung.VertretungsZeitraumBis.Date) - { - if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 && - item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0) - { - xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy") + " - " + - item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy"); - } - else - { - xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " + - item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy HH:mm"); - } - } - else - { - if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 && - item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0) - { - xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy"); - } - else - { - xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " + item.Vertretung.VertretungsZeitraumBis.Date.ToString("HH:mm"); - } - } - - - - xyc.VertretungsDC = item.Vertretung; - - xyc.Vertretung = item.VertretenderMitarbeiter; - - xyc.IsKunde = i; - - xyc.Beschreibung = item.Vertretung.Notice; - - - return xyc; - } - - private SchulbegleitenderDienst CreateSchulbegleitenderDienst(VertretungsListeItemsDC item, int y) - { - SchulbegleitenderDienst xyc = new SchulbegleitenderDienst() - { - KrankheitsZeitraum = item.Krankheitszeitraum, - KrankerMitarbeiter = item.EmployeeName, - KrankheitsMeldung = item.Krankheitsmeldung, - IsMitarbeiter = y, - Arbeitszeit = item.Worktime, - Wochentagsarbeitszeit = item.Wochentagsarbeitszeit - }; - - if (item.Abwesenheitskategorie != null) - xyc.AbwesenheitsKategorie = item.Abwesenheitskategorie; - - if (item.Absencetime.End != null && item.Absencetime.Start != null) - { - xyc.EndD = item.Absencetime.End.Value; - xyc.StartD = item.Absencetime.Start.Value; - } - - - return xyc; - - } - -#endregion - -#region Mitarbeiter Vertretungs Datum von - bis - - private void MVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) - { - var dt = (DateTime)e.NewValue; - - if (dt >= MVDatepickerBis.DateTime) - { - MVDatepickerBis.DateTime = dt; - } - } - - private void MVDatepickerBis_OnEditValueChanged(object sender, EditValueChangedEventArgs e) - { - var dt = (DateTime)e.NewValue; - - - if(dt <= MVDatepickerVon.DateTime) { - MVDatepickerVon.DateTime = dt; - } - } - -#endregion - -#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 - -#region Mitarbeiter Vertretung - - private CompactEmployeeDC currentEmployee; - - private void MitarbeiterVertretungsToggleButton_OnChecked(object sender, RoutedEventArgs e) - { - MVDatepicker_UhrzeitVon.Text = ""; - MVDatepicker_UhrzeitBis.Text = ""; - - MVDatepicker_UhrzeitVon.Visibility = Visibility.Collapsed; - MVDatepicker_UhrzeitBis.Visibility = Visibility.Collapsed; - - MVLabelUhrzeitVon.Visibility = Visibility.Collapsed; - MVLabelUhrzeitBis.Visibility = Visibility.Collapsed; - } - - private void MitarbeiterVertretungsToggleButton_OnUnchecked(object sender, RoutedEventArgs e) - { - MVDatepicker_UhrzeitVon.Visibility = Visibility.Visible; - MVDatepicker_UhrzeitBis.Visibility = Visibility.Visible; - MVLabelUhrzeitVon.Visibility = Visibility.Visible; - MVLabelUhrzeitBis.Visibility = Visibility.Visible; - } - - private void MitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) - { - popup_newMitarbeiterVertretung.IsOpen = true; - } - - private void Button_cancelMitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) - { - 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; - - currentEmployee = e.Data; - popupedit_MitarbeiterVertretungSearch.Text = currentEmployee.FirstName + " " + currentEmployee.LastName; - - 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("") && ComboBoxMitarbeiterVertretung.SelectedValue != null ) - { - - if (MVCheckBox.IsChecked.Value ) - { - xsf = true; - } - else - { - if (!MVDatepicker_UhrzeitVon.Text.Equals("") && !MVDatepicker_UhrzeitBis.Text.Equals("")) - { - string uVon=""; - string uBis=""; - - if (MVDatepicker_UhrzeitVon.Text.Length < 5) - { - uVon = "0" + MVDatepicker_UhrzeitVon.Text; - } - else - { - uVon = MVDatepicker_UhrzeitVon.Text; - } - - if (MVDatepicker_UhrzeitBis.Text.Length < 5) - { - uBis = "0" + MVDatepicker_UhrzeitBis.Text; - } - else - { - uBis = MVDatepicker_UhrzeitBis.Text; - } - - var von = DateTime.ParseExact(uVon, "HH:mm", CultureInfo.CurrentCulture); - - var bis = DateTime.ParseExact(uBis, "HH:mm", CultureInfo.CurrentCulture); - - - if (von <= bis) - { - xsf = true; - } - else - { - MessageBox.Show("Die Startzeit muss kleiner als die Endzeit sein."); - } - - } - else - { - MessageBox.Show("Bitte geben sie eine Start und eine Endzeit ein."); - } - } - } - else - { - MessageBox.Show("Bitte wählen sie zuerst einen Mitarbeiter und eine Abwesenheitskategorie aus."); - } - - - if (xsf) - { - popup_newMitarbeiterVertretung.IsOpen = false; - - SaveEmployeeInVertretung(); - - ClearAllMitarbeiterValues(); - - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); - GetAllVertrungenFromWeekRange(x, x.AddDays(5)); - } - } - - } - - private void ClearAllMitarbeiterValues() - { - MVDatepickerVon.DateTime = DateTime.Now; - MVDatepickerBis.DateTime = DateTime.Now; - popupedit_MitarbeiterVertretungSearch.Text = ""; - - ComboBoxMitarbeiterVertretung.SelectedIndex = -1; - MitarbeiterNotice.Text = ""; - - MVDatepicker_UhrzeitVon.Text = ""; - MVDatepicker_UhrzeitBis.Text = ""; - - } - - private void SaveEmployeeInVertretung() - { - AbsenceTimeDC at = new AbsenceTimeDC(); - - if(MVCheckBox.IsChecked.Value){ - at.Start = MVDatepickerVon.DateTime.Date; - at.End = MVDatepickerBis.DateTime.Date; - } - else - { - string xvon = ""; - string yvon = ""; - - if (MVDatepicker_UhrzeitVon.Text.Length < 5){ - xvon = "0" + MVDatepicker_UhrzeitVon.Text; - } - else - { - xvon = MVDatepicker_UhrzeitVon.Text; - } - - if (MVDatepicker_UhrzeitBis.Text.Length < 5) - { - yvon = "0" + MVDatepicker_UhrzeitBis.Text; - } - else - { - yvon = MVDatepicker_UhrzeitBis.Text; - } - - DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); - - DateTime dateTimeEnd = DateTime.ParseExact(yvon, "HH:mm", CultureInfo.CurrentCulture); - - var start = new DateTime(MVDatepickerVon.DateTime.Date.Year, MVDatepickerVon.DateTime.Date.Month, MVDatepickerVon.DateTime.Date.Day, dateTimeStart.Hour, dateTimeStart.Minute, dateTimeStart.Second); - - var ende = new DateTime(MVDatepickerBis.DateTime.Date.Year, MVDatepickerBis.DateTime.Date.Month, MVDatepickerBis.DateTime.Date.Day, dateTimeEnd.Hour, dateTimeEnd.Minute, dateTimeEnd.Second); - - at.Start = start; - at.End = ende; - - } - - - at.Reason = ComboBoxMitarbeiterVertretung.SelectedValue as AbsenceReasonDC; - at.Notice = MitarbeiterNotice.Text; - at.KrankheitsMeldung = KrankMeldungMitarbeiterDatepicker.DateTime.Date; - - ServiceFacade.DoOperationsServiceSync(s => s.InsertNewEmployeeAbsenceTime(currentEmployee.EmployeeOid, at)); - } -#endregion - -#region Klient Vertretung - - private CompactCustomerDC currentKlient; - - private void KlientVertretungsToggleButton_OnChecked(object sender, RoutedEventArgs e) - { - KVDatepicker_UhrzeitVon.Text = ""; - KVDatepicker_UhrzeitBis.Text = ""; - - KVDatepicker_UhrzeitVon.Visibility = Visibility.Collapsed; - KVDatepicker_UhrzeitBis.Visibility = Visibility.Collapsed; - - KVLabelUhrzeitVon.Visibility = Visibility.Collapsed; - KVLabelUhrzeitBis.Visibility = Visibility.Collapsed; - } - - private void KlientVertretungsToggleButton_OnUnchecked(object sender, RoutedEventArgs e) - { - KVDatepicker_UhrzeitVon.Visibility = Visibility.Visible; - KVDatepicker_UhrzeitBis.Visibility = Visibility.Visible; - KVLabelUhrzeitVon.Visibility = Visibility.Visible; - KVLabelUhrzeitBis.Visibility = Visibility.Visible; - } - - 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(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("") && ComboBoxKlientVertretung.SelectedValue != null) - { - if (KVCheckBox.IsChecked.Value) - { - xsf = true; - } - else - { - if (!KVDatepicker_UhrzeitVon.Text.Equals("") && !KVDatepicker_UhrzeitBis.Text.Equals("")) - { - string uVon=""; - string uBis=""; - - if (KVDatepicker_UhrzeitVon.Text.Length < 5) - { - uVon = "0" + KVDatepicker_UhrzeitVon.Text; - } - else - { - uVon = KVDatepicker_UhrzeitVon.Text; - } - - if (KVDatepicker_UhrzeitBis.Text.Length < 5) - { - uBis = "0" + KVDatepicker_UhrzeitBis.Text; - } - else - { - uBis = KVDatepicker_UhrzeitBis.Text; - } - - var von = DateTime.ParseExact(uVon, "HH:mm", CultureInfo.CurrentCulture); - - var bis = DateTime.ParseExact(uBis, "HH:mm", CultureInfo.CurrentCulture); - - - if (von <= bis) - { - xsf = true; - } - else - { - MessageBox.Show("Die Startzeit muss kleiner als die Endzeit sein."); - } - } - else - { - MessageBox.Show("Bitte geben sie eine Start und eine Endzeit ein."); - } - } - } - else - { - MessageBox.Show("Bitte wählen Sie eine/n Klient/in und eine Abwesenheitskategorie aus."); - } - - - if(xsf){ - popup_newKlientVertretung.IsOpen = false; - - SaveKlientInVertretung(); - - ClearAllKlientValues(); - - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); - GetAllVertrungenFromWeekRange(x, x.AddDays(5)); - } - } - } - - private void ClearAllKlientValues() - { - KVDatepickerVon.DateTime = DateTime.Now; - KVDatepickerBis.DateTime = DateTime.Now; - popupedit_KlientVertretungSearch.Text = ""; - - ComboBoxKlientVertretung.SelectedIndex = -1; - KlientNotice.Text = ""; - - KVDatepicker_UhrzeitVon.Text = ""; - KVDatepicker_UhrzeitBis.Text = ""; - - } - - private void SaveKlientInVertretung() - { - AbsenceTimeDC at = new AbsenceTimeDC(); - - if (KVCheckBox.IsChecked.Value) - { - at.Start = KVDatepickerVon.DateTime.Date; - at.End = KVDatepickerBis.DateTime.Date; - } - else - { - string xvon = ""; - string yvon = ""; - - if (KVDatepicker_UhrzeitVon.Text.Length < 5) - { - xvon = "0" + KVDatepicker_UhrzeitVon.Text; - } - else - { - xvon = KVDatepicker_UhrzeitVon.Text; - } - - if (KVDatepicker_UhrzeitBis.Text.Length < 5) - { - yvon = "0" + KVDatepicker_UhrzeitBis.Text; - } - else - { - yvon = KVDatepicker_UhrzeitBis.Text; - } - - DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); - - DateTime dateTimeEnd = DateTime.ParseExact(yvon, "HH:mm", CultureInfo.CurrentCulture); - - var start = new DateTime(KVDatepickerVon.DateTime.Date.Year, KVDatepickerVon.DateTime.Date.Month, KVDatepickerVon.DateTime.Date.Day, dateTimeStart.Hour, dateTimeStart.Minute, dateTimeStart.Second); - - var ende = new DateTime(KVDatepickerBis.DateTime.Date.Year, KVDatepickerBis.DateTime.Date.Month, KVDatepickerBis.DateTime.Date.Day, dateTimeEnd.Hour, dateTimeEnd.Minute, dateTimeEnd.Second); - - at.Start = start; - at.End = ende; - } - - at.Reason = ComboBoxKlientVertretung.SelectedValue as AbsenceReasonDC; - at.Notice = KlientNotice.Text; - at.KrankheitsMeldung = KrankMeldungKlientDatepicker.DateTime.Date; - - ServiceFacade.DoOperationsServiceSync(s => s.InsertNewCustomerAbsenceTime(currentKlient.CustomerOid, at)); - } - -#endregion - - - //######################### Action Event Bereich ########################### - - private void Datepicker_OnEditValueChanged(object sender, EditValueChangedEventArgs e) - { - var dt = (DateTime)e.NewValue; - - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); - - GetAllVertretungenOnLoad(dt); - } - else - { - DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); - DateTime enddt = startdt.AddDays(5); - - if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - GetAllVertrungenFromWeekRange(startdt,enddt); - } - else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) - { - GetAllVertretungsFreieMitarbeiter(startdt,enddt); - } - - - RenameColumnHeader(dt); - Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); - } - - - } - -#region Tages / Wochen Vertretungsanzeige - - #region Mitarbeiter Wochen Vertretung verarbeitung | wird nicht gebraucht wegnehmen bei ok - - private void AddKlientToMitarbeiter_OnClick(object sender, RoutedEventArgs e) - { - var mitarbeiterView = (MitarbeiterWochenansicht)GridDataControlMitarbeiterWochenansicht.SelectedItem; - - CompactEmployeeDC employee = mitarbeiterView.EmployeeDc; - - if (_viewMitarbeiter == null) - { - _viewMitarbeiter = new SchulbegleitenderDienstMitarbeiterBearbeitungsView(DateTime.Now, DateTime.Now, DateTime.Now, employee.EmployeeOid); - - _viewMitarbeiter.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomMitarbeiterEvent); - _viewMitarbeiter.ShowDialog(); - } - else - { - _viewMitarbeiter.Close(); - _viewMitarbeiter = new SchulbegleitenderDienstMitarbeiterBearbeitungsView(DateTime.Now, DateTime.Now, DateTime.Now, employee.EmployeeOid); - - _viewMitarbeiter.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomMitarbeiterEvent); - _viewMitarbeiter.ShowDialog(); - } - } - - private void newWindow_RaiseCustomMitarbeiterEvent(object sender, CustomKlientEventArgs e) - { - UpdateKlientToVertretendenMitarbeiter(e.Message, e.StartDate, e.EndDate); - - _viewMitarbeiter.Close(); - } - - //Anpassen Weil nicht funktionsfähig - private void UpdateKlientToVertretendenMitarbeiter(CompactCustomerDC customer, DateTime? start, DateTime? ende) - { - var a = (MitarbeiterWochenansicht)GridDataControlMitarbeiterWochenansicht.SelectedItem; - - var tag = GridDataControlMitarbeiterWochenansicht.CurrentColumn.FieldName; - - //bereich das heute fertig gestellt wird - - //VertretungDC vert = new VertretungDC() - //{ - // CustomerOid = customer.CustomerOid, - // EmployeeOid = a.mitarbeiteroid, // ?? das muss wahrscheinlich vom kustomer ermittelt werden - // VertretungsZeitraumVon = start.Value, - // VertretungsZeitraumBis = ende.Value, - // AbsenceTimeOid = a.absenceTimeDC.AbsenceTimeOid, // hmm wie wird das gehandelt ?? - // VertretenderMitarbeiterOid = a.EmployeeDc.EmployeeOid // Oid Vom Mitarbeiter - //}; - - //abfrage wegen update oder create | dazu die Verfügbare Vertretung bei Mitarbeiter wochenansicht bearbeiten - //if () - //{ - // ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - //} - //else - //{ - // ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); - //} - - - //Schabernack das keiner braucht - //foreach (var woche in a.KlientvertretungsWoche) - //{ - //if (woche.Key.Equals(tag)) - //{ - // foreach (var item in woche.Value) - // { - //VertretungDC vert = new VertretungDC(); - //if (item.Value.VertretungsDC != null) - //{ - // vert = item.Value.VertretungsDC; - // vert.EmployeeOid = item.Value.Mitarbeiteroid; - // vert.AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value; - // vert.Notice = item.Value.Beschreibung; - - // vert.VertretungsZeitraumVon = item.Key; - // vert.VertretungsZeitraumBis = item.Key; - - // vert.CustomerOid = customer.CustomerOid; - - - // ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); - //} - //else - //{ - // vert.EmployeeOid = item.Value.Mitarbeiteroid; - // vert.AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value; - // vert.Notice = item.Value.Beschreibung; - - // vert.VertretungsZeitraumVon = item.Key; - // vert.VertretungsZeitraumBis = item.Key; - - // vert.CustomerOid = customer.CustomerOid; - - // ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - //} - //} - //} - } - - #endregion - - - - #region Klient Wochen Vertretung verarbeiten - - private void KlientenWochenAnzeigeSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) - { - var a = (Wochenansichten) GridDataControlKlientenWochenansicht.SelectedItem; - - if (!a.IsMitarbeiterKrank) - { - var tag = GridDataControlKlientenWochenansicht.CurrentColumn.FieldName; - - VertretungDC vertretung = new VertretungDC(); - AbsenceTimeDC absenceTime = new AbsenceTimeDC(); - foreach (var vert in a.KlientvertretungsWoche) - { - if (vert.Key.Equals(tag)) - { - foreach (var val in vert.Value) - { - vertretung = val.Value.VertretungsDC; - absenceTime = val.Value.AbsenceTimeDC; - } - } - } - - if (!a.MaKrank.Equals("")) - { - //if(vertretung.EmployeeOid != 0){ - if (_view == null) - { - _view = new SchulbegleitenderDienstBearbeitungsView(1, absenceTime.Start, absenceTime.End, - Datepicker.DateTime, vertretung.CustomerOid); - - _view.RaiseCustomEvent += new EventHandler(KlientenWochen_RaiseCustomEvent); - _view.ShowDialog(); - } - else - { - _view.Close(); - _view = new SchulbegleitenderDienstBearbeitungsView(1, absenceTime.Start, absenceTime.End, - Datepicker.DateTime, vertretung.CustomerOid); - - _view.RaiseCustomEvent += new EventHandler(KlientenWochen_RaiseCustomEvent); - _view.ShowDialog(); - } - - } - else - { - MessageBox.Show("Fehler"); - } - } - else - { - MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.","Info"); - } - } - - private void KlientenWochen_RaiseCustomEvent(object sender, CustomEventArgs e) - { - UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Message, e.StartDate, e.EndDate); - - _view.Close(); - } - - private void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate) - { - var a = (Wochenansichten) GridDataControlKlientenWochenansicht.SelectedItem; - - var tag = GridDataControlKlientenWochenansicht.CurrentColumn.FieldName; - - foreach (var woche in a.VertretungsWoche) - { - if (woche.Key.Equals(tag)) - { - foreach (var item in woche.Value) - { - VertretungDC vert = new VertretungDC() - { - CustomerOid = item.Value.Klientoid, - AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value, - VertretungsZeitraumVon = startDate.Value, - VertretungsZeitraumBis = endDate.Value, - VertretenderMitarbeiterOid = employee.EmployeeOid, - EmployeeOid = item.Value.Mitarbeiteroid, - Notice = item.Value.Beschreibung, - }; - - - - if (item.Value.VertretungsDC != null) - { - //hier noch ermöglichen dass eine bereits vorhandener vertretungszeitraum / also ein teil davon nochmals abgesplittet werden kann. - - //if (item.Key >= vert.VertretungsZeitraumVon && item.Key <= vert.VertretungsZeitraumBis) - //{ - - //} - //else - //{ - - //} - - vert.VertretungOid = item.Value.VertretungsDC.VertretungOid; - vert.VertretenderMitarbeiterOid = employee.EmployeeOid; - vert.VertretungsZeitraumVon = item.Value.VertretungsDC.VertretungsZeitraumVon; - vert.VertretungsZeitraumBis = item.Value.VertretungsDC.VertretungsZeitraumBis; - - ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); - } - else - { - //ggf. ermöglichen das nicht der ganze zeitraum gesetzt wird. - //zur zeit wird hier die Gesamte Krankheitszeit - ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - } - } - - _view.Close(); - - - //Diese Funktion führt zur fehlerhaften darstellung - //GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); - GetAllVertrungenFromWeekRange(x, x.AddDays(5)); - } - } - } - - #endregion - - #region Klienten Wochen 2 Vertretung Verarbeiten - //Richtigen namen für finden - private void ButtonInfo_OnClick(object sender, RoutedEventArgs e) - { - var a = (Wochenansichten)GridDataControlKlientenWochenansicht2.SelectedItem; - - if (!a.IsMitarbeiterKrank) - { - // bleibt noch offen - } - else - { - MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.","Info"); - } - - } - #endregion - - #region Tages Klient Vertretung verarbeiten - - private void TagesansichtSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - if (a.Mitarbeiteroid != 0) - { - if (_view == null) - { - _view = new SchulbegleitenderDienstBearbeitungsView(1, a.StartD, a.EndD, Datepicker.DateTime, a.Klientoid); - - _view.RaiseCustomEvent += new EventHandler(Tagesansicht_RaiseCustomEvent); - _view.ShowDialog(); - } - else - { - _view.Close(); - _view = new SchulbegleitenderDienstBearbeitungsView(1, a.StartD, a.EndD, Datepicker.DateTime, a.Klientoid); - - _view.RaiseCustomEvent += new EventHandler(Tagesansicht_RaiseCustomEvent); - _view.ShowDialog(); - } - } - else - { - MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen."); - } - } - - private void Tagesansicht_RaiseCustomEvent(object sender, CustomEventArgs e) - { - UpdateMitarbeiterToVertretung(e.Message, e.StartDate, e.EndDate); - - _view.Close(); - } - - private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee,DateTime? startDate, DateTime? endDate) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - VertretungDC vert = new VertretungDC() - { - CustomerOid = a.Klientoid, - EmployeeOid = a.Mitarbeiteroid, - VertretungsZeitraumVon = startDate.Value, - VertretungsZeitraumBis = endDate.Value, - AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, - VertretenderMitarbeiterOid = employee.EmployeeOid, - Notice = a.Beschreibung - }; - - //rausnehmen - //AbsenceTimeDC abstime = new AbsenceTimeDC() - //{ - // AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, - // Start = a.StartD, - // End = a.EndD, - // Reason = a.AbwesenheitsKategorie, - // KrankheitsMeldung = a.KrankheitsMeldung - //}; - - if (a.VertretungsDC != null) - { - vert.VertretungOid = a.VertretungsDC.VertretungOid; - ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); - } - else - { - ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - //if (a.vertreteroid != 0) - //{ - // ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - //} - //else - //{ - // ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime)); - //} - } - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - - #endregion - -#endregion - - - -#region Popup Menue Bereich - - private void DataViewBase_OnShowGridMenu(object sender, GridMenuEventArgs e) - { - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - var a = (SchulbegleitenderDienst) GridDataControlTagesansicht.SelectedItem; - - if (e.MenuInfo.Column.FieldName == "Kunde") - { - BarButtonItem x = new BarButtonItem() {Content = "Klient/in öffnen"}; - x.ItemClick += Kundeninfo_OnClick; - e.Customizations.Add(x); - } - - if (e.MenuInfo.Column.FieldName == "KrankerMitarbeiter") - { - BarButtonItem x = new BarButtonItem() {Content = "Mitarbeiter/in öffnen"}; - x.ItemClick += Mitarbeiterinfo_OnClick; - e.Customizations.Add(x); - } - - if (e.MenuInfo.Column.FieldName == "Vertretung") - { - BarButtonItem s = new BarButtonItem() {Content = "Mitarbeiter/in öffnen"}; - s.ItemClick += MitarbeiterVertretunginfo_OnClick; - e.Customizations.Add(s); - } - - if (a.VertretungsDC != null) - { - BarButtonItem y = new BarButtonItem() {Content = "Vertretung löschen"}; - y.ItemClick += DeletPerson_OnClick; - e.Customizations.Add(y); - } - - BarButtonItem ys = new BarButtonItem() {Content = "Abwesenheit löschen"}; - ys.ItemClick += DeleteKrankmeldung_OnClick; - e.Customizations.Add(ys); - - } - else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - // ########### KontextMenue Wochenanzeige ######### - //BarButtonItem ys = new BarButtonItem() { Content = "Krankmeldung Löschen" }; // villeicht reaktivieren - //ys.ItemClick += DeleteKrankmeldung_OnClick; - //e.Customizations.Add(ys); - - if (e.MenuInfo.Column.FieldName == "Kunde") // FieldNames umbennenen - { - BarButtonItem x = new BarButtonItem() {Content = "Klient/in öffnen" }; - x.ItemClick += Kundeninfo_OnClick; // bearbeiten - e.Customizations.Add(x); - } - - if (e.MenuInfo.Column.FieldName == "MaKrank") - { - BarButtonItem x = new BarButtonItem() {Content = "Mitarbeiter/in öffnen" }; - x.ItemClick += Mitarbeiterinfo_OnClick; // eee - e.Customizations.Add(x); - } - - if (e.MenuInfo.Column.FieldName == "VertretungMo" || e.MenuInfo.Column.FieldName == "VertretungDi" || - e.MenuInfo.Column.FieldName == "VertretungMi" || e.MenuInfo.Column.FieldName == "VertretungDo" || - e.MenuInfo.Column.FieldName == "VertretungFr" || e.MenuInfo.Column.FieldName == "VertretungSa" || - e.MenuInfo.Column.FieldName == "VertretungSo") - { - BarButtonItem s = new BarButtonItem() {Content = "Mitarbeiter/in öffnen" }; - s.ItemClick += MitarbeiterVertretunginfoWochenanzeige_OnClick; - e.Customizations.Add(s); - _mitarbeiterVertretungWocheninfo = e.MenuInfo.Column.FieldName; - - BarButtonItem xs = new BarButtonItem() { Content = "Vertretung löschen" }; - xs.ItemClick += DeletVertretungForWochenanzeige_OnClick; - e.Customizations.Add(xs); - - _deletVertretungsWeek = e.MenuInfo.Column.FieldName; - } - } - else - { - //>KontextMenue für die Mitarbeiter View - } - } - - private void Kundeninfo_OnClick(object sender, RoutedEventArgs e) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - if(a.Kunde != null){ - if (!a.Kunde.Equals("") ) - { - VertretungDC vert = new VertretungDC(); - - List abf = new List(); - - if (a.VertretungsDC != null) - { - vert = a.VertretungsDC; - abf.Add(vert.CustomerOid.Value); - } - else{ - abf.Add(a.Klientoid); - } - - 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 Klient zugeteilt"); - } - else - { - MessageBox.Show("Es wurde der Vertretung kein Klient zugeteilt"); - } - } - - private void Mitarbeiterinfo_OnClick(object sender, RoutedEventArgs e) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - if (a.KrankerMitarbeiter != null) - { - if (!a.KrankerMitarbeiter.Equals("")) - { - VertretungDC vert = new VertretungDC(); - - List abf = new List(); - - if (a.VertretungsDC != null) - { - vert = a.VertretungsDC; - abf.Add(vert.EmployeeOid.Value); - } - else - { - abf.Add(a.Mitarbeiteroid); - } - - - var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); - 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"); - - } - else - { - MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); - } - - } - - private void MitarbeiterVertretunginfo_OnClick(object sender, RoutedEventArgs e) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - if (a.Vertretung != null) - { - if (!a.Vertretung.Equals("")) - { - VertretungDC vert = new VertretungDC(); - - vert = a.VertretungsDC; - - List abf = new List(); - - if (a.VertretungsDC != null) - { - vert = a.VertretungsDC; - abf.Add(vert.VertretenderMitarbeiterOid.Value); - } - else - { - abf.Add(a.Vertreteroid); - } - - var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); - 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"); - - } - else - { - MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); - } - } - -#endregion - // Zurzeit nur für KlientenWochenansicht || Auch Für Mitarbeiter Wochenansicht verfügbar machen - private void MitarbeiterVertretunginfoWochenanzeige_OnClick(object sender, RoutedEventArgs e) - { - var x = (Wochenansichten)GridDataControlKlientenWochenansicht.SelectedItem; - - foreach (var wochentag in x.VertretungsWoche) - { - if (wochentag.Key.Equals(_mitarbeiterVertretungWocheninfo)) - { - _mitarbeiterVertretungWocheninfo = ""; - foreach (var item in wochentag.Value) - { - if (item.Key != null) - { - if (!item.Value.Vertretung.Equals("")) - { - List abf = new List(); - - - abf.Add(item.Value.Vertreteroid); - - - var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); - 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"); - - } - else - { - MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); - } - - } - } - - } - - } - - 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) - { - var a = (SchulbegleitenderDienst) GridDataControlTagesansicht.SelectedItem; - - VertretungDC vert = new VertretungDC(); - - if (a.VertretungsDC != null) - { - vert = a.VertretungsDC; - ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value)); - } - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - } - - private void DeletVertretungForWochenanzeige_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) - { - var a = (Wochenansichten)GridDataControlKlientenWochenansicht.SelectedItem; - - foreach (var wochentag in a.VertretungsWoche) - { - if (wochentag.Key.Equals(_deletVertretungsWeek)) - { - _deletVertretungsWeek = ""; - - foreach (var item in wochentag.Value) - { - if (item.Key != null) - { - if (!item.Value.Vertretung.Equals("")) - { - ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(item.Value.VertretungsDC.VertretungOid.Value)); - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - } - } - } - } - } - } - - private void DeleteKrankmeldung_OnClick(object sender, RoutedEventArgs e) - { - if (MessageBox.Show("Möchten Sie die Abwesenheit wirklich löschen?", "Abwesenheit löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - Dictionary ahh = new Dictionary(); - ahh.Add(a.AbsenceTimeDC.AbsenceTimeOid.Value,a.AbsenceTimeDC.AbsenceTimeVersion.Value); - - ServiceFacade.DoOperationsServiceSync(s => s.DeactivateAbsenceTime(ahh)); - - VertretungDC vert = new VertretungDC(); - - if (a.VertretungsDC != null) - { - vert = a.VertretungsDC; - ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value)); - } - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - } - - private void KrankmeldungsZeitraumBearbeitungsView(object sender, RoutedEventArgs e) - { - var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - if (_krankView == null) - { - _krankView = new KrankheitsZeitraumView(a.StartD,a.EndD); - - _krankView.RaiseCustomEvent += new EventHandler(newWindowKrankzeitraum_RaiseCustomEvent); - _krankView.ShowDialog(); - } - else - { - _krankView.Close(); - _krankView = new KrankheitsZeitraumView(a.StartD, a.EndD); - - _krankView.RaiseCustomEvent += new EventHandler(newWindowKrankzeitraum_RaiseCustomEvent); - _krankView.ShowDialog(); - } - } - - private void newWindowKrankzeitraum_RaiseCustomEvent(object sender, KrankheitsEventArgs e) - { - UpdateKrankheitsZeitraum(e.Start,e.Ende); - } - - private void UpdateKrankheitsZeitraum(DateTime startZeit,DateTime endZeit) - { - _krankView.Close(); - - var ab = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - - ab.AbsenceTimeDC.Start = startZeit; - ab.AbsenceTimeDC.End = endZeit; - - List a = new List(); - - a.Add(ab.AbsenceTimeDC); - - ServiceFacade.DoCustomerServiceSync(s => s.UpdateAbsenceTimes(a)); - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - - //den gegebenheiten Anpassen - private void GridViewBase_OnRowUpdated(object sender, RowEventArgs e) - { - var a = (SchulbegleitenderDienst) GridDataControlTagesansicht.SelectedItem; - - AbsenceTimeDC abstime = new AbsenceTimeDC() - { - AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, - Start = a.StartD, - End = a.EndD, - Reason = a.AbwesenheitsKategorie, - KrankheitsMeldung = a.KrankheitsMeldung - }; - - VertretungDC vert = new VertretungDC() - { - CustomerOid = a.Klientoid, - EmployeeOid = a.Mitarbeiteroid, - - AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, - VertretenderMitarbeiterOid = a.Vertreteroid, - Notice = a.Beschreibung - }; - - //?? villeicht nur Vertretungszeitraum wenn Mitarbeiter ist geadded - //if (a.Vertreteroid != 0) - //{ - vert.VertretungsZeitraumVon = a.StartD; - vert.VertretungsZeitraumBis = a.EndD; - //} - - - if (a.VertretungsDC != null) - { - vert.VertretungOid = a.VertretungsDC.VertretungOid; - - ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretungAndAbsenceTime(vert,abstime)); - } - else - { - // Abfrage muss genauer bestimmt werden oder komplett wegfallen - //if (a.Vertreteroid != 0) - //{ - ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); - //} - - ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime)); - //} - //else - //{ - // ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime)); - //} - } - - GetAllVertretungenOnLoad(Datepicker.DateTime.Date); - } - - private void ButtonWorkWeekView_Click(object sender, RoutedEventArgs e) - { - //if (GridDataControlKlientenWochenansicht.Visibility != Visibility.Visible && - // GridDataControlMitarbeiterWochenansicht.Visibility != Visibility.Visible) - //{ - // KwWochenAnzeigen(); - //} - - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - GridDataControlTagesansicht.Visibility = Visibility.Collapsed; - GridDataControlKlientenWochenansicht.Visibility = Visibility.Visible; - GridDataControlKlientenWochenansicht2.Visibility=Visibility.Visible; - - KwWochenAnzeigen(); - } - else - if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - GridDataControlKlientenWochenansicht.Visibility = Visibility.Collapsed; - GridDataControlKlientenWochenansicht2.Visibility= Visibility.Collapsed; - GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Visible; - - KwWochenAnzeigen(); - - }else - if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) - { - GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Collapsed; - GridDataControlKlientenWochenansicht.Visibility = Visibility.Visible; - GridDataControlKlientenWochenansicht2.Visibility = Visibility.Visible; - - - KwWochenAnzeigen(); - } - } - - private void KwWochenAnzeigen() - { - DateTime dt = Datepicker.DateTime; - - RenameColumnHeader(dt); - - DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); - DateTime enddt = startdt.AddDays(5); - - if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - GetAllVertrungenFromWeekRange(startdt,enddt); - } - else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) - { - GetAllVertretungsFreieMitarbeiter(startdt, enddt); - } - - - Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); - } - - private void ButtonDayView_Click(object sender, RoutedEventArgs e) - { - if (GridDataControlTagesansicht.Visibility != Visibility.Visible) - { - GridDataControlTagesansicht.Visibility = Visibility.Visible; - GridDataControlKlientenWochenansicht.Visibility = Visibility.Collapsed; - GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Collapsed; - GridDataControlKlientenWochenansicht2.Visibility = Visibility.Collapsed; - - - TagesAnzeige(); - } - - - } - - private void TagesAnzeige() - { - DateTime dt = Datepicker.DateTime; - Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); - - GetAllVertretungenOnLoad(dt); - } - - private void Aktualisieren_OnClick(object sender, RoutedEventArgs e) - { - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - GetAllVertretungenOnLoad(Datepicker.DateTime); - } - else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) - { - var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); - - GetAllVertrungenFromWeekRange(x,x.AddDays(5)); - } - else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) - { - var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); - GetAllVertretungsFreieMitarbeiter(x, x.AddDays(5)); - } - } - - private void PfeilLinksDatumRunter_OnClick(object sender, RoutedEventArgs e) - { - PfeilControll(-1); - } - - private void PfeilRechtsDatumHoch_OnClick(object sender, RoutedEventArgs e) - { - PfeilControll(1); - } - - private void PfeilControll(int i) - { - var dt = Datepicker.DateTime; - - if (GridDataControlTagesansicht.Visibility == Visibility.Visible) - { - var a = dt.Date.AddDays(i); - - Datepicker.DateTime = a; - } - else - { - var x = dt.Date.AddDays(i * 7); - - RenameColumnHeader(x); - - Datepicker.DateTime = x; - } - } - - private void RenameColumnHeader(DateTime dt) - { - DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); - - DateTime montagDt = startdt.Date; - DateTime dienstagDt = startdt.Date.AddDays(1); - DateTime mittwochDt = startdt.Date.AddDays(2); - DateTime donnerstagDt = startdt.Date.AddDays(3); - DateTime freitagDt = startdt.Date.AddDays(4); - DateTime samstagDt = startdt.Date.AddDays(5); - - - //add hier die header names das datum hinzu - foreach (var col in GridDataControlKlientenWochenansicht.Columns) - { - if (col.FieldName.Equals("Mo")) - { - col.Header = "Mo" + " " + montagDt.Date.Day + "." + montagDt.Date.Month; - } - - if (col.FieldName.Equals("Di")) - { - col.Header = "Di" + " " + dienstagDt.Date.Day + "." + dienstagDt.Date.Month; - } - - if (col.FieldName.Equals("Mi")) - { - col.Header = "Mi" + " " + mittwochDt.Date.Day + "." + mittwochDt.Date.Month; - } - - if (col.FieldName.Equals("Do")) - { - col.Header = "Do" + " " + donnerstagDt.Date.Day + "." + donnerstagDt.Date.Month; - } - - if (col.FieldName.Equals("Fr")) - { - col.Header = "Fr" + " " + freitagDt.Date.Day + "." + freitagDt.Date.Month; - } - - if (col.FieldName.Equals("Sa")) - { - col.Header = "Sa" + " " + samstagDt.Date.Day + "." + samstagDt.Date.Month; - } - } - - } - - - } - -#region Connectoren - - //Binding Connectoren - - public class SchulbegleitenderDienst //---> muss Verbessert werden - { - public VertretungDC VertretungsDC { get; set; } // ---> Sicherheitsrisiko ?? - - //---------------------------------------------------------------- - public AbsenceTimeDC AbsenceTimeDC { get; set; } // --> muss das sein ? - - - public DateTime StartD { get; set; } - public DateTime EndD { get; set; } - - public Dictionary Wochentagsarbeitszeit { get; set; } - - // KAnnn das nicht weg - public long Mitarbeiteroid { get; set; } - public long Klientoid { get; set; } - public long Vertreteroid { get; set; } // --> Nein muss nicht. - //---------------------------------------------------------------- - - - public string Vertretung { get; set; } - public string Kunde { get; set; } - public string KrankerMitarbeiter { 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 VertretungsZeitraum { 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; } - - public int IsMitarbeiter { get; set; } - - //Villeicht mal schauen mal sehen - public string AbwesenheitsKategorieToString - { - get { return AbwesenheitsKategorie.Description; } - } - - public string Arbeitszeit { get; set; } - - public bool IsMitarbeiterKrank { get; set; } - - public bool IsCustomerKrank { get; set; } - - public string WochenansichtBemerkung { get; set; } - } - - public class Wochenansichten - { - //public long? VertretungsOid { get; set; } - public string MaFrei { get; set; } - public string MaKrank { get; set; } - public string Kind { get; set; } - - //Fürs WPF Klient Wochenanzeige - public string VertretungMo { get; set; } - public string VertretungDi { get; set; } - public string VertretungMi { get; set; } - public string VertretungDo { get; set; } - public string VertretungFr { get; set; } - public string VertretungSa { get; set; } - - public string Mo { get; set; } - public string Di { get; set; } - public string Mi { get; set; } - public string Do { get; set; } - public string Fr { get; set; } - public string Sa { get; set; } - public string So { get; set; } - - - //Fürs WPF Employee Wochenanzeige - public string EingesetztBeiMo { get; set; } - public string EingesetztBeiDi { get; set; } - public string EingesetztBeiMi { get; set; } - public string EingesetztBeiDo { get; set; } - public string EingesetztBeiFr { get; set; } - public string EingesetztBeiSa { get; set; } - - //KlientenView - public Dictionary> VertretungsWoche { get; set; } - - //MitarbeiterView - public Dictionary> KlientvertretungsWoche { get; set; } - - public bool IsMitarbeiterKrank { get; set; } - - public bool isCustomerKrank { get; set; } - - public string Bemerkung { get; set; } - - public string WochenBeschreibung { get; set; } - - - } - - //weg damit ?? - public class MitarbeiterWochenansicht - { - public string Employee { get; set; } - - public CompactEmployeeDC EmployeeDc { get; set; } - - //Fürs WPF Employee Wochenanzeige - public string EingesetztBeiMo { get; set; } - public string EingesetztBeiDi { get; set; } - public string EingesetztBeiMi { get; set; } - public string EingesetztBeiDo { get; set; } - public string EingesetztBeiFr { get; set; } - public string EingesetztBeiSa { get; set; } - - public string Mo { get; set; } - public string Di { get; set; } - public string Mi { get; set; } - public string Do { get; set; } - public string Fr { get; set; } - public string Sa { get; set; } - public string So { get; set; } - } - - //public class WieAbschlagszahlung - //{ - // public virtual string Klient { get; set; } - // public virtual string AngelegtAm { get; set; } - // public virtual string Buchubngsdatum { get; set; } - // public virtual string Gueltigkeitsdatum { get; set; } - // public virtual string Betrag { get; set; } - // public virtual string Kommentar { get; set; } - // public virtual string isUnterschrift { get; set; } - - // public virtual CompactCustomerDC KlientDC { get; set; } - - // public WieAbschlagszahlung(string klient, string angelegt, string buchung, string gueltigkeit, string betrag, string kommentar, string unterschrift, CompactCustomerDC klientdc) - // { - // Klient = klient; - // AngelegtAm = angelegt; - // Buchubngsdatum = buchung; - // Gueltigkeitsdatum = gueltigkeit; - // Betrag = betrag; - // Kommentar = kommentar; - // isUnterschrift = unterschrift; - // KlientDC = klientdc; - // } - //} - - #endregion -} diff --git a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs index ceb70de53..5980338a0 100644 --- a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs @@ -16,6 +16,11 @@ namespace BeWo.SchulbegleitenderDienst { public partial class SchulbegleitenderDienstBearbeitungsView { + #region Variablen + + + + public event EventHandler RaiseCustomEvent; private DateTime? _startDate; @@ -38,8 +43,14 @@ namespace BeWo.SchulbegleitenderDienst Dictionary letzteVertretungsListBox = new Dictionary(); + private TagesAnsicht tagesAnsicht; - public SchulbegleitenderDienstBearbeitungsView(int y, DateTime? startdate, DateTime? enddate, DateTime currentDate, long? klientOid) + private WochenAnsicht wochenAnsicht; + + private string wochentag; + #endregion + + public SchulbegleitenderDienstBearbeitungsView(int y, DateTime? startdate, DateTime? enddate, DateTime currentDate, long? klientOid,TagesAnsicht tsa,WochenAnsicht wsa,string tag) { InitializeComponent(); @@ -102,7 +113,12 @@ namespace BeWo.SchulbegleitenderDienst //setze itemsource von allen Letzten Vertretern SetzeLetzteVertreter(); - + + tagesAnsicht = tsa; + + wochenAnsicht = wsa; + wochentag = tag; + } private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) @@ -248,7 +264,7 @@ namespace BeWo.SchulbegleitenderDienst { if (_startDate.HasValue && _endDate.HasValue && KVCheckBox.IsChecked.Value) { - RaiseCustomEvent(this, new CustomEventArgs(x, _startDate, _endDate)); + RaiseCustomEvent(this, new CustomEventArgs(x, _startDate, _endDate,tagesAnsicht,wochenAnsicht,wochentag)); Close(); } @@ -282,7 +298,7 @@ namespace BeWo.SchulbegleitenderDienst DateTime? xBis = new DateTime(_endDate.Value.Year, _endDate.Value.Month, _endDate.Value.Day, dateBis.Hour, dateBis.Minute, dateBis.Second); - RaiseCustomEvent(this, new CustomEventArgs(x, xVon, xBis)); + RaiseCustomEvent(this, new CustomEventArgs(x, xVon, xBis,tagesAnsicht,wochenAnsicht,wochentag)); Close(); } @@ -972,12 +988,18 @@ namespace BeWo.SchulbegleitenderDienst private CompactEmployeeDC dc; private DateTime? startdt; private DateTime? enddt; + private TagesAnsicht tagesItem; + private WochenAnsicht wochenItem; + private string wochentag; - public CustomEventArgs(CompactEmployeeDC s, DateTime? start, DateTime? ende) + public CustomEventArgs(CompactEmployeeDC s, DateTime? start, DateTime? ende,TagesAnsicht item,WochenAnsicht wItem,string wtag) { dc = s; startdt = start; enddt = ende; + tagesItem = item; + wochenItem = wItem; + wochentag = wtag; } public CompactEmployeeDC Message @@ -995,6 +1017,21 @@ namespace BeWo.SchulbegleitenderDienst get { return enddt; } } + public TagesAnsicht TagesItem + { + get { return tagesItem; } + } + + public WochenAnsicht WochenItem + { + get { return wochenItem; } + } + + public string WochenTag + { + get { return wochentag; } + } + } public class SearchViewDaten diff --git a/BeWo/View/SchulbegleitenderDienst.xaml b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstView.xaml similarity index 98% rename from BeWo/View/SchulbegleitenderDienst.xaml rename to BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstView.xaml index b58f1a53c..4dc8757fb 100644 --- a/BeWo/View/SchulbegleitenderDienst.xaml +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstView.xaml @@ -1,4 +1,4 @@ - verfuegbarerAusschlussToken = new Dictionary(); - public SchulbegleitenderDienst(TableID pObjectTid, long? oid,SchulbegleitenderZugehoerigkeitsTyp typ) + public SchulbegleitenderDienstView(TableID pObjectTid, long? oid,SchulbegleitenderZugehoerigkeitsTyp typ) { InitializeComponent(); diff --git a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml b/BeWo/SchulbegleitenderDienst/SchulbegleitenderVertretungsDienstMainView.xaml similarity index 99% rename from BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml rename to BeWo/SchulbegleitenderDienst/SchulbegleitenderVertretungsDienstMainView.xaml index a6bd4b8ab..e32c313cf 100644 --- a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderVertretungsDienstMainView.xaml @@ -1,4 +1,4 @@ - _items = new List(); + + private readonly List _itemsWochen = new List(); + + //neu Ist immer Besser + private readonly List _itemsWochenKrankerMitarbeiter = new List(); + + private SchulbegleitenderDienstBearbeitungsView _view = null; + + private SchulbegleitenderDienstMitarbeiterBearbeitungsView _viewMitarbeiter = null; + + private KrankheitsZeitraumView _krankView = null; + + private string _mitarbeiterVertretungWocheninfo = ""; + + private string _deletVertretungsWeek = ""; + + private List _mitarbeiterwochen = new List(); + + private TagesVertretung _tagesVertretung = new TagesVertretung(); + + private WochenVertretung _wochenVertretung = new WochenVertretung(); + + #endregion + + #region Konstruktor + public SchulbegleitenderVertretungsDienstMainView() + { + InitializeComponent(); + + GridDataControlTagesansicht.ItemsSource = _items; + + GridDataControlKlientenWochenansicht.ItemsSource = _itemsWochen; + + //Only Klienten Krank ? + GridDataControlKlientenWochenansicht2.ItemsSource = _itemsWochenKrankerMitarbeiter; + + + GridDataControlMitarbeiterWochenansicht.ItemsSource = _mitarbeiterwochen; + + SetAktuellesDate(); + SetAbwesenheiten(); + + MVCheckBox.IsChecked = true; + KVCheckBox.IsChecked = true; + + } + #endregion + + #region Lade TagesAnsicht // Bereits ausgesiedelt + //Lade Tagesansichts gedöns + private void LadeTagesAnsichtNach(DateTime AusgewaehltesDatum) + { + _items.Clear(); + ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListe(AusgewaehltesDatum),r => + { + foreach (var item in r) + { + AddItemsToGrid(item); + } + + #region Dispatcher Refresh Grid + this.Dispatch(delegate + { + GridDataControlTagesansicht.RefreshData(); + GridDataControlTagesansicht.RefreshUI(); + }); + #endregion + }); + } + + private void AddItemsToGrid(VertretungsListeItemsDC item) + { + var list = _tagesVertretung.VerarbeiteItemZuTagesAnsicht(item); + + foreach (var it in list) + { + _items.Add(it); + } + } + + #endregion + + #region Lade WochenAnsicht // Bereits ausgesiedelt + + private void LadeWochenAnsichtNach(DateTime startDatum, DateTime endDatum ) + { + _items.Clear(); + ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListeWoechentlich(startDatum,endDatum), r => + { + foreach (var item in r) + { + AddItemsToGrid(item); + } + + this.Dispatch(delegate + { + GetWochenDienstFromItems(startDatum); + }); + }); + } + + private void GetWochenDienstFromItems(DateTime time) + { + _itemsWochen.Clear(); + _itemsWochenKrankerMitarbeiter.Clear(); + + var dic = _wochenVertretung.GetWochenAnsichtFromItems(time, _items); + + foreach (var item in dic["_itemsWochen"]) + { + _itemsWochen.Add(item); + } + + foreach (var item in dic["_itemsWochenKrankerMitarbeiter"]) + { + _itemsWochenKrankerMitarbeiter.Add(item); + } + + GridDataControlKlientenWochenansicht.RefreshData(); + GridDataControlKlientenWochenansicht.RefreshUI(); + + //für Klient + GridDataControlKlientenWochenansicht2.RefreshData(); + GridDataControlKlientenWochenansicht2.RefreshUI(); + } + + #endregion + + //################ Rausnehmen + #region Mitarbeiter Wochenansicht Verarbeitung | Rausnehmen ??? + + private void GetAllVertretungsFreieMitarbeiter(DateTime startDatum, DateTime endDatum) + { + ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsMitarbeiterListeWoechentlich(startDatum, endDatum), r => + { + _mitarbeiterwochen.Clear(); + + foreach (var item in r) + { + AddMitarbeiterItemsToGrid(item, startDatum); + } + + #region Dispatcher Refresh Grid + this.Dispatch(delegate + { + GridDataControlMitarbeiterWochenansicht.RefreshData(); + GridDataControlMitarbeiterWochenansicht.RefreshUI(); + }); + #endregion + }); + } + + private void AddMitarbeiterItemsToGrid(VertretungsListeMitarbeiterItemsDC item, DateTime time) + { + + var compactEmployee = ServiceFacade.DoEmployeeServiceSync(r => r.GetActiveCompactEmployeeWithOid(item.EmployeeOid.Value)); + + MitarbeiterWochenansicht x = new MitarbeiterWochenansicht() + { + Employee = item.Employee, + EmployeeDc = compactEmployee + }; + + + DateTime dt = time; + + DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); + + DateTime anfangDt; + DateTime endeDt; + + if (item.AbsenceStartDate != null && item.AbsenceEndDate != null) + { + anfangDt = item.AbsenceStartDate.Value; + endeDt = item.AbsenceEndDate.Value; + + DateTime montagDt = startdt.Date; + DateTime dienstagDt = startdt.Date.AddDays(1); + DateTime mittwochDt = startdt.Date.AddDays(2); + DateTime donnerstagDt = startdt.Date.AddDays(3); + DateTime freitagDt = startdt.Date.AddDays(4); + DateTime samstagDt = startdt.Date.AddDays(5); + + //Bereich für Eingesetzt bei übernehmen von unterem code + // + + // Montag | 0 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, montagDt,item ,x,"EingesetztBeiMo", 0); + // Dienstag | 1 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, dienstagDt, item, x, "EingesetztBeiDi", 1); + // Mittwoch | 2 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, mittwochDt, item, x, "EingesetztBeiMi", 2); + //Donnerstag | 3 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, donnerstagDt, item, x, "EingesetztBeiDo", 3); + //Freitag | 4 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, freitagDt, item, x, "EingesetztBeiFr", 4); + // Samstag | 5 + x = WochentageMitarbeiterVerarbeitung(anfangDt, endeDt, samstagDt, item, x, "EingesetztBeiSa", 5); + + } + + _mitarbeiterwochen.Add(x); + } + + public MitarbeiterWochenansicht WochentageMitarbeiterVerarbeitung(DateTime startDt, DateTime endDt, DateTime wochenTag, VertretungsListeMitarbeiterItemsDC item, MitarbeiterWochenansicht wwk, string eingesetztBei, int wochenTagZahl) + { + // mach colles zeug + if (startDt.Date <= wochenTag && wochenTag <= endDt.Date) + { + if (item != null && item.Customer != null) + { + + //------------------------------------------------------------------------------------------ + if (item.AbsenceStartDate <= wochenTag && + item.AbsenceEndDate >= wochenTag) + { + switch (wochenTagZahl) + { + case 0: + wwk.EingesetztBeiMo = item.Customer.FullName; + break; + case 1: + wwk.EingesetztBeiDi = item.Customer.FullName; + //wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 2: + wwk.EingesetztBeiMi = item.Customer.FullName; + //wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 3: + wwk.EingesetztBeiDo = item.Customer.FullName; + //wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 4: + wwk.EingesetztBeiFr = item.Customer.FullName; + //wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 5: + wwk.EingesetztBeiSa = item.Customer.FullName; + //wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + } + } + else + { + switch (wochenTagZahl) + { + case 0: + wwk.EingesetztBeiMo = ""; + break; + case 1: + wwk.EingesetztBeiDi = ""; + break; + case 2: + wwk.EingesetztBeiMi = ""; + break; + case 3: + wwk.EingesetztBeiDo = ""; + break; + case 4: + wwk.EingesetztBeiFr = ""; + break; + case 5: + wwk.EingesetztBeiSa = ""; + break; + } + } + + //-------------------------------------------------------------------------------------------------------- + } + } + else + { + switch (wochenTagZahl) + { + case 0: + wwk.EingesetztBeiMo = " "; + break; + case 1: + wwk.EingesetztBeiDi = " "; + break; + case 2: + wwk.EingesetztBeiMi = " "; + break; + case 3: + wwk.EingesetztBeiDo = " "; + break; + case 4: + wwk.EingesetztBeiFr = " "; + break; + case 5: + wwk.EingesetztBeiSa = " "; + break; + } + } + + return wwk; + } + + #endregion + + #region Mitarbeiter Wochen Vertretung verarbeitung | wird nicht gebraucht wegnehmen bei ok + + private void AddKlientToMitarbeiter_OnClick(object sender, RoutedEventArgs e) + { + var mitarbeiterView = (MitarbeiterWochenansicht)GridDataControlMitarbeiterWochenansicht.SelectedItem; + + CompactEmployeeDC employee = mitarbeiterView.EmployeeDc; + + if (_viewMitarbeiter == null) + { + _viewMitarbeiter = new SchulbegleitenderDienstMitarbeiterBearbeitungsView(DateTime.Now, DateTime.Now, DateTime.Now, employee.EmployeeOid); + + _viewMitarbeiter.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomMitarbeiterEvent); + _viewMitarbeiter.ShowDialog(); + } + else + { + _viewMitarbeiter.Close(); + _viewMitarbeiter = new SchulbegleitenderDienstMitarbeiterBearbeitungsView(DateTime.Now, DateTime.Now, DateTime.Now, employee.EmployeeOid); + + _viewMitarbeiter.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomMitarbeiterEvent); + _viewMitarbeiter.ShowDialog(); + } + } + + private void newWindow_RaiseCustomMitarbeiterEvent(object sender, CustomKlientEventArgs e) + { + UpdateKlientToVertretendenMitarbeiter(e.Message, e.StartDate, e.EndDate); + + _viewMitarbeiter.Close(); + } + + //Anpassen Weil nicht funktionsfähig + private void UpdateKlientToVertretendenMitarbeiter(CompactCustomerDC customer, DateTime? start, DateTime? ende) + { + var a = (MitarbeiterWochenansicht)GridDataControlMitarbeiterWochenansicht.SelectedItem; + + var tag = GridDataControlMitarbeiterWochenansicht.CurrentColumn.FieldName; + + //bereich das heute fertig gestellt wird + + //VertretungDC vert = new VertretungDC() + //{ + // CustomerOid = customer.CustomerOid, + // EmployeeOid = a.mitarbeiteroid, // ?? das muss wahrscheinlich vom kustomer ermittelt werden + // VertretungsZeitraumVon = start.Value, + // VertretungsZeitraumBis = ende.Value, + // AbsenceTimeOid = a.absenceTimeDC.AbsenceTimeOid, // hmm wie wird das gehandelt ?? + // VertretenderMitarbeiterOid = a.EmployeeDc.EmployeeOid // Oid Vom Mitarbeiter + //}; + + //abfrage wegen update oder create | dazu die Verfügbare Vertretung bei Mitarbeiter wochenansicht bearbeiten + //if () + //{ + // ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); + //} + //else + //{ + // ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + //} + + + //Schabernack das keiner braucht + //foreach (var woche in a.KlientvertretungsWoche) + //{ + //if (woche.Key.Equals(tag)) + //{ + // foreach (var item in woche.Value) + // { + //VertretungDC vert = new VertretungDC(); + //if (item.Value.VertretungsDC != null) + //{ + // vert = item.Value.VertretungsDC; + // vert.EmployeeOid = item.Value.Mitarbeiteroid; + // vert.AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value; + // vert.Notice = item.Value.Beschreibung; + + // vert.VertretungsZeitraumVon = item.Key; + // vert.VertretungsZeitraumBis = item.Key; + + // vert.CustomerOid = customer.CustomerOid; + + + // ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + //} + //else + //{ + // vert.EmployeeOid = item.Value.Mitarbeiteroid; + // vert.AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value; + // vert.Notice = item.Value.Beschreibung; + + // vert.VertretungsZeitraumVon = item.Key; + // vert.VertretungsZeitraumBis = item.Key; + + // vert.CustomerOid = customer.CustomerOid; + + // ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); + //} + //} + //} + } + + #endregion + //################# Ende rausnehmen + + #region Mitarbeiter Vertretungs Datum von - bis // bleibt so + + private void MVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + if (dt >= MVDatepickerBis.DateTime) + { + MVDatepickerBis.DateTime = dt; + } + } + + private void MVDatepickerBis_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + + if(dt <= MVDatepickerVon.DateTime) { + MVDatepickerVon.DateTime = dt; + } + } + + #endregion + + #region Klienten Vertretungs Datum von - bis //bleibt so + + 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 + + #region Mitarbeiter Vertretung // bleibt so + + private CompactEmployeeDC currentEmployee; + + private void MitarbeiterVertretungsToggleButton_OnChecked(object sender, RoutedEventArgs e) + { + MVDatepicker_UhrzeitVon.Text = ""; + MVDatepicker_UhrzeitBis.Text = ""; + + MVDatepicker_UhrzeitVon.Visibility = Visibility.Collapsed; + MVDatepicker_UhrzeitBis.Visibility = Visibility.Collapsed; + + MVLabelUhrzeitVon.Visibility = Visibility.Collapsed; + MVLabelUhrzeitBis.Visibility = Visibility.Collapsed; + } + + private void MitarbeiterVertretungsToggleButton_OnUnchecked(object sender, RoutedEventArgs e) + { + MVDatepicker_UhrzeitVon.Visibility = Visibility.Visible; + MVDatepicker_UhrzeitBis.Visibility = Visibility.Visible; + MVLabelUhrzeitVon.Visibility = Visibility.Visible; + MVLabelUhrzeitBis.Visibility = Visibility.Visible; + } + + private void MitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) + { + popup_newMitarbeiterVertretung.IsOpen = true; + } + + private void Button_cancelMitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) + { + 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; + + currentEmployee = e.Data; + popupedit_MitarbeiterVertretungSearch.Text = currentEmployee.FirstName + " " + currentEmployee.LastName; + + 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("") && ComboBoxMitarbeiterVertretung.SelectedValue != null ) + { + + if (MVCheckBox.IsChecked.Value ) + { + xsf = true; + } + else + { + if (!MVDatepicker_UhrzeitVon.Text.Equals("") && !MVDatepicker_UhrzeitBis.Text.Equals("")) + { + string uVon=""; + string uBis=""; + + if (MVDatepicker_UhrzeitVon.Text.Length < 5) + { + uVon = "0" + MVDatepicker_UhrzeitVon.Text; + } + else + { + uVon = MVDatepicker_UhrzeitVon.Text; + } + + if (MVDatepicker_UhrzeitBis.Text.Length < 5) + { + uBis = "0" + MVDatepicker_UhrzeitBis.Text; + } + else + { + uBis = MVDatepicker_UhrzeitBis.Text; + } + + var von = DateTime.ParseExact(uVon, "HH:mm", CultureInfo.CurrentCulture); + + var bis = DateTime.ParseExact(uBis, "HH:mm", CultureInfo.CurrentCulture); + + + if (von <= bis) + { + xsf = true; + } + else + { + MessageBox.Show("Die Startzeit muss kleiner als die Endzeit sein."); + } + + } + else + { + MessageBox.Show("Bitte geben sie eine Start und eine Endzeit ein."); + } + } + } + else + { + MessageBox.Show("Bitte wählen sie zuerst einen Mitarbeiter und eine Abwesenheitskategorie aus."); + } + + + if (xsf) + { + popup_newMitarbeiterVertretung.IsOpen = false; + + SaveEmployeeInVertretung(); + + ClearAllMitarbeiterValues(); + + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + LadeWochenAnsichtNach(x, x.AddDays(5)); + } + } + } + + private void ClearAllMitarbeiterValues() + { + MVDatepickerVon.DateTime = DateTime.Now; + MVDatepickerBis.DateTime = DateTime.Now; + popupedit_MitarbeiterVertretungSearch.Text = ""; + + ComboBoxMitarbeiterVertretung.SelectedIndex = -1; + MitarbeiterNotice.Text = ""; + + MVDatepicker_UhrzeitVon.Text = ""; + MVDatepicker_UhrzeitBis.Text = ""; + } + + private void SaveEmployeeInVertretung() + { + AbsenceTimeDC at = new AbsenceTimeDC(); + + if(MVCheckBox.IsChecked.Value){ + at.Start = MVDatepickerVon.DateTime.Date; + at.End = MVDatepickerBis.DateTime.Date; + } + else + { + string xvon = ""; + string yvon = ""; + + if (MVDatepicker_UhrzeitVon.Text.Length < 5){ + xvon = "0" + MVDatepicker_UhrzeitVon.Text; + } + else + { + xvon = MVDatepicker_UhrzeitVon.Text; + } + + if (MVDatepicker_UhrzeitBis.Text.Length < 5) + { + yvon = "0" + MVDatepicker_UhrzeitBis.Text; + } + else + { + yvon = MVDatepicker_UhrzeitBis.Text; + } + + DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); + + DateTime dateTimeEnd = DateTime.ParseExact(yvon, "HH:mm", CultureInfo.CurrentCulture); + + var start = new DateTime(MVDatepickerVon.DateTime.Date.Year, MVDatepickerVon.DateTime.Date.Month, MVDatepickerVon.DateTime.Date.Day, dateTimeStart.Hour, dateTimeStart.Minute, dateTimeStart.Second); + + var ende = new DateTime(MVDatepickerBis.DateTime.Date.Year, MVDatepickerBis.DateTime.Date.Month, MVDatepickerBis.DateTime.Date.Day, dateTimeEnd.Hour, dateTimeEnd.Minute, dateTimeEnd.Second); + + at.Start = start; + at.End = ende; + + } + + + at.Reason = ComboBoxMitarbeiterVertretung.SelectedValue as AbsenceReasonDC; + at.Notice = MitarbeiterNotice.Text; + at.KrankheitsMeldung = KrankMeldungMitarbeiterDatepicker.DateTime.Date; + + ServiceFacade.DoOperationsServiceSync(s => s.InsertNewEmployeeAbsenceTime(currentEmployee.EmployeeOid, at)); + } + #endregion + + #region Klient Vertretung //bleibt so + + private CompactCustomerDC currentKlient; + + private void KlientVertretungsToggleButton_OnChecked(object sender, RoutedEventArgs e) + { + KVDatepicker_UhrzeitVon.Text = ""; + KVDatepicker_UhrzeitBis.Text = ""; + + KVDatepicker_UhrzeitVon.Visibility = Visibility.Collapsed; + KVDatepicker_UhrzeitBis.Visibility = Visibility.Collapsed; + + KVLabelUhrzeitVon.Visibility = Visibility.Collapsed; + KVLabelUhrzeitBis.Visibility = Visibility.Collapsed; + } + + private void KlientVertretungsToggleButton_OnUnchecked(object sender, RoutedEventArgs e) + { + KVDatepicker_UhrzeitVon.Visibility = Visibility.Visible; + KVDatepicker_UhrzeitBis.Visibility = Visibility.Visible; + KVLabelUhrzeitVon.Visibility = Visibility.Visible; + KVLabelUhrzeitBis.Visibility = Visibility.Visible; + } + + 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(); + } + + private void Popupedit_KlientVertretungSearch_OnPopUpClick(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; + + 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("") && ComboBoxKlientVertretung.SelectedValue != null) + { + if (KVCheckBox.IsChecked.Value) + { + xsf = true; + } + else + { + if (!KVDatepicker_UhrzeitVon.Text.Equals("") && !KVDatepicker_UhrzeitBis.Text.Equals("")) + { + string uVon=""; + string uBis=""; + + if (KVDatepicker_UhrzeitVon.Text.Length < 5) + { + uVon = "0" + KVDatepicker_UhrzeitVon.Text; + } + else + { + uVon = KVDatepicker_UhrzeitVon.Text; + } + + if (KVDatepicker_UhrzeitBis.Text.Length < 5) + { + uBis = "0" + KVDatepicker_UhrzeitBis.Text; + } + else + { + uBis = KVDatepicker_UhrzeitBis.Text; + } + + var von = DateTime.ParseExact(uVon, "HH:mm", CultureInfo.CurrentCulture); + + var bis = DateTime.ParseExact(uBis, "HH:mm", CultureInfo.CurrentCulture); + + + if (von <= bis) + { + xsf = true; + } + else + { + MessageBox.Show("Die Startzeit muss kleiner als die Endzeit sein."); + } + } + else + { + MessageBox.Show("Bitte geben sie eine Start und eine Endzeit ein."); + } + } + } + else + { + MessageBox.Show("Bitte wählen Sie eine/n Klient/in und eine Abwesenheitskategorie aus."); + } + + + if(xsf){ + popup_newKlientVertretung.IsOpen = false; + + SaveKlientInVertretung(); + + ClearAllKlientValues(); + + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + LadeWochenAnsichtNach(x, x.AddDays(5)); + } + } + } + + private void ClearAllKlientValues() + { + KVDatepickerVon.DateTime = DateTime.Now; + KVDatepickerBis.DateTime = DateTime.Now; + popupedit_KlientVertretungSearch.Text = ""; + + ComboBoxKlientVertretung.SelectedIndex = -1; + KlientNotice.Text = ""; + + KVDatepicker_UhrzeitVon.Text = ""; + KVDatepicker_UhrzeitBis.Text = ""; + } + + private void SaveKlientInVertretung() + { + AbsenceTimeDC at = new AbsenceTimeDC(); + + if (KVCheckBox.IsChecked.Value) + { + at.Start = KVDatepickerVon.DateTime.Date; + at.End = KVDatepickerBis.DateTime.Date; + } + else + { + string xvon = ""; + string yvon = ""; + + if (KVDatepicker_UhrzeitVon.Text.Length < 5) + { + xvon = "0" + KVDatepicker_UhrzeitVon.Text; + } + else + { + xvon = KVDatepicker_UhrzeitVon.Text; + } + + if (KVDatepicker_UhrzeitBis.Text.Length < 5) + { + yvon = "0" + KVDatepicker_UhrzeitBis.Text; + } + else + { + yvon = KVDatepicker_UhrzeitBis.Text; + } + + DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); + + DateTime dateTimeEnd = DateTime.ParseExact(yvon, "HH:mm", CultureInfo.CurrentCulture); + + var start = new DateTime(KVDatepickerVon.DateTime.Date.Year, KVDatepickerVon.DateTime.Date.Month, KVDatepickerVon.DateTime.Date.Day, dateTimeStart.Hour, dateTimeStart.Minute, dateTimeStart.Second); + + var ende = new DateTime(KVDatepickerBis.DateTime.Date.Year, KVDatepickerBis.DateTime.Date.Month, KVDatepickerBis.DateTime.Date.Day, dateTimeEnd.Hour, dateTimeEnd.Minute, dateTimeEnd.Second); + + at.Start = start; + at.End = ende; + } + + at.Reason = ComboBoxKlientVertretung.SelectedValue as AbsenceReasonDC; + at.Notice = KlientNotice.Text; + at.KrankheitsMeldung = KrankMeldungKlientDatepicker.DateTime.Date; + + ServiceFacade.DoOperationsServiceSync(s => s.InsertNewCustomerAbsenceTime(currentKlient.CustomerOid, at)); + } + + #endregion + + #region Klient Wochen Vertretung verarbeiten // Bereits ausgesiedelt + + private void KlientenWochenAnzeigeSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) + { + _wochenVertretung.AddeNeueVertretungforWochenAnsicht((WochenAnsicht)GridDataControlKlientenWochenansicht.SelectedItem, GridDataControlKlientenWochenansicht.CurrentColumn.FieldName, Datepicker.DateTime); + + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + LadeWochenAnsichtNach(x, x.AddDays(5)); + } + + #endregion + + #region Klienten Wochen 2 Vertretung Verarbeiten //bleibt so + //Richtigen namen für finden + private void ButtonInfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (WochenAnsicht)GridDataControlKlientenWochenansicht2.SelectedItem; + + if (!a.IsMitarbeiterKrank) + { + // bleibt noch offen + } + else + { + MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.","Info"); + } + + } + #endregion + + #region Tages Klient Vertretung verarbeiten // Bereits ausgesiedelt + + private void TagesansichtSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) + { + _tagesVertretung.AddeNeueTagesVertretung((TagesAnsicht)GridDataControlTagesansicht.SelectedItem, Datepicker.DateTime); + + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + + #endregion + + #region Popup Menue Bereich // Bleibt so + + private void DataViewBase_OnShowGridMenu(object sender, GridMenuEventArgs e) + { + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + var a = (TagesAnsicht) GridDataControlTagesansicht.SelectedItem; + + if (e.MenuInfo.Column.FieldName == "Kunde") + { + BarButtonItem x = new BarButtonItem() {Content = "Klient/in öffnen"}; + x.ItemClick += Kundeninfo_OnClick; + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "KrankerMitarbeiter") + { + BarButtonItem x = new BarButtonItem() {Content = "Mitarbeiter/in öffnen"}; + x.ItemClick += Mitarbeiterinfo_OnClick; + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "Vertretung") + { + BarButtonItem s = new BarButtonItem() {Content = "Mitarbeiter/in öffnen"}; + s.ItemClick += MitarbeiterVertretunginfo_OnClick; + e.Customizations.Add(s); + } + + if (a.VertretungsDC != null) + { + BarButtonItem y = new BarButtonItem() {Content = "Vertretung löschen"}; + y.ItemClick += DeletPerson_OnClick; + e.Customizations.Add(y); + } + + BarButtonItem ys = new BarButtonItem() {Content = "Abwesenheit löschen"}; + ys.ItemClick += DeleteKrankmeldung_OnClick; + e.Customizations.Add(ys); + + } + else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + // ########### KontextMenue Wochenanzeige ######### + //BarButtonItem ys = new BarButtonItem() { Content = "Krankmeldung Löschen" }; // villeicht reaktivieren + //ys.ItemClick += DeleteKrankmeldung_OnClick; + //e.Customizations.Add(ys); + + if (e.MenuInfo.Column.FieldName == "Kunde") // FieldNames umbennenen + { + BarButtonItem x = new BarButtonItem() {Content = "Klient/in öffnen" }; + x.ItemClick += Kundeninfo_OnClick; // bearbeiten + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "MaKrank") + { + BarButtonItem x = new BarButtonItem() {Content = "Mitarbeiter/in öffnen" }; + x.ItemClick += Mitarbeiterinfo_OnClick; // eee + e.Customizations.Add(x); + } + + if (e.MenuInfo.Column.FieldName == "VertretungMo" || e.MenuInfo.Column.FieldName == "VertretungDi" || + e.MenuInfo.Column.FieldName == "VertretungMi" || e.MenuInfo.Column.FieldName == "VertretungDo" || + e.MenuInfo.Column.FieldName == "VertretungFr" || e.MenuInfo.Column.FieldName == "VertretungSa" || + e.MenuInfo.Column.FieldName == "VertretungSo") + { + BarButtonItem s = new BarButtonItem() {Content = "Mitarbeiter/in öffnen" }; + s.ItemClick += MitarbeiterVertretunginfoWochenanzeige_OnClick; + e.Customizations.Add(s); + _mitarbeiterVertretungWocheninfo = e.MenuInfo.Column.FieldName; + + BarButtonItem xs = new BarButtonItem() { Content = "Vertretung löschen" }; + xs.ItemClick += DeletVertretungForWochenanzeige_OnClick; + e.Customizations.Add(xs); + + _deletVertretungsWeek = e.MenuInfo.Column.FieldName; + } + } + else + { + //>KontextMenue für die Mitarbeiter View + } + } + + private void Kundeninfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (TagesAnsicht)GridDataControlTagesansicht.SelectedItem; + + if(a.Kunde != null){ + if (!a.Kunde.Equals("") ) + { + VertretungDC vert = new VertretungDC(); + + List abf = new List(); + + if (a.VertretungsDC != null) + { + vert = a.VertretungsDC; + abf.Add(vert.CustomerOid.Value); + } + else{ + abf.Add(a.Klientoid); + } + + 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 Klient zugeteilt"); + } + else + { + MessageBox.Show("Es wurde der Vertretung kein Klient zugeteilt"); + } + } + + private void Mitarbeiterinfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (TagesAnsicht)GridDataControlTagesansicht.SelectedItem; + + if (a.KrankerMitarbeiter != null) + { + if (!a.KrankerMitarbeiter.Equals("")) + { + VertretungDC vert = new VertretungDC(); + + List abf = new List(); + + if (a.VertretungsDC != null) + { + vert = a.VertretungsDC; + abf.Add(vert.EmployeeOid.Value); + } + else + { + abf.Add(a.Mitarbeiteroid); + } + + + var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); + 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"); + + } + else + { + MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); + } + + } + + private void MitarbeiterVertretunginfo_OnClick(object sender, RoutedEventArgs e) + { + var a = (TagesAnsicht)GridDataControlTagesansicht.SelectedItem; + + if (a.Vertretung != null) + { + if (!a.Vertretung.Equals("")) + { + VertretungDC vert = new VertretungDC(); + + vert = a.VertretungsDC; + + List abf = new List(); + + if (a.VertretungsDC != null) + { + vert = a.VertretungsDC; + abf.Add(vert.VertretenderMitarbeiterOid.Value); + } + else + { + abf.Add(a.Vertreteroid); + } + + var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); + 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"); + + } + else + { + MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); + } + } + + private void MitarbeiterVertretunginfoWochenanzeige_OnClick(object sender, RoutedEventArgs e) + { + var x = (WochenAnsicht)GridDataControlKlientenWochenansicht.SelectedItem; + + foreach (var wochentag in x.VertretungsWoche) + { + if (wochentag.Key.Equals(_mitarbeiterVertretungWocheninfo)) + { + _mitarbeiterVertretungWocheninfo = ""; + foreach (var item in wochentag.Value) + { + if (item.Key != null) + { + if (!item.Value.Vertretung.Equals("")) + { + List abf = new List(); + + + abf.Add(item.Value.Vertreteroid); + + + var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(abf[0])); + 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"); + + } + else + { + MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt"); + } + + } + } + + } + + } + + #endregion + + #region Delet WochenAnsicht // Bereits ausgesiedelt + private void DeletVertretungForWochenanzeige_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) + { + _wochenVertretung.DeletVertretendenMitarbeiter((WochenAnsicht) GridDataControlKlientenWochenansicht.SelectedItem, _deletVertretungsWeek); + + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + LadeWochenAnsichtNach(x,x.AddDays(5)); + } + } + #endregion + + #region Delete TagesAnischt // Bereits ausgesiedelt + private void DeleteKrankmeldung_OnClick(object sender, RoutedEventArgs e) + { + if (MessageBox.Show("Möchten Sie die Abwesenheit wirklich löschen?", "Abwesenheit löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) + { + _tagesVertretung.DeleteKrankmeldung((TagesAnsicht)GridDataControlTagesansicht.SelectedItem); + + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + } + + 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) + { + _tagesVertretung.DeleteVertretung((TagesAnsicht)GridDataControlTagesansicht.SelectedItem); + + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + } + #endregion + + #region Krankmeldung Bearbeiten // Bereits ausgesiedelt + private void KrankmeldungsZeitraumBearbeitungsView(object sender, RoutedEventArgs e) + { + _tagesVertretung.KrankMeldeZeitraumBearbeiten((TagesAnsicht)GridDataControlTagesansicht.SelectedItem); + + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + #endregion + + #region Daten der Row Updaten // Bereits ausgesiedelt + private void GridViewBase_OnRowUpdated(object sender, RowEventArgs e) + { + _tagesVertretung.UpdateRowData((TagesAnsicht)GridDataControlTagesansicht.SelectedItem); + + LadeTagesAnsichtNach(Datepicker.DateTime.Date); + } + #endregion + + #region Einstellungen / Aktualisierungen //bleibt so + private void ButtonWorkWeekView_Click(object sender, RoutedEventArgs e) + { + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + GridDataControlTagesansicht.Visibility = Visibility.Collapsed; + GridDataControlKlientenWochenansicht.Visibility = Visibility.Visible; + GridDataControlKlientenWochenansicht2.Visibility=Visibility.Visible; + + KwWochenAnzeigen(); + } + else + if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + GridDataControlKlientenWochenansicht.Visibility = Visibility.Collapsed; + GridDataControlKlientenWochenansicht2.Visibility= Visibility.Collapsed; + GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Visible; + + KwWochenAnzeigen(); + + }else // Diesen Bereich Rausnehmen ?? + if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) + { + GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Collapsed; + GridDataControlKlientenWochenansicht.Visibility = Visibility.Visible; + GridDataControlKlientenWochenansicht2.Visibility = Visibility.Visible; + + + KwWochenAnzeigen(); + } + } + + private void KwWochenAnzeigen() + { + DateTime dt = Datepicker.DateTime; + + RenameColumnHeader(dt); + + DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); + DateTime enddt = startdt.AddDays(5); + + if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + LadeWochenAnsichtNach(startdt,enddt); + } + else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) + { + GetAllVertretungsFreieMitarbeiter(startdt, enddt); + } + + Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); + } + + private void ButtonDayView_Click(object sender, RoutedEventArgs e) + { + if (GridDataControlTagesansicht.Visibility != Visibility.Visible) + { + GridDataControlTagesansicht.Visibility = Visibility.Visible; + GridDataControlKlientenWochenansicht.Visibility = Visibility.Collapsed; + GridDataControlMitarbeiterWochenansicht.Visibility = Visibility.Collapsed; + GridDataControlKlientenWochenansicht2.Visibility = Visibility.Collapsed; + + TagesAnzeige(); + } + } + + private void TagesAnzeige() + { + DateTime dt = Datepicker.DateTime; + Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); + + LadeTagesAnsichtNach(dt); + } + + private void Aktualisieren_OnClick(object sender, RoutedEventArgs e) + { + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + LadeTagesAnsichtNach(Datepicker.DateTime); + } + else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + + LadeWochenAnsichtNach(x,x.AddDays(5)); + }//Rausnehmen ?? + else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) + { + var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear()); + GetAllVertretungsFreieMitarbeiter(x, x.AddDays(5)); + } + } + + private void PfeilLinksDatumRunter_OnClick(object sender, RoutedEventArgs e) + { + PfeilControll(-1); + } + + private void PfeilRechtsDatumHoch_OnClick(object sender, RoutedEventArgs e) + { + PfeilControll(1); + } + + private void PfeilControll(int i) + { + var dt = Datepicker.DateTime; + + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + var a = dt.Date.AddDays(i); + + Datepicker.DateTime = a; + } + else + { + var x = dt.Date.AddDays(i * 7); + + RenameColumnHeader(x); + + Datepicker.DateTime = x; + } + } + + private void RenameColumnHeader(DateTime dt) + { + DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); + + DateTime montagDt = startdt.Date; + DateTime dienstagDt = startdt.Date.AddDays(1); + DateTime mittwochDt = startdt.Date.AddDays(2); + DateTime donnerstagDt = startdt.Date.AddDays(3); + DateTime freitagDt = startdt.Date.AddDays(4); + DateTime samstagDt = startdt.Date.AddDays(5); + + + //add hier die header names das datum hinzu + foreach (var col in GridDataControlKlientenWochenansicht.Columns) + { + if (col.FieldName.Equals("Mo")) + { + col.Header = "Mo" + " " + montagDt.Date.Day + "." + montagDt.Date.Month; + } + + if (col.FieldName.Equals("Di")) + { + col.Header = "Di" + " " + dienstagDt.Date.Day + "." + dienstagDt.Date.Month; + } + + if (col.FieldName.Equals("Mi")) + { + col.Header = "Mi" + " " + mittwochDt.Date.Day + "." + mittwochDt.Date.Month; + } + + if (col.FieldName.Equals("Do")) + { + col.Header = "Do" + " " + donnerstagDt.Date.Day + "." + donnerstagDt.Date.Month; + } + + if (col.FieldName.Equals("Fr")) + { + col.Header = "Fr" + " " + freitagDt.Date.Day + "." + freitagDt.Date.Month; + } + + if (col.FieldName.Equals("Sa")) + { + col.Header = "Sa" + " " + samstagDt.Date.Day + "." + samstagDt.Date.Month; + } + } + + } + + private void Datepicker_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + var dt = (DateTime)e.NewValue; + + if (GridDataControlTagesansicht.Visibility == Visibility.Visible) + { + Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); + + LadeTagesAnsichtNach(dt); + } + else + { + DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); + DateTime enddt = startdt.AddDays(5); + + if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) + { + LadeWochenAnsichtNach(startdt, enddt); + } + else if (GridDataControlMitarbeiterWochenansicht.Visibility == Visibility.Visible) + { + GetAllVertretungsFreieMitarbeiter(startdt, enddt); + } + + + RenameColumnHeader(dt); + Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); + } + } + + private void SetAbwesenheiten() + { + var abwesenheiten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllAbsenceReasons()); + + ComboBoxKlientVertretung.ItemsSource = abwesenheiten; + ComboBoxMitarbeiterVertretung.ItemsSource = abwesenheiten; + + AbwesenheitsKategorieComboBox.ItemsSource = abwesenheiten; + } + + private void SetAktuellesDate() + { + 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; + } + #endregion + + } + + //############## Rausnehmen +#region Connectoren Letzte Ansicht Mitarbeiter Rausnehmen + + //weg damit ?? + public class MitarbeiterWochenansicht + { + public string Employee { get; set; } + + public CompactEmployeeDC EmployeeDc { get; set; } + + //Fürs WPF Employee Wochenanzeige + public string EingesetztBeiMo { get; set; } + public string EingesetztBeiDi { get; set; } + public string EingesetztBeiMi { get; set; } + public string EingesetztBeiDo { get; set; } + public string EingesetztBeiFr { get; set; } + public string EingesetztBeiSa { get; set; } + + public string Mo { get; set; } + public string Di { get; set; } + public string Mi { get; set; } + public string Do { get; set; } + public string Fr { get; set; } + public string Sa { get; set; } + public string So { get; set; } + } + + + #endregion +} diff --git a/BeWo/SchulbegleitenderDienst/TagesAnsicht.cs b/BeWo/SchulbegleitenderDienst/TagesAnsicht.cs new file mode 100644 index 000000000..673d11265 --- /dev/null +++ b/BeWo/SchulbegleitenderDienst/TagesAnsicht.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using BS.Shared; +using BS.Shared.DataContracts; + +namespace BeWo.SchulbegleitenderDienst +{ + public class TagesAnsicht //---> muss Verbessert werden + { + public VertretungDC VertretungsDC { get; set; } // ---> Sicherheitsrisiko ?? + + //---------------------------------------------------------------- + public AbsenceTimeDC AbsenceTimeDC { get; set; } // --> muss das sein ? + + + public DateTime StartD { get; set; } + public DateTime EndD { get; set; } + + public Dictionary Wochentagsarbeitszeit { get; set; } + + // KAnnn das nicht weg + public long Mitarbeiteroid { get; set; } + public long Klientoid { get; set; } + public long Vertreteroid { get; set; } // --> Nein muss nicht. + //---------------------------------------------------------------- + + + public string Vertretung { get; set; } + public string Kunde { get; set; } + public string KrankerMitarbeiter { 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 VertretungsZeitraum { 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; } + + public int IsMitarbeiter { get; set; } + + //Villeicht mal schauen mal sehen + public string AbwesenheitsKategorieToString + { + get { return AbwesenheitsKategorie.Description; } + } + + public string Arbeitszeit { get; set; } + + public bool IsMitarbeiterKrank { get; set; } + + public bool IsCustomerKrank { get; set; } + + public string WochenansichtBemerkung { get; set; } + } +} diff --git a/BeWo/SchulbegleitenderDienst/TagesVertretung.cs b/BeWo/SchulbegleitenderDienst/TagesVertretung.cs new file mode 100644 index 000000000..7fe5a6499 --- /dev/null +++ b/BeWo/SchulbegleitenderDienst/TagesVertretung.cs @@ -0,0 +1,412 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using BeWo.Core; +using BeWo.ServiceProxy; +using BeWo.View; +using BeWo.ViewModel; +using BS.Shared.DataContracts; +using BS.Shared.DataContracts.Compact; + +namespace BeWo.SchulbegleitenderDienst +{ + class TagesVertretung + { + #region variablen + + private SchulbegleitenderDienstBearbeitungsView _view; + + private KrankheitsZeitraumView _krankView; + + private List _items; + + #endregion + + #region Lade Tages Ansicht + + public List VerarbeiteItemZuTagesAnsicht(VertretungsListeItemsDC item) + { + _items = new List(); + + + int i = 0, y = 0; + + if (!item.VertretenderMitarbeiter.Equals("")) + { + i = 1; + } + + if (!item.EmployeeName.Equals("")) + { + y = 1; + } + + if (item.Customer.Count != 0) + { + + #region add Foreach Customers + + foreach (var customer in item.Customer) + { + TagesAnsicht xyc = CreateSchulbegleitenderDienst(item, y); + + + if (item.Vertretung != null) + { + if (item.Vertretung.CustomerOid == customer.Key) + { + xyc = Vertretungsgedoense(xyc, item, i); + + xyc.Vertreteroid = item.VertetenderMit; + + } + else + { + xyc.Vertretung = ""; + } + + if (item.Vertretung.VertretenderMitarbeiterOid == 0) + { + xyc.IsKunde = 0; + } + } + else + { + xyc.IsKunde = 0; + xyc.Vertretung = ""; + } + + xyc.AbsenceTimeDC = item.Absencetime; + xyc.Mitarbeiteroid = item.EmployeeOid; + xyc.Klientoid = customer.Key; + xyc.Kunde = customer.Value; + xyc.WochenansichtBemerkung = item.WochenansichtBemerkung; + //xyc.Beschreibung = item.Bemerkung;//nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht + + if (item.EmployeeName.Equals("")) + { + i = 2; + xyc.IsKunde = i; + + } + + //neu + if (item.isMitarbeiterKrank) + { + xyc.IsMitarbeiterKrank = true; + xyc.IsKunde = 2; + + // hier den Tag merken um auch für WOCHEN bereich die spalte orange zu machen + + } + + if (item.isCustomerKrank) + { + xyc.IsCustomerKrank = true; + xyc.IsKunde = 2; + } + + //hier bereich zu abfrage Vertretung Gewünscht / nicht gewünscht + //################## Besser auf Server auslagern ?? ############################################# + List custOid = new List(); + custOid.Add(customer.Key); + var cus = ServiceFacade.DoCustomerServiceSync(r => r.GetCustomersById(custOid)); + + foreach (var c in cus) + { + // 1 für Grün | 0 für Rot + if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == false) + { + //anzeige Grün machen + xyc.IsKunde = 1; + } + //else if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == true) + //{ + // // anzeige noral halten + // xyc.IsKunde = 2; + //} + //else if (c.VertretungDringendErforderlich == true && c.VertretungGewuenscht == true) + //{ + // //anzeige normal halten + // xyc.IsKunde = 2; + //} + } + + //############################ + + _items.Add(xyc); + } + + #endregion + } + else + { + #region add without customer + + TagesAnsicht xyc = CreateSchulbegleitenderDienst(item, y); + + if (item.Vertretung != null) + { + xyc = Vertretungsgedoense(xyc, item, i); + + // Vertretung zwar vorhanden aber ohne einem Vertreter + if (item.Vertretung.VertretenderMitarbeiterOid == 0) + { + xyc.IsKunde = 0; + } + } + else + { + xyc.IsKunde = 0; + xyc.Vertretung = ""; + } + + xyc.AbsenceTimeDC = item.Absencetime; + xyc.Vertreteroid = item.VertetenderMit; + xyc.Mitarbeiteroid = item.EmployeeOid; + xyc.WochenansichtBemerkung = item.WochenansichtBemerkung; + //xyc.Beschreibung = item.Bemerkung; //nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht + + xyc.Kunde = ""; + xyc.Klientoid = 0; + + + if (item.EmployeeName.Equals("")) + { + i = 2; + xyc.IsKunde = i; + } + + + + _items.Add(xyc); + + #endregion + } + + return _items; + } + + private TagesAnsicht Vertretungsgedoense(TagesAnsicht xyc, VertretungsListeItemsDC item, int i) + { + if (item.Vertretung.VertretungsZeitraumVon.Date != item.Vertretung.VertretungsZeitraumBis.Date) + { + if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 && + item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0) + { + xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy") + " - " + + item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy"); + } + else + { + xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " + + item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy HH:mm"); + } + } + else + { + if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 && + item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0) + { + xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy"); + } + else + { + xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " + item.Vertretung.VertretungsZeitraumBis.Date.ToString("HH:mm"); + } + } + + xyc.VertretungsDC = item.Vertretung; + + xyc.Vertretung = item.VertretenderMitarbeiter; + + xyc.IsKunde = i; + + xyc.Beschreibung = item.Vertretung.Notice; + + return xyc; + } + + private TagesAnsicht CreateSchulbegleitenderDienst(VertretungsListeItemsDC item, int y) + { + TagesAnsicht xyc = new TagesAnsicht() + { + KrankheitsZeitraum = item.Krankheitszeitraum, + KrankerMitarbeiter = item.EmployeeName, + KrankheitsMeldung = item.Krankheitsmeldung, + IsMitarbeiter = y, + Arbeitszeit = item.Worktime, + Wochentagsarbeitszeit = item.Wochentagsarbeitszeit + }; + + if (item.Abwesenheitskategorie != null) + xyc.AbwesenheitsKategorie = item.Abwesenheitskategorie; + + if (item.Absencetime.End != null && item.Absencetime.Start != null) + { + xyc.EndD = item.Absencetime.End.Value; + xyc.StartD = item.Absencetime.Start.Value; + } + + return xyc; + } + + #endregion + + #region Adde Der Tagesansicht Eine Vertretung + public void AddeNeueTagesVertretung(TagesAnsicht a , DateTime dateTime) + { + if (a.Mitarbeiteroid != 0) + { + _view = new SchulbegleitenderDienstBearbeitungsView(1, a.StartD, a.EndD, dateTime, a.Klientoid,a,null,""); + + _view.RaiseCustomEvent += new EventHandler(Tagesansicht_RaiseCustomEvent); + _view.ShowDialog(); + } + else + { + MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen."); + } + } + + private void Tagesansicht_RaiseCustomEvent(object sender, CustomEventArgs e) + { + UpdateMitarbeiterToVertretung(e.Message, e.StartDate, e.EndDate, e.TagesItem); + + _view.Close(); + } + + private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate, TagesAnsicht a) + { + VertretungDC vert = new VertretungDC() + { + CustomerOid = a.Klientoid, + EmployeeOid = a.Mitarbeiteroid, + VertretungsZeitraumVon = startDate.Value, + VertretungsZeitraumBis = endDate.Value, + AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, + VertretenderMitarbeiterOid = employee.EmployeeOid, + Notice = a.Beschreibung + }; + + + if (a.VertretungsDC != null) + { + vert.VertretungOid = a.VertretungsDC.VertretungOid; + ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + } + else + { + ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); + } + } + #endregion + + #region Delete KrankMeldung / Vertretung + public void DeleteKrankmeldung(TagesAnsicht a) + { + Dictionary ahh = new Dictionary(); + ahh.Add(a.AbsenceTimeDC.AbsenceTimeOid.Value, a.AbsenceTimeDC.AbsenceTimeVersion.Value); + + ServiceFacade.DoOperationsServiceSync(s => s.DeactivateAbsenceTime(ahh)); + + VertretungDC vert = new VertretungDC(); + + if (a.VertretungsDC != null) + { + vert = a.VertretungsDC; + ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value)); + } + } + + public void DeleteVertretung(TagesAnsicht a) + { + VertretungDC vert = new VertretungDC(); + + if (a.VertretungsDC != null) + { + vert = a.VertretungsDC; + ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value)); + } + } + #endregion + + #region KrankheitsZeitraum Bearbeiten + + public void KrankMeldeZeitraumBearbeiten(TagesAnsicht a) + { + _krankView = new KrankheitsZeitraumView(a.StartD, a.EndD,a); + + _krankView.RaiseCustomEvent += new EventHandler(newWindowKrankzeitraum_RaiseCustomEvent); + _krankView.ShowDialog(); + } + + private void newWindowKrankzeitraum_RaiseCustomEvent(object sender, KrankheitsEventArgs e) + { + UpdateKrankheitsZeitraum(e.Start, e.Ende,e.TagesItem); + + _krankView.Close(); + } + + private void UpdateKrankheitsZeitraum(DateTime startZeit, DateTime endZeit, TagesAnsicht ab) + { + ab.AbsenceTimeDC.Start = startZeit; + ab.AbsenceTimeDC.End = endZeit; + + List a = new List(); + + a.Add(ab.AbsenceTimeDC); + + ServiceFacade.DoCustomerServiceSync(s => s.UpdateAbsenceTimes(a)); + } + + #endregion + + #region Update das Bearbeitete Item (Row) + + public void UpdateRowData(TagesAnsicht a) + { + AbsenceTimeDC abstime = new AbsenceTimeDC() + { + AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, + Start = a.StartD, + End = a.EndD, + Reason = a.AbwesenheitsKategorie, + KrankheitsMeldung = a.KrankheitsMeldung + }; + + VertretungDC vert = new VertretungDC() + { + CustomerOid = a.Klientoid, + EmployeeOid = a.Mitarbeiteroid, + + AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, + VertretenderMitarbeiterOid = a.Vertreteroid, + Notice = a.Beschreibung + }; + + vert.VertretungsZeitraumVon = a.StartD; + vert.VertretungsZeitraumBis = a.EndD; + + if (a.VertretungsDC != null) + { + vert.VertretungOid = a.VertretungsDC.VertretungOid; + + ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretungAndAbsenceTime(vert, abstime)); + } + else + { + ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); + + ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime)); + } + } + + #endregion + + + } +} diff --git a/BeWo/SchulbegleitenderDienst/WochenAnsicht.cs b/BeWo/SchulbegleitenderDienst/WochenAnsicht.cs new file mode 100644 index 000000000..389f8123b --- /dev/null +++ b/BeWo/SchulbegleitenderDienst/WochenAnsicht.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BeWo.SchulbegleitenderDienst +{ + public class WochenAnsicht + { + //public long? VertretungsOid { get; set; } + public string MaFrei { get; set; } + public string MaKrank { get; set; } + public string Kind { get; set; } + + public bool IsMitarbeiterKrank { get; set; } + + public bool isCustomerKrank { get; set; } + + public string Bemerkung { get; set; } + + public string WochenBeschreibung { get; set; } + + + //Fürs WPF Klient Wochenanzeige + public string VertretungMo { get; set; } + public string VertretungDi { get; set; } + public string VertretungMi { get; set; } + public string VertretungDo { get; set; } + public string VertretungFr { get; set; } + public string VertretungSa { get; set; } + + public string Mo { get; set; } + public string Di { get; set; } + public string Mi { get; set; } + public string Do { get; set; } + public string Fr { get; set; } + public string Sa { get; set; } + public string So { get; set; } + + //KlientenView + public Dictionary> VertretungsWoche { get; set; } + + + + //Fürs WPF Employee Wochenanzeige + public string EingesetztBeiMo { get; set; } + public string EingesetztBeiDi { get; set; } + public string EingesetztBeiMi { get; set; } + public string EingesetztBeiDo { get; set; } + public string EingesetztBeiFr { get; set; } + public string EingesetztBeiSa { get; set; } + + //MitarbeiterView + public Dictionary> KlientvertretungsWoche { get; set; } + + + + + } +} diff --git a/BeWo/SchulbegleitenderDienst/WochenVertretung.cs b/BeWo/SchulbegleitenderDienst/WochenVertretung.cs new file mode 100644 index 000000000..ead9481d2 --- /dev/null +++ b/BeWo/SchulbegleitenderDienst/WochenVertretung.cs @@ -0,0 +1,580 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using BeWo.ServiceProxy; +using BS.Shared; +using BS.Shared.DataContracts; +using BS.Shared.DataContracts.Compact; +using BS.Shared.Extensions; +using DevExpress.Xpf.Grid; + +namespace BeWo.SchulbegleitenderDienst +{ + class WochenVertretung + { + #region variablen + + private SchulbegleitenderDienstBearbeitungsView _view; + + private Dictionary> a; + + private Dictionary> klientb; + + #endregion + + #region Lade Wochen Ansicht + + public Dictionary> GetWochenAnsichtFromItems(DateTime time,List _items) + { + List _itemsWochen = new List(); + List _itemsWochenKrankerMitarbeiter = new List(); + + DateTime dt = time; + + DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); + + foreach (var item in _items) + { + a = new Dictionary>(); + + klientb = new Dictionary>(); + + DateTime anfangDt; + DateTime endeDt; + + anfangDt = item.StartD; + endeDt = item.EndD; + + DateTime montagDt = startdt.Date; + DateTime dienstagDt = startdt.Date.AddDays(1); + DateTime mittwochDt = startdt.Date.AddDays(2); + DateTime donnerstagDt = startdt.Date.AddDays(3); + DateTime freitagDt = startdt.Date.AddDays(4); + DateTime samstagDt = startdt.Date.AddDays(5); + + + WochenAnsicht wwk = new WochenAnsicht() + { + MaKrank = item.KrankerMitarbeiter, + Kind = item.Kunde, + MaFrei = item.Vertretung, + WochenBeschreibung = item.WochenansichtBemerkung, + //Bemerkung = item.Beschreibung + + }; + + // Montag | 0 + wwk = WochentagVerarbeitung(anfangDt, endeDt, montagDt, item, "VertretungMo", "EingesetztBeiMo", wwk, 0); + + //Dienstag | 1 + wwk = WochentagVerarbeitung(anfangDt, endeDt, dienstagDt, item, "VertretungDi", "EingesetztBeiDi", wwk, + 1); + + //Mittwoch | 2 + wwk = WochentagVerarbeitung(anfangDt, endeDt, mittwochDt, item, "VertretungMi", "EingesetztBeiMi", wwk, + 2); + + //Donnerstag | 3 + wwk = WochentagVerarbeitung(anfangDt, endeDt, donnerstagDt, item, "VertretungDo", "EingesetztBeiDo", wwk, + 3); + + //Freitag | 4 + wwk = WochentagVerarbeitung(anfangDt, endeDt, freitagDt, item, "VertretungFr", "EingesetztBeiFr", wwk, 4); + + //Samstag | 5 + wwk = WochentagVerarbeitung(anfangDt, endeDt, samstagDt, item, "VertretungSa", "EingesetztBeiSa", wwk, 5); + + wwk.VertretungsWoche = a; + + wwk.KlientvertretungsWoche = klientb; + + + + //Abfrage für Klienten Krank + if (wwk.IsMitarbeiterKrank) + { + _itemsWochenKrankerMitarbeiter.Add(wwk); + } + else + { + _itemsWochen.Add(wwk); + } + + } + + Dictionary> dic = new Dictionary>(); + + dic.Add("_itemsWochenKrankerMitarbeiter", _itemsWochenKrankerMitarbeiter); + dic.Add("_itemsWochen", _itemsWochen); + + return dic; + } + + private WochenAnsicht WochentagVerarbeitung(DateTime anfangDt, DateTime endeDt, DateTime wochentagDt, TagesAnsicht item, string vertretungstag, string einsetzungstag, WochenAnsicht wwk, int i) + { + if (anfangDt.Date <= wochentagDt && wochentagDt <= endeDt.Date) + { + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon.Date <= wochentagDt.Date && + item.VertretungsDC.VertretungsZeitraumBis.Date >= wochentagDt.Date) + { + Dictionary sa = new Dictionary(); + sa.Add(wochentagDt, item); // item.vertreteroid + + a.Add(vertretungstag, sa); + klientb.Add(einsetzungstag, sa); + + switch (i) + { + case 0: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungMo = item.Vertretung; + } + // wwk.EingesetztBeiMo = item.Kunde; + wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 1: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungDi = item.Vertretung; + } + // wwk.EingesetztBeiDi = item.Kunde; + wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 2: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungMi = item.Vertretung; + } + // wwk.EingesetztBeiMi = item.Kunde; + wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 3: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungDo = item.Vertretung; + } + // wwk.EingesetztBeiDo = item.Kunde; + wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 4: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungFr = item.Vertretung; + } + // wwk.EingesetztBeiFr = item.Kunde; + wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 5: + if (item.IsCustomerKrank) + { + wwk.isCustomerKrank = true; + } + else + { + wwk.VertretungSa = item.Vertretung; + } + // wwk.EingesetztBeiSa = item.Kunde; + wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + } + + } + else + { + switch (i) + { + case 0: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungMo = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungMo = ""; + } + // wwk.EingesetztBeiMo = ""; + wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 1: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungDi = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungDi = ""; + } + wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiDi = ""; + break; + case 2: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungMi = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungMi = " "; + } + wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + + // wwk.EingesetztBeiMi = ""; + break; + case 3: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungDo = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungDo = ""; + } + wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + //wwk.EingesetztBeiDo = ""; + break; + case 4: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungFr = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungFr = ""; + } + wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiFr = ""; + break; + case 5: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungSa = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungSa = ""; + } + wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiSa = ""; + break; + } + } + } + else + { + Dictionary sa = new Dictionary(); + sa.Add(wochentagDt, item); // item.vertreteroid + + a.Add(vertretungstag, sa); + klientb.Add(einsetzungstag, sa); + + switch (i) + { + case 0: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungMo = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + } + else + { + wwk.VertretungMo = item.Vertretung; + } + // wwk.EingesetztBeiMo = item.Kunde; + wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 1: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungDi = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + + } + else + { + wwk.VertretungDi = item.Vertretung; + } + // wwk.EingesetztBeiDi = item.Kunde; + wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 2: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungMi = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + + } + else + { + wwk.VertretungMi = item.Vertretung; + } + // wwk.EingesetztBeiMi = item.Kunde; + wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 3: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungDo = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + + } + else + { + wwk.VertretungDo = item.Vertretung; + } + // wwk.EingesetztBeiDo = item.Kunde; + wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 4: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungFr = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + + } + else + { + wwk.VertretungFr = item.Vertretung; + } + // wwk.EingesetztBeiFr = item.Kunde; + wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + case 5: + if (item.IsMitarbeiterKrank) + { + wwk.VertretungSa = " "; + //wwk.isCustomerKrank = true; + wwk.IsMitarbeiterKrank = true; + + } + else + { + wwk.VertretungSa = item.Vertretung; + } + // wwk.EingesetztBeiSa = item.Kunde; + wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + break; + } + } + } + else + { + switch (i) + { + case 0: + wwk.VertretungMo = " "; + wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiMo = " "; + break; + case 1: + wwk.VertretungDi = " "; + wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiDi = " "; + break; + case 2: + wwk.VertretungMi = " "; + wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiMi = " "; + break; + case 3: + wwk.VertretungDo = " "; + wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiDo = " "; + break; + case 4: + wwk.VertretungFr = " "; + wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiFr = " "; + break; + case 5: + wwk.VertretungSa = " "; + wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit); + // wwk.EingesetztBeiSa = " "; + break; + } + + } + + return wwk; + + + } + + private string WochenanzeigeHinzufügen(DateTime dayOfWeekDateTime, Dictionary wochentagsarbeitszeit) + { + if (wochentagsarbeitszeit.Count != 0) + { + foreach (var wa in wochentagsarbeitszeit) + { + if ((int)wa.Key + 1 == (int)dayOfWeekDateTime.DayOfWeek) + { + return wa.Value; + } + } + } + + return ""; + } + + #endregion + + #region Adde der WochenAnsicht einen Vertreter + + public void AddeNeueVertretungforWochenAnsicht(WochenAnsicht a,string tag, DateTime dateTime) + { + if (!a.IsMitarbeiterKrank) + { + VertretungDC vertretung = new VertretungDC(); + AbsenceTimeDC absenceTime = new AbsenceTimeDC(); + foreach (var vert in a.KlientvertretungsWoche) + { + if (vert.Key.Equals(tag)) + { + foreach (var val in vert.Value) + { + vertretung = val.Value.VertretungsDC; + absenceTime = val.Value.AbsenceTimeDC; + } + } + } + + if (!a.MaKrank.Equals("")) + { + _view = new SchulbegleitenderDienstBearbeitungsView(1, absenceTime.Start, absenceTime.End, + dateTime, vertretung.CustomerOid, null, a,tag); + + _view.RaiseCustomEvent += new EventHandler(KlientenWochen_RaiseCustomEvent); + _view.ShowDialog(); + } + else + { + MessageBox.Show("Fehler"); + } + } + else + { + MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.", "Info"); + } + } + + private void KlientenWochen_RaiseCustomEvent(object sender, CustomEventArgs e) + { + UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Message, e.StartDate, e.EndDate,e.WochenItem,e.WochenTag); + + _view.Close(); + } + + private void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate, WochenAnsicht a, string tag) + { + foreach (var woche in a.VertretungsWoche) + { + if (woche.Key.Equals(tag)) + { + foreach (var item in woche.Value) + { + VertretungDC vert = new VertretungDC() + { + CustomerOid = item.Value.Klientoid, + AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value, + VertretungsZeitraumVon = startDate.Value, + VertretungsZeitraumBis = endDate.Value, + VertretenderMitarbeiterOid = employee.EmployeeOid, + EmployeeOid = item.Value.Mitarbeiteroid, + Notice = item.Value.Beschreibung, + }; + + + + if (item.Value.VertretungsDC != null) + { + //hier irgendwann ermöglichen dass eine bereits vorhandener vertretungszeitraum / also ein teil davon nochmals abgesplittet werden kann. + + vert.VertretungOid = item.Value.VertretungsDC.VertretungOid; + vert.VertretenderMitarbeiterOid = employee.EmployeeOid; + vert.VertretungsZeitraumVon = item.Value.VertretungsDC.VertretungsZeitraumVon; + vert.VertretungsZeitraumBis = item.Value.VertretungsDC.VertretungsZeitraumBis; + + ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); + } + else + { + //ggf. ermöglichen das nicht der ganze zeitraum gesetzt wird. + //zur zeit wird hier die Gesamte Krankheitszeit übernommen + ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); + } + } + } + } + } + + #endregion + + #region Delete Vertretenden Mitarbeiter + + public void DeletVertretendenMitarbeiter(WochenAnsicht a, string _deletVertretungsWeek) + { + foreach (var wochentag in a.VertretungsWoche) + { + if (wochentag.Key.Equals(_deletVertretungsWeek)) + { + _deletVertretungsWeek = ""; + foreach (var item in wochentag.Value) + { + if (item.Key != null) + { + if (!item.Value.Vertretung.Equals("")) + { + ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(item.Value.VertretungsDC.VertretungOid.Value)); + } + } + } + } + } + } + + #endregion + + } +} diff --git a/BeWo/View/Detail/CustomerView.xaml.cs b/BeWo/View/Detail/CustomerView.xaml.cs index bbde8b780..18fdfb612 100644 --- a/BeWo/View/Detail/CustomerView.xaml.cs +++ b/BeWo/View/Detail/CustomerView.xaml.cs @@ -30,6 +30,7 @@ using DevExpress.Xpf.Grid; using System.Windows.Media.Imaging; using BeWo.ownChat; +using BeWo.SchulbegleitenderDienst; using BS.Shared.Translation; using DevExpress.XtraGrid; using Binding = System.Windows.Data.Binding; @@ -1053,7 +1054,7 @@ namespace BeWo.View.Detail { if (tabitem_schuldienst.Content == null) { - tabitem_schuldienst.Content = new SchulbegleitenderDienst(TableID.Customer, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient); + tabitem_schuldienst.Content = new SchulbegleitenderDienstView(TableID.Customer, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient); } } diff --git a/BeWo/View/Detail/EmployeeView.xaml.cs b/BeWo/View/Detail/EmployeeView.xaml.cs index b067179d6..6265e2319 100644 --- a/BeWo/View/Detail/EmployeeView.xaml.cs +++ b/BeWo/View/Detail/EmployeeView.xaml.cs @@ -13,6 +13,7 @@ using System.Windows.Media.Imaging; using BeWo.Core; using BeWo.Core.Service; using BeWo.ownChat; +using BeWo.SchulbegleitenderDienst; using BeWo.ServiceProxy; using BeWo.Validation; using BeWo.ViewModel; @@ -469,7 +470,7 @@ namespace BeWo.View.Detail { if (tabitem_schuldienst.Content == null) { - tabitem_schuldienst.Content = new SchulbegleitenderDienst(TableID.Customer, ViewModel.DataContract.EmployeeOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter); + tabitem_schuldienst.Content = new SchulbegleitenderDienstView(TableID.Customer, ViewModel.DataContract.EmployeeOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter); } } diff --git a/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml b/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml index 215aa5b15..27ce68e0d 100644 --- a/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml +++ b/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml @@ -7,7 +7,7 @@ Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True"> - + diff --git a/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml.cs b/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml.cs index c6e447332..b3c5570bc 100644 --- a/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml.cs +++ b/BeWo/View/Master/SchulbegleitenderDienstMasterView.xaml.cs @@ -9,7 +9,7 @@ namespace BeWo.View.Master { public partial class SchulbegleitenderDienstMasterView { - public NewSchulbegleitenderDienstView NewSchulBeleitDienstView; + public SchulbegleitenderVertretungsDienstMainView NewSchulBeleitDienstView; public SchulbegleitenderDienstMasterView() { @@ -26,7 +26,7 @@ namespace BeWo.View.Master } //Problem NachSchauen - NewSchulBeleitDienstView = Resources["NewSchulbegleitenderDienstMain"] as NewSchulbegleitenderDienstView; + NewSchulBeleitDienstView = Resources["NewSchulbegleitenderDienstMain"] as SchulbegleitenderVertretungsDienstMainView; if (NewSchulBeleitDienstView == null) { diff --git a/BeWo/View/Navigation/SupportConceptNavigationView.xaml.cs b/BeWo/View/Navigation/SupportConceptNavigationView.xaml.cs index fa21d7ca9..0753cf0c8 100644 --- a/BeWo/View/Navigation/SupportConceptNavigationView.xaml.cs +++ b/BeWo/View/Navigation/SupportConceptNavigationView.xaml.cs @@ -63,7 +63,7 @@ namespace BeWo.View.Navigation this.chkShowOnlyTeamSCs.Foreground = b; } - if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewAllSupportConcepts) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_View MyTeams)) + if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewAllSupportConcepts) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewMyTeams)) { this.chkShowOnlyMySCs.IsChecked = true; this.chkShowOnlyMySCs.IsEnabled = false; diff --git a/BeWo/ownChat/ChatServiceCustomer.xaml.cs b/BeWo/ownChat/ChatServiceCustomer.xaml.cs index d1f15ae80..d331d94d4 100644 --- a/BeWo/ownChat/ChatServiceCustomer.xaml.cs +++ b/BeWo/ownChat/ChatServiceCustomer.xaml.cs @@ -349,7 +349,7 @@ namespace BeWo.ownChat } #endregion - #region pdf // auf den server auslagern und als byte[] zurück geben + #region pdf // auf den server auslagern und als byte[] zurück geben und hier verarbeiten private void ZeigeHandoutPDF_OnClick(object sender, RoutedEventArgs e) { StartWaiting();