diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index ec9d90480..99f7325f3 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -2506,6 +2506,9 @@ + + + diff --git a/BeWo/BeWoApp.xaml b/BeWo/BeWoApp.xaml index 041059f7d..124299fd0 100644 --- a/BeWo/BeWoApp.xaml +++ b/BeWo/BeWoApp.xaml @@ -62,6 +62,7 @@ + --> @@ -267,7 +324,7 @@ - + @@ -300,14 +360,14 @@ - + - + @@ -396,7 +456,7 @@ - + @@ -516,7 +576,7 @@ - + @@ -535,7 +595,7 @@ - + @@ -660,7 +720,7 @@ - + diff --git a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs b/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs index e187a3ff1..875094829 100644 --- a/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs +++ b/BeWo/SchulbegleitenderDienst/NewSchulbegleitenderDienstView.xaml.cs @@ -39,6 +39,7 @@ using DevExpress.Xpf.Scheduler.Drawing; using DevExpress.Xpf.Scheduler.Reporting; using DevExpress.XtraScheduler; using Appointment = DevExpress.XtraScheduler.Appointment; +using CheckBox = System.Windows.Controls.CheckBox; using ColorConverter = System.Windows.Media.ColorConverter; using DragDropEffects = System.Windows.DragDropEffects; using DragEventArgs = System.Windows.DragEventArgs; @@ -52,11 +53,9 @@ namespace BeWo.SchulbegleitenderDienst { public partial class NewSchulbegleitenderDienstView { - public List Mitarbeiter { get; set; } + private readonly List _items = new List(); - private List _items = new List(); - - private List _itemsWochen = new List(); + private readonly List _itemsWochen = new List(); private SchulbegleitenderDienstBearbeitungsView _view = null; @@ -66,8 +65,6 @@ namespace BeWo.SchulbegleitenderDienst private string _deletVertretungsWeek = ""; - //private VertretungVM _ViewModel; die klasse sollte genutzt werden um (Eigentlich) - public NewSchulbegleitenderDienstView() { InitializeComponent(); @@ -93,14 +90,12 @@ namespace BeWo.SchulbegleitenderDienst 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; @@ -112,7 +107,6 @@ namespace BeWo.SchulbegleitenderDienst //ArbeitsUnfähigkeitsKrankmeldung Am KrankMeldungMitarbeiterDatepicker.DateTime = dt; KrankMeldungKlientDatepicker.DateTime = dt; - } private void GetAllVertretungenOnLoad(DateTime AusgewähltesDatum) @@ -120,253 +114,13 @@ namespace BeWo.SchulbegleitenderDienst _items.Clear(); ServiceFacade.DoOperationsServiceAsync(s => s.VertretungsListe(AusgewähltesDatum),r =>{ - - List vorhandeneAbsenceTimeOidListe = new List(); - List vorhandeneCustomerOidListe = new List(); - - #region Füge Der Liste Alle Vertretungen Hinzu inkl. Der Dazu Gehörigen AbsenceTimes - - foreach (var vertritt in r.Vertretungsliste) + + foreach (var item in r) { - VertretungsItem item = CreateVertretungsitem(); - item.Vertretung = vertritt; - - if (vertritt.VertretungsZeitraumVon.Date <= AusgewähltesDatum.Date && vertritt.VertretungsZeitraumBis.Date >= AusgewähltesDatum.Date ) - { - foreach (var mit in r.Employeesliste) - { - if (vertritt.EmployeeOid == mit.EmployeeOid) - { - item.EmployeeName = mit.FirstName + " " + mit.LastName; - - item.EmployeeOid = mit.EmployeeOid; - } - - if (vertritt.VertretenderMitarbeiterOid == mit.EmployeeOid) - { - item.VertretenderMitarbeiter = mit.FirstName + " " + mit.LastName; - - item.VertetenderMit = mit.EmployeeOid; - } - - foreach (var hauptbetreuung in r.Employee2CustomerHauptbetreuung) - { - if (hauptbetreuung.Key == vertritt.EmployeeOid && vertritt.EmployeeOid == mit.EmployeeOid) - { - foreach (var cust in r.Customersliste) - { - foreach (var val in hauptbetreuung.Value) - { - if (val == cust.CustomerOid) - { - //customerName.Add(cust.FullName); - //customerOid.Add(cust.CustomerOid); - if (cust.CustomerOid == vertritt.CustomerOid) - { - vorhandeneCustomerOidListe.Add(cust.CustomerOid); - item.Customer.Add(cust.CustomerOid, cust.FullName); - } - } - } - } - } - } - } - - foreach (var ab in r.AbsenceTimeliste) - { - if (vertritt.AbsenceTimeOid == ab.AbsenceTimeOid) - { - item.Abwesenheitskategorie = ab.Reason; - - if (ab.Start.Value != ab.End.Value) - item.Krankheitszeitraum = ab.Start.Value.ToString("dd.MM.yyyy") + " - " + ab.End.Value.ToString("dd.MM.yyyy"); - else - item.Krankheitszeitraum = ab.Start.Value.ToString("dd.MM.yyyy"); - - vorhandeneAbsenceTimeOidListe.Add(ab.AbsenceTimeOid.Value); - - if (ab.KrankheitsMeldung != null) - item.Krankheitsmeldung = ab.KrankheitsMeldung.Value; - else - item.Krankheitsmeldung = ab.Start.Value; - - item.Absencetime = ab; - - foreach (var arbeitszeit in r.Arbeitszeitliste) - { - if (vertritt.EmployeeOid == arbeitszeit.EmployeeOid) - { - if (arbeitszeit.GueltigVon.Value.Date <= ab.Start.Value.Date && - arbeitszeit.GueltigBis.Value.Date <= ab.End.Value.Date || - arbeitszeit.GueltigVon.Value.Date <= ab.Start.Value.Date && - arbeitszeit.GueltigBis.Value.Date >= ab.End.Value.Date) - { - foreach (var eintrag in arbeitszeit.Eintraege) - { - if ((int)AusgewähltesDatum.DayOfWeek == (int)eintrag.Tag + 1) - { - if (!String.IsNullOrEmpty(item.Worktime)) - { - item.Worktime += ", "; - } - item.Worktime += eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis; - } - - if (!item.Wochentagsarbeitszeit.ContainsKey(eintrag.Tag)) - { - item.Wochentagsarbeitszeit.Add(eintrag.Tag, - eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis); - } - else - { - item.Wochentagsarbeitszeit[eintrag.Tag] += " " + eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis; - } - } - } - } - } - - - if (item.EmployeeOid == 0 || item.EmployeeName.Equals("")) - { - foreach (var emp in r.Employeesliste) - { - if (emp.EmployeeOid == ab.EmployeeOid) - { - item.EmployeeOid = ab.EmployeeOid.Value; - item.EmployeeName = emp.FirstName + " " + emp.LastName; - } - } - } - } - } - - AddItemsToGrid(item ); - } + AddItemsToGrid(item); } - #endregion - - #region Füge AbsenceTime Der Liste Hinzu Die Keine Vertretung inne hat - foreach (var ars in r.AbsenceTimeliste) - { - VertretungsItem item = CreateVertretungsitem(); - - item.Abwesenheitskategorie = ars.Reason; - item.Absencetime = ars; - - if (ars.Start.Value != ars.End.Value) - item.Krankheitszeitraum = ars.Start.Value.ToString("dd.MM.yyyy") + " - " + ars.End.Value.ToString("dd.MM.yyyy"); - else - item.Krankheitszeitraum = ars.Start.Value.ToString("dd.MM.yyyy"); - - - if (ars.KrankheitsMeldung != null) - item.Krankheitsmeldung = ars.KrankheitsMeldung.Value; - else - item.Krankheitsmeldung = ars.Start.Value; - - - if (ars.Start.Value.Date <= AusgewähltesDatum.Date && ars.End.Value.Date >= AusgewähltesDatum.Date) - { - foreach (var emp in r.Employeesliste) - { - if (ars.EmployeeOid == emp.EmployeeOid ) - { - item.EmployeeName = emp.FirstName + " " + emp.LastName; - } - - foreach (var hauptbetreuung in r.Employee2CustomerHauptbetreuung) - { - if (hauptbetreuung.Key == emp.EmployeeOid && emp.EmployeeOid == ars.EmployeeOid) - { - foreach (var cust in r.Customersliste) - { - foreach (var val in hauptbetreuung.Value) - { - if (val == cust.CustomerOid) - { - //customerName.Add(cust.FullName); - //customerOid.Add(cust.CustomerOid); - if (!vorhandeneCustomerOidListe.Contains(cust.CustomerOid)) - item.Customer.Add(cust.CustomerOid, cust.FullName); - } - } - } - } - } - } - - if (item.EmployeeOid == 0 || item.EmployeeName.Equals("")) - { - foreach (var emp in r.Employeesliste) - { - if (emp.EmployeeOid == ars.EmployeeOid) - { - item.EmployeeOid = ars.EmployeeOid.Value; - item.EmployeeName = emp.FirstName + " " + emp.LastName; - - - foreach (var arbeitszeit in r.Arbeitszeitliste) - { - if (emp.EmployeeOid == arbeitszeit.EmployeeOid) - { - if (arbeitszeit.GueltigVon.Value.Date <= ars.Start.Value.Date && - arbeitszeit.GueltigBis.Value.Date <= ars.End.Value.Date || - arbeitszeit.GueltigVon.Value.Date <= ars.Start.Value.Date && - arbeitszeit.GueltigBis.Value.Date >= ars.End.Value.Date ) - { - foreach (var eintrag in arbeitszeit.Eintraege) - { - if ((int)AusgewähltesDatum.DayOfWeek == (int)eintrag.Tag + 1) - { - if (!String.IsNullOrEmpty(item.Worktime)) - { - item.Worktime += ", "; - } - item.Worktime += eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis; - } - //var test = (int)DayOfWeek.Wednesday; - //var test2 = (int) eintrag.Tag; - if (!item.Wochentagsarbeitszeit.ContainsKey(eintrag.Tag)) - { - item.Wochentagsarbeitszeit.Add(eintrag.Tag, - eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis); - } - else - { - item.Wochentagsarbeitszeit[eintrag.Tag] += " " + eintrag.UhrzeitVon + " - " + eintrag.UhrzeitBis; - } - } - } - } - } - } - } - } - - //Sonderfall wenn keine vertertung verfügbar und employee nicht gegeben aber absence eine customer oid besitzt - if (item.Customer.Count == 0 && item.EmployeeOid == 0 && ars.CustomerOid.Value != 0) - { - foreach (var cust in r.Customersliste) - { - if (ars.CustomerOid.Value == cust.CustomerOid) - { - item.Customer.Add(cust.CustomerOid, cust.FullName); - } - } - } - - //Wieder einkommentieren wenn nur Krankmeldungen angezeigt werden sollen wenn mitarbeiter überhaupt einen Klienten haben - if (item.Customer.Count != 0 )//hier auch employeecount abfragen - { - AddItemsToGrid(item); - } - } - } -#endregion - + #region Dispatcher Refresh Grid this.Dispatch(delegate { @@ -378,7 +132,30 @@ namespace BeWo.SchulbegleitenderDienst }); } - private void AddItemsToGrid(VertretungsItem item) + 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 AddItemsToGrid(VertretungsListeItemsDC item) { int i = 0, y = 0; @@ -393,7 +170,6 @@ namespace BeWo.SchulbegleitenderDienst y = 1; } - if(item.Customer.Count != 0){ #region add Foreach Customers @@ -431,6 +207,14 @@ namespace BeWo.SchulbegleitenderDienst xyc.Mitarbeiteroid = item.EmployeeOid; xyc.Klientoid = customer.Key ; xyc.Kunde = customer.Value; + + + if (item.EmployeeName.Equals("")) + { + i = 2; + xyc.IsKunde = i; + + } _items.Add(xyc); } @@ -465,6 +249,13 @@ namespace BeWo.SchulbegleitenderDienst xyc.Kunde = ""; xyc.Klientoid = 0; + + + if (item.EmployeeName.Equals("")) + { + i = 2; + xyc.IsKunde = i; + } _items.Add(xyc); @@ -487,10 +278,19 @@ namespace BeWo.SchulbegleitenderDienst Dictionary> klientb = new Dictionary>(); + DateTime anfangDt; + DateTime endeDt; - DateTime anfangDt = item.StartD; - DateTime endeDt = item.EndD; - + //if (item.VertretungsDC == null) + //{ + anfangDt = item.StartD; + endeDt = item.EndD; + //} + //else + //{ + // anfangDt = item.VertretungsDC.VertretungsZeitraumVon; + // endeDt = item.VertretungsDC.VertretungsZeitraumBis; + //} DateTime montagDt = startdt.Date; DateTime dienstagDt = startdt.Date.AddDays(1); @@ -499,6 +299,42 @@ namespace BeWo.SchulbegleitenderDienst 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; + // } + //} + + Wochenansichten wwk = new Wochenansichten() { MaKrank = item.KrankerMitarbeiter, @@ -510,41 +346,94 @@ namespace BeWo.SchulbegleitenderDienst #region Wochenansicht Mo - Sa if (anfangDt.Date <= montagDt && montagDt <= endeDt.Date ) - { - Dictionary mo = new Dictionary(); - mo.Add(montagDt, item); + { + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= montagDt && + item.VertretungsDC.VertretungsZeitraumBis >= montagDt) + { + //########## Original ################## + Dictionary mo = new Dictionary(); + mo.Add(montagDt, item); - a.Add("VertretungMo", mo); + a.Add("VertretungMo", mo); - klientb.Add("EingesetztBeiMo",mo); + klientb.Add("EingesetztBeiMo", mo); - wwk.VertretungMo = item.Vertretung; + wwk.VertretungMo = item.Vertretung; + wwk.EingesetztBeiMo = item.Kunde; - wwk.EingesetztBeiMo = item.Kunde; + wwk.Mo = WochenanzeigeHinzufügen(montagDt, item.Wochentagsarbeitszeit); + //###################################### + } + else + { + wwk.VertretungMo = ""; + wwk.EingesetztBeiMo = ""; + } + } + else + { + Dictionary mo = new Dictionary(); + mo.Add(montagDt, item); - wwk.Mo = WochenanzeigeHinzufügen(montagDt,item.Wochentagsarbeitszeit); + a.Add("VertretungMo", mo); + + klientb.Add("EingesetztBeiMo", mo); + + wwk.VertretungMo = item.Vertretung; + wwk.EingesetztBeiMo = item.Kunde; + + wwk.Mo = WochenanzeigeHinzufügen(montagDt, item.Wochentagsarbeitszeit); + } //bis hierhin nicht original } else { + //###Original wwk.VertretungMo = " "; wwk.EingesetztBeiMo = " "; + //####### } if (anfangDt.Date <= dienstagDt && dienstagDt <= endeDt.Date) { - Dictionary di = new Dictionary(); - di.Add(dienstagDt, item); + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= mittwochDt && + item.VertretungsDC.VertretungsZeitraumBis >= mittwochDt) + { + Dictionary di = new Dictionary(); + di.Add(dienstagDt, item); - a.Add("VertretungDi", di); + a.Add("VertretungDi", di); - klientb.Add("EingesetztBeiDi", di); + klientb.Add("EingesetztBeiDi", di); - wwk.VertretungDi = item.Vertretung; - wwk.EingesetztBeiDi = item.Kunde; + wwk.VertretungDi = item.Vertretung; + wwk.EingesetztBeiDi = item.Kunde; - wwk.Di = WochenanzeigeHinzufügen(dienstagDt, item.Wochentagsarbeitszeit); + wwk.Di = WochenanzeigeHinzufügen(dienstagDt, item.Wochentagsarbeitszeit); + } + else + { + wwk.VertretungDi = ""; + wwk.EingesetztBeiDi = ""; + } + } + else + { + Dictionary di = new Dictionary(); + di.Add(dienstagDt, item); - + a.Add("VertretungDi", di); + + klientb.Add("EingesetztBeiDi", di); + + wwk.VertretungDi = item.Vertretung; + wwk.EingesetztBeiDi = item.Kunde; + + wwk.Di = WochenanzeigeHinzufügen(dienstagDt, item.Wochentagsarbeitszeit); + } } else { @@ -554,16 +443,41 @@ namespace BeWo.SchulbegleitenderDienst if (anfangDt.Date <= mittwochDt && mittwochDt <= endeDt.Date) { - Dictionary mi = new Dictionary(); - mi.Add(mittwochDt, item); + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= mittwochDt && + item.VertretungsDC.VertretungsZeitraumBis >= mittwochDt) + { + Dictionary mi = new Dictionary(); + mi.Add(mittwochDt, item); - a.Add("VertretungMi", mi); - klientb.Add("EingesetztBeiMi", mi); + a.Add("VertretungMi", mi); + klientb.Add("EingesetztBeiMi", mi); - wwk.VertretungMi = item.Vertretung; - wwk.EingesetztBeiMi = item.Kunde; + wwk.VertretungMi = item.Vertretung; + wwk.EingesetztBeiMi = item.Kunde; - wwk.Mi = WochenanzeigeHinzufügen(mittwochDt, item.Wochentagsarbeitszeit); + wwk.Mi = WochenanzeigeHinzufügen(mittwochDt, item.Wochentagsarbeitszeit); + } + else + { + wwk.VertretungMi = ""; + wwk.EingesetztBeiMi = ""; + } + } + else + { + Dictionary mi = new Dictionary(); + mi.Add(mittwochDt, item); + + a.Add("VertretungMi", mi); + klientb.Add("EingesetztBeiMi", mi); + + wwk.VertretungMi = item.Vertretung; + wwk.EingesetztBeiMi = item.Kunde; + + wwk.Mi = WochenanzeigeHinzufügen(mittwochDt, item.Wochentagsarbeitszeit); + } } else { @@ -574,16 +488,41 @@ namespace BeWo.SchulbegleitenderDienst if (anfangDt.Date <= donnerstagDt && donnerstagDt <= endeDt.Date) { - Dictionary Do = new Dictionary(); - Do.Add(donnerstagDt, item); + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= donnerstagDt && + item.VertretungsDC.VertretungsZeitraumBis >= donnerstagDt) + { + Dictionary Do = new Dictionary(); + Do.Add(donnerstagDt, item); - a.Add("VertretungDo", Do); - klientb.Add("EingesetztBeiDo", Do); + a.Add("VertretungDo", Do); + klientb.Add("EingesetztBeiDo", Do); - wwk.VertretungDo = item.Vertretung; - wwk.EingesetztBeiDo = item.Kunde; + wwk.VertretungDo = item.Vertretung; + wwk.EingesetztBeiDo = item.Kunde; - wwk.Do = WochenanzeigeHinzufügen(donnerstagDt, item.Wochentagsarbeitszeit); + wwk.Do = WochenanzeigeHinzufügen(donnerstagDt, item.Wochentagsarbeitszeit); + } + else + { + wwk.VertretungDo = ""; + wwk.EingesetztBeiDo = ""; + } + } + else + { + Dictionary Do = new Dictionary(); + Do.Add(donnerstagDt, item); + + a.Add("VertretungDo", Do); + klientb.Add("EingesetztBeiDo", Do); + + wwk.VertretungDo = item.Vertretung; + wwk.EingesetztBeiDo = item.Kunde; + + wwk.Do = WochenanzeigeHinzufügen(donnerstagDt, item.Wochentagsarbeitszeit); + } } else { @@ -593,16 +532,43 @@ namespace BeWo.SchulbegleitenderDienst if (anfangDt.Date <= freitagDt && freitagDt <= endeDt.Date) { - Dictionary fr = new Dictionary(); - fr.Add(freitagDt, item); + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= freitagDt && + item.VertretungsDC.VertretungsZeitraumBis >= freitagDt) + { + Dictionary fr = new Dictionary(); + fr.Add(freitagDt, item); - a.Add("VertretungFr", fr); - klientb.Add("EingesetztBeiFr", fr); + a.Add("VertretungFr", fr); + klientb.Add("EingesetztBeiFr", fr); - wwk.VertretungFr = item.Vertretung; - wwk.EingesetztBeiFr = item.Kunde; + wwk.VertretungFr = item.Vertretung; + wwk.EingesetztBeiFr = item.Kunde; - wwk.Fr = WochenanzeigeHinzufügen(freitagDt, item.Wochentagsarbeitszeit); + wwk.Fr = WochenanzeigeHinzufügen(freitagDt, item.Wochentagsarbeitszeit); + } + else + { + wwk.VertretungFr = ""; + wwk.EingesetztBeiFr = ""; + } + } + else + { + //###Origianl### + Dictionary fr = new Dictionary(); + fr.Add(freitagDt, item); + + a.Add("VertretungFr", fr); + klientb.Add("EingesetztBeiFr", fr); + + wwk.VertretungFr = item.Vertretung; + wwk.EingesetztBeiFr = item.Kunde; + + wwk.Fr = WochenanzeigeHinzufügen(freitagDt, item.Wochentagsarbeitszeit); + //###Original### + } } else { @@ -612,17 +578,42 @@ namespace BeWo.SchulbegleitenderDienst if (anfangDt.Date <= samstagDt && samstagDt <= endeDt.Date) { - Dictionary sa = new Dictionary(); - sa.Add(samstagDt, item); // item.vertreteroid + if (item.VertretungsDC != null) + { + if (item.VertretungsDC.VertretungsZeitraumVon <= samstagDt && + item.VertretungsDC.VertretungsZeitraumBis >= samstagDt) + { + Dictionary sa = new Dictionary(); + sa.Add(samstagDt, item); // item.vertreteroid - a.Add("VertretungSa", sa); - klientb.Add("EingesetztBeiSa", sa); - - wwk.VertretungSa = item.Vertretung; - wwk.EingesetztBeiSa = item.Kunde; + a.Add("VertretungSa", sa); + klientb.Add("EingesetztBeiSa", sa); - wwk.Sa = WochenanzeigeHinzufügen(samstagDt, item.Wochentagsarbeitszeit); - + wwk.VertretungSa = item.Vertretung; + wwk.EingesetztBeiSa = item.Kunde; + + wwk.Sa = WochenanzeigeHinzufügen(samstagDt, item.Wochentagsarbeitszeit); + + } + else + { + wwk.VertretungSa = ""; + wwk.EingesetztBeiSa = ""; + } + } + else + { + Dictionary sa = new Dictionary(); + sa.Add(samstagDt, item); // item.vertreteroid + + a.Add("VertretungSa", sa); + klientb.Add("EingesetztBeiSa", sa); + + wwk.VertretungSa = item.Vertretung; + wwk.EingesetztBeiSa = item.Kunde; + + wwk.Sa = WochenanzeigeHinzufügen(samstagDt, item.Wochentagsarbeitszeit); + } } else { @@ -658,7 +649,7 @@ namespace BeWo.SchulbegleitenderDienst { if ((int)wa.Key +1 == (int)dayOfWeekDateTime.DayOfWeek) { - return wa.Value; + return wa.Value; } } } @@ -666,12 +657,35 @@ namespace BeWo.SchulbegleitenderDienst return ""; } - private SchulbegleitenderDienst Vertretungsgedoense(SchulbegleitenderDienst xyc, VertretungsItem item,int i) + private SchulbegleitenderDienst Vertretungsgedoense(SchulbegleitenderDienst xyc, VertretungsListeItemsDC item,int i) { - if (item.Vertretung.VertretungsZeitraumVon != item.Vertretung.VertretungsZeitraumBis) - 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"); + 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; @@ -679,65 +693,47 @@ namespace BeWo.SchulbegleitenderDienst xyc.Vertretung = item.VertretenderMitarbeiter; xyc.IsKunde = i; - + xyc.Beschreibung = item.Vertretung.Notice; return xyc; } - private SchulbegleitenderDienst CreateSchulbegleitenderDienst(VertretungsItem item, int y) + private SchulbegleitenderDienst CreateSchulbegleitenderDienst(VertretungsListeItemsDC item, int y) { SchulbegleitenderDienst xyc = new SchulbegleitenderDienst() { KrankheitsZeitraum = item.Krankheitszeitraum, KrankerMitarbeiter = item.EmployeeName, - AbwesenheitsKategorie = item.Abwesenheitskategorie, KrankheitsMeldung = item.Krankheitsmeldung, IsMitarbeiter = y, - Arbeitszeit = item.Worktime, - EndD = item.Absencetime.End.Value, - StartD = item.Absencetime.Start.Value, - Wochentagsarbeitszeit = item.Wochentagsarbeitszeit, - + 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; } - private VertretungsItem CreateVertretungsitem() - { - VertretungsItem item = new VertretungsItem() - { - Worktime = "", - EmployeeName = "", - CustomerName = new List(), - Krankheitszeitraum = "", - Abwesenheitskategorie = new AbsenceReasonDC(), - VertretenderMitarbeiter = "", - Krankheitsmeldung = new DateTime(), - Absencetime = new AbsenceTimeDC(), - VertetenderMit = 0, - EmployeeOid = 0, - CustomerOid = new List(), - Wochentagsarbeitszeit = new Dictionary(), - Customer = new Dictionary() - }; - - return item; - } - //--- - - //################################ Mitarbeiter DatePicker Von - Bis Abfrage Kleinen Bug endeckt ################################ - + #region Mitarbeiter Vertretungs Datum von - bis - - // hier ist eine abfrage noch fehlerhaft (hier und Klient) + private void MVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) { var dt = (DateTime)e.NewValue; - if (dt > MVDatepickerBis.DateTime) + if (dt >= MVDatepickerBis.DateTime) { MVDatepickerBis.DateTime = dt; } @@ -748,25 +744,21 @@ namespace BeWo.SchulbegleitenderDienst var dt = (DateTime)e.NewValue; - if(dt < MVDatepickerVon.DateTime) { + if(dt <= MVDatepickerVon.DateTime) { MVDatepickerVon.DateTime = dt; } } #endregion - //################################################################################################## - - - //################################ Klienten Vertrtung Von - Bis Kleinen Bug endeckt #################################### - + #region Klienten Vertretungs Datum von - bis private void KVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) { var dt = (DateTime)e.NewValue; - if(dt > KVDatepickerBis.DateTime) { + if(dt >= KVDatepickerBis.DateTime) { KVDatepickerBis.DateTime = dt; } } @@ -775,22 +767,38 @@ namespace BeWo.SchulbegleitenderDienst { var dt = (DateTime)e.NewValue; - if(dt < MVDatepickerVon.DateTime) { + if(dt <= MVDatepickerVon.DateTime) { KVDatepickerVon.DateTime = dt; } } #endregion - //################################################################################################### - - //#################### Mitarbeiter Vertretungs Popup gedönse ########################################################## - #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; @@ -816,26 +824,39 @@ namespace BeWo.SchulbegleitenderDienst currentEmployee = e.Data; popupedit_MitarbeiterVertretungSearch.Text = currentEmployee.FirstName + " " + currentEmployee.LastName; - //hole alle mit Service Raus var employeeList = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllActiveEmployeesCompact()); MitarbeiterVertretungsearchview.ObjectList = employeeList; popupedit_MitarbeiterVertretungSearch.Focus(); - } private void Button_addMitarbeiterVertretung_OnClick(object sender, RoutedEventArgs e) { bool xsf = false; - if (!popupedit_MitarbeiterVertretungSearch.Text.Equals("") && ComboBoxMitarbeiterVertretung.SelectedValue != null) //zusätzliche abfragen hinzufügen + if (!popupedit_MitarbeiterVertretungSearch.Text.Equals("") && ComboBoxMitarbeiterVertretung.SelectedValue != null ) //zusätzliche abfragen hinzufügen { - xsf = true; + + if (MVCheckBox.IsChecked.Value ) + { + xsf = true; + } + else + { + if (!MVDatepicker_UhrzeitVon.Text.Equals("") && !MVDatepicker_UhrzeitBis.Text.Equals("")) + { + xsf = true; + } + 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."); } @@ -862,13 +883,37 @@ namespace BeWo.SchulbegleitenderDienst ComboBoxMitarbeiterVertretung.SelectedIndex = -1; MitarbeiterNotice.Text = ""; + MVDatepicker_UhrzeitVon.Text = ""; + MVDatepicker_UhrzeitBis.Text = ""; + } private void SaveEmployeeInVertretung() { AbsenceTimeDC at = new AbsenceTimeDC(); - at.Start = MVDatepickerVon.DateTime.Date; - at.End = MVDatepickerBis.DateTime.Date; + + if(MVCheckBox.IsChecked.Value){ + at.Start = MVDatepickerVon.DateTime.Date; + at.End = MVDatepickerBis.DateTime.Date; + } + else + { + var xvon = MVDatepicker_UhrzeitVon.Text; + DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); + + var yvon = MVDatepicker_UhrzeitBis.Text; + 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; @@ -877,13 +922,31 @@ namespace BeWo.SchulbegleitenderDienst } #endregion - - // ############################ Klienten Vertretungs Popup gedönse ###################################################### - + #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; @@ -928,7 +991,21 @@ namespace BeWo.SchulbegleitenderDienst if (!popupedit_KlientVertretungSearch.Text.Equals("") && ComboBoxKlientVertretung.SelectedValue != null) { - xsf = true; + if (KVCheckBox.IsChecked.Value) + { + xsf = true; + } + else + { + if (!KVDatepicker_UhrzeitVon.Text.Equals("") && !KVDatepicker_UhrzeitBis.Text.Equals("")) + { + xsf = true; + } + else + { + MessageBox.Show("Bitte geben sie eine Start und eine Endzeit ein."); + } + } } else { @@ -945,8 +1022,6 @@ namespace BeWo.SchulbegleitenderDienst GetAllVertretungenOnLoad(Datepicker.DateTime.Date); } - - } private void ClearAllKlientValues() @@ -957,31 +1032,49 @@ namespace BeWo.SchulbegleitenderDienst ComboBoxKlientVertretung.SelectedIndex = -1; KlientNotice.Text = ""; + + KVDatepicker_UhrzeitVon.Text = ""; + KVDatepicker_UhrzeitBis.Text = ""; } private void SaveKlientInVertretung() { AbsenceTimeDC at = new AbsenceTimeDC(); - at.Start = KVDatepickerVon.DateTime.Date; - at.End = KVDatepickerBis.DateTime.Date; + + if (KVCheckBox.IsChecked.Value) + { + at.Start = KVDatepickerVon.DateTime.Date; + at.End = KVDatepickerBis.DateTime.Date; + } + else + { + var xvon = KVDatepicker_UhrzeitVon.Text; + DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); + + var yvon = KVDatepicker_UhrzeitBis.Text; + 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 Listener ########################### - //Fertig private void Datepicker_OnEditValueChanged(object sender, EditValueChangedEventArgs e) { var dt = (DateTime)e.NewValue; @@ -989,40 +1082,46 @@ namespace BeWo.SchulbegleitenderDienst 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); + GetAllVertrungenFromWeekRange(startdt,enddt); + + RenameColumnHeader(dt); Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); } - GetAllVertretungenOnLoad(dt); + } - //Fertig + //Fertig Bug Button anclickbar obwohl nicht sichtbar private void KlientenWochenAnzeigeSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e) { //Es gibt noch probleme -> Button anclickbar obwohl nicht sichtbar //Rufe hier ein Neues Fenster auf das VErschiedenste Settings bearbeitet var a = (Wochenansichten)GridDataControlKlientenWochenansicht.SelectedItem; - //var tag = GridDataControlKlientenWochenansicht.CurrentColumn.FieldName; - + var tag = GridDataControlKlientenWochenansicht.CurrentColumn.FieldName; - //VertretungDC vertretung = new VertretungDC(); - //foreach (var vert in a.vertretungsWoche) - //{ - // if (vert.Key.Equals(tag)) - // { - // foreach (var val in vert.Value) - // { - // vertretung = val.Value.VertretungsDC; - // } - // } - //} + 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("")) @@ -1030,7 +1129,7 @@ namespace BeWo.SchulbegleitenderDienst //if(vertretung.EmployeeOid != 0){ if (_view == null) { - _view = new SchulbegleitenderDienstBearbeitungsView(1); + _view = new SchulbegleitenderDienstBearbeitungsView(1,absenceTime.Start,absenceTime.End); _view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); _view.ShowDialog(); @@ -1038,7 +1137,7 @@ namespace BeWo.SchulbegleitenderDienst else { _view.Close(); - _view = new SchulbegleitenderDienstBearbeitungsView(1); + _view = new SchulbegleitenderDienstBearbeitungsView(1, absenceTime.Start, absenceTime.End); _view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); _view.ShowDialog(); @@ -1065,7 +1164,7 @@ namespace BeWo.SchulbegleitenderDienst if (_view == null) { - _view = new SchulbegleitenderDienstBearbeitungsView(1); + _view = new SchulbegleitenderDienstBearbeitungsView(1,a.StartD,a.EndD); _view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); _view.ShowDialog(); @@ -1073,7 +1172,7 @@ namespace BeWo.SchulbegleitenderDienst else { _view.Close(); - _view = new SchulbegleitenderDienstBearbeitungsView(1); + _view = new SchulbegleitenderDienstBearbeitungsView(1,a.StartD,a.EndD); _view.RaiseCustomEvent += new EventHandler(newWindow_RaiseCustomEvent); _view.ShowDialog(); @@ -1087,21 +1186,19 @@ namespace BeWo.SchulbegleitenderDienst } - //Fertig private void newWindow_RaiseCustomEvent(object sender, CustomEventArgs e) { if (GridDataControlTagesansicht.Visibility == Visibility.Visible) { - UpdateMitarbeiterToVertretung(e.Message); + UpdateMitarbeiterToVertretung(e.Message,e.StartDate,e.EndDate); } else if (GridDataControlKlientenWochenansicht.Visibility == Visibility.Visible) { - UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Message); + UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Message,e.StartDate,e.EndDate); } else { _view.Close(); - //MessageBox.Show("Not yet implemented"); } } @@ -1110,7 +1207,7 @@ namespace BeWo.SchulbegleitenderDienst UpdateKlientToVertretungMitarbeiterWochenansicht(e.Message); } - private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee) + private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee,DateTime? startDate, DateTime? endDate) { var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; @@ -1118,8 +1215,8 @@ namespace BeWo.SchulbegleitenderDienst { CustomerOid = a.Klientoid, EmployeeOid = a.Mitarbeiteroid, - VertretungsZeitraumVon = a.StartD, - VertretungsZeitraumBis = a.EndD, + VertretungsZeitraumVon = startDate.Value, + VertretungsZeitraumBis = endDate.Value, AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, VertretenderMitarbeiterOid = employee.EmployeeOid, Notice = a.Beschreibung @@ -1158,7 +1255,7 @@ namespace BeWo.SchulbegleitenderDienst } - private void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee) + private void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate) { var a = (Wochenansichten) GridDataControlKlientenWochenansicht.SelectedItem; @@ -1174,27 +1271,44 @@ namespace BeWo.SchulbegleitenderDienst { CustomerOid = item.Value.Klientoid, AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value, - VertretungsZeitraumVon = item.Key, - VertretungsZeitraumBis = item.Key, + 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.VertretungsZeitraumVon = item.Value.VertretungsDC.VertretungsZeitraumVon; vert.VertretungsZeitraumBis = item.Value.VertretungsDC.VertretungsZeitraumBis; ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert)); } else - { + { + + + ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert)); } + + } _view.Close(); @@ -1204,7 +1318,6 @@ namespace BeWo.SchulbegleitenderDienst } } - //wird zurzeit nicht genutzt private void UpdateKlientToVertretungMitarbeiterWochenansicht(CompactCustomerDC customer) { @@ -1266,9 +1379,6 @@ namespace BeWo.SchulbegleitenderDienst //zudem müssen alle anderen mitarbeiter auch in die Liste } - - //################### Kontext Menue bereich ############################### - private void DataViewBase_OnShowGridMenu(object sender, GridMenuEventArgs e) { if (GridDataControlTagesansicht.Visibility == Visibility.Visible) @@ -1353,8 +1463,7 @@ namespace BeWo.SchulbegleitenderDienst } private void Kundeninfo_OnClick(object sender, RoutedEventArgs e) - { - + { var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; if(a.Kunde != null){ @@ -1408,7 +1517,6 @@ namespace BeWo.SchulbegleitenderDienst { var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - if (a.KrankerMitarbeiter != null) { if (!a.KrankerMitarbeiter.Equals("")) @@ -1468,7 +1576,6 @@ namespace BeWo.SchulbegleitenderDienst { var a = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - if (a.Vertretung != null) { if (!a.Vertretung.Equals("")) @@ -1524,7 +1631,7 @@ namespace BeWo.SchulbegleitenderDienst } } - // Fertig // Zurzeit nur für KlientenWochenansicht + // Zurzeit nur für KlientenWochenansicht private void MitarbeiterVertretunginfoWochenanzeige_OnClick(object sender, RoutedEventArgs e) { var x = (Wochenansichten)GridDataControlKlientenWochenansicht.SelectedItem; @@ -1591,13 +1698,10 @@ namespace BeWo.SchulbegleitenderDienst { if (MessageBox.Show("Möchten Sie die Vertretung wirklich löschen?", "Vertretung löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { - //get oid from vertretung var a = (SchulbegleitenderDienst) GridDataControlTagesansicht.SelectedItem; - - // delet vertretung from oid + VertretungDC vert = new VertretungDC(); - if (a.VertretungsDC != null) { vert = a.VertretungsDC; @@ -1625,8 +1729,7 @@ namespace BeWo.SchulbegleitenderDienst if (item.Key != null) { if (!item.Value.Vertretung.Equals("")) - { - // ggf die Krankmeldung mit Löschen + { ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(item.Value.VertretungsDC.VertretungOid.Value)); GetAllVertretungenOnLoad(Datepicker.DateTime.Date); @@ -1651,7 +1754,6 @@ namespace BeWo.SchulbegleitenderDienst VertretungDC vert = new VertretungDC(); - if (a.VertretungsDC != null) { vert = a.VertretungsDC; @@ -1694,10 +1796,8 @@ namespace BeWo.SchulbegleitenderDienst var ab = (SchulbegleitenderDienst)GridDataControlTagesansicht.SelectedItem; - ab.AbsenceTimeDC.Start = startZeit; - ab.AbsenceTimeDC.End = endZeit; - + ab.AbsenceTimeDC.End = endZeit; List a = new List(); @@ -1708,6 +1808,7 @@ namespace BeWo.SchulbegleitenderDienst GetAllVertretungenOnLoad(Datepicker.DateTime.Date); } + //Arbeiten verrichten private void GridViewBase_OnRowUpdated(object sender, RowEventArgs e) { var a = (SchulbegleitenderDienst) GridDataControlTagesansicht.SelectedItem; @@ -1725,13 +1826,18 @@ namespace BeWo.SchulbegleitenderDienst { CustomerOid = a.Klientoid, EmployeeOid = a.Mitarbeiteroid, - VertretungsZeitraumVon = a.StartD, - VertretungsZeitraumBis = a.EndD, + AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid, VertretenderMitarbeiterOid = a.Vertreteroid, Notice = a.Beschreibung }; + //if (a.Vertreteroid != 0) + //{ + vert.VertretungsZeitraumVon = a.StartD; + vert.VertretungsZeitraumBis = a.EndD; + //} + if (a.VertretungsDC != null) { @@ -1741,8 +1847,12 @@ namespace BeWo.SchulbegleitenderDienst } else { - //if (a.vertreteroid != 0){ // Abfrage muss genauer bestimmt werden oder komplett wegfallen + // 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 @@ -1754,13 +1864,12 @@ namespace BeWo.SchulbegleitenderDienst GetAllVertretungenOnLoad(Datepicker.DateTime.Date); } - private void ButtonWorkWeekView_Click(object sender, RoutedEventArgs e) { if (GridDataControlKlientenWochenansicht.Visibility != Visibility.Visible && GridDataControlMitarbeiterWochenansicht.Visibility != Visibility.Visible) { - KWWochenAnzeigen(); + KwWochenAnzeigen(); } if (GridDataControlTagesansicht.Visibility == Visibility.Visible) @@ -1780,13 +1889,17 @@ namespace BeWo.SchulbegleitenderDienst } } - private void KWWochenAnzeigen() - { - DateTime dt = DateTime.Parse(Datelbl.Content.ToString()); + private void KwWochenAnzeigen() + { + DateTime dt = Datepicker.DateTime; + + RenameColumnHeader(dt); DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear()); DateTime enddt = startdt.AddDays(5); + GetAllVertrungenFromWeekRange(startdt,enddt); + Datelbl.Content = "KW " + dt.GetIso8601WeekOfYear() + " / " + startdt.ToString("dd.MM.yyyy") + " - " + enddt.ToString("dd.MM.yyyy"); } @@ -1806,19 +1919,108 @@ namespace BeWo.SchulbegleitenderDienst { DateTime dt = Datepicker.DateTime; Datelbl.Content = dt.ToString("dddd dd.MM.yyyy"); + + GetAllVertretungenOnLoad(dt); } private void Aktualisieren_OnClick(object sender, RoutedEventArgs e) { - GetAllVertretungenOnLoad(Datepicker.DateTime); + 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)); + } } + + 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 durch die VertretungsVM ersetzt weden. + public class SchulbegleitenderDienst //---> muss Verbessert werden { public VertretungDC VertretungsDC { get; set; } // ---> Sicherheitsrisiko ?? @@ -1872,8 +2074,8 @@ namespace BeWo.SchulbegleitenderDienst public string MaFrei { get; set; } public string MaKrank { get; set; } public string Kind { get; set; } - - //Fürs WPF Klient + + //Fürs WPF Klient Wochenanzeige public string VertretungMo { get; set; } public string VertretungDi { get; set; } public string VertretungMi { get; set; } @@ -1881,7 +2083,7 @@ namespace BeWo.SchulbegleitenderDienst public string VertretungFr { get; set; } public string VertretungSa { get; set; } - //Fürs WPF Employee + //Fürs WPF Employee Wochenanzeige public string EingesetztBeiMo { get; set; } public string EingesetztBeiDi { get; set; } public string EingesetztBeiMi { get; set; } @@ -1897,6 +2099,7 @@ namespace BeWo.SchulbegleitenderDienst public string Sa { get; set; } public string So { get; set; } + //KlientenView public Dictionary> VertretungsWoche { get; set; } @@ -1905,26 +2108,5 @@ namespace BeWo.SchulbegleitenderDienst } - public class VertretungsItem - { - public string Worktime { get; set; } - public string EmployeeName { get; set; } - public List CustomerName { get; set; } - - public string Krankheitszeitraum { get; set; } - public AbsenceReasonDC Abwesenheitskategorie { get; set; } - public string VertretenderMitarbeiter { get; set; } - public DateTime Krankheitsmeldung { get; set; } - public AbsenceTimeDC Absencetime { get; set; } - public long VertetenderMit { get; set; } - public long EmployeeOid { get; set; } - public List CustomerOid { get; set; } - - public Dictionary Wochentagsarbeitszeit { get; set; } - public Dictionary Customer { get; set; } - - public VertretungDC Vertretung { get; set; } - } - #endregion } diff --git a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml index a7d0e1f92..af6ef548a 100644 --- a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml @@ -4,6 +4,7 @@ xmlns:view="clr-namespace:BeWo.View" xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls" xmlns:search="clr-namespace:BeWo.View.Search" + xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" Title="Vertretung auswählen" Height="600" Width="600" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip" WindowStyle="None" Background="Transparent"> @@ -17,6 +18,7 @@ + @@ -31,7 +33,7 @@ - + @@ -65,11 +67,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + diff --git a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs index fa92e4aea..e3727c740 100644 --- a/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs +++ b/BeWo/SchulbegleitenderDienst/SchulbegleitenderDienstBearbeitungsView.xaml.cs @@ -16,6 +16,7 @@ using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; +using System.Globalization; using System.IO; using System.Text; using System.Windows.Data; @@ -30,6 +31,7 @@ using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using DevExpress.Xpf.Core; +using DevExpress.Xpf.Editors; using DevExpress.XtraPrinting.Native; using DevExpress.XtraPrinting.XamlExport; using Microsoft.Office.Interop.Word; @@ -44,11 +46,27 @@ namespace BeWo.SchulbegleitenderDienst public event EventHandler RaiseKlientCustomEvent; + private DateTime? _startDate; + + private DateTime? _endDate; - public SchulbegleitenderDienstBearbeitungsView(int y) + + + public SchulbegleitenderDienstBearbeitungsView(int y, DateTime? startdate, DateTime? enddate) { InitializeComponent(); + _startDate = startdate; + _endDate = enddate; + + + if (_startDate != null) + KVDatepickerVon.EditValue = _startDate; + + if(_endDate != null) + KVDatepickerBis.EditValue = _endDate; + + //Width = System.Windows.SystemParameters.PrimaryScreenWidth / 2; //Height = System.Windows.SystemParameters.PrimaryScreenWidth / 2; @@ -70,7 +88,7 @@ namespace BeWo.SchulbegleitenderDienst } - private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) + private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { try { @@ -93,8 +111,6 @@ namespace BeWo.SchulbegleitenderDienst } - //Bereich zum auswählen des Mitarbeiters - #region MitarbeiterSearch @@ -148,11 +164,46 @@ namespace BeWo.SchulbegleitenderDienst //Hier den Employee zurück geben if (MitarbeiterVertretungsearchview.SelectedItem != null) { - CompactEmployeeDC x = MitarbeiterVertretungsearchview.SelectedItem; + // Abfragen ob Date Gesestzt ist weil sonst tuts wehh + if (_startDate.HasValue && _endDate.HasValue && KVCheckBox.IsChecked.Value) + { + CompactEmployeeDC x = MitarbeiterVertretungsearchview.SelectedItem; - RaiseCustomEvent(this, new CustomEventArgs(x)); + RaiseCustomEvent(this, new CustomEventArgs(x, _startDate, _endDate)); - Close(); + Close(); + } + else if (!KVDatepickerVon.Text.Equals("") && !KVDatepickerBis.Text.Equals("") && _startDate.HasValue && _endDate.HasValue) + { + + var xvon = KVDatepicker_UhrzeitVon.Text; + DateTime dateTimeStart = DateTime.ParseExact(xvon, "HH:mm", CultureInfo.CurrentCulture); + + var yvon = KVDatepicker_UhrzeitBis.Text; + DateTime dateTimeEnd = DateTime.ParseExact(yvon, "HH:mm", CultureInfo.CurrentCulture); + + DateTime? xVon = new DateTime(_startDate.Value.Year,_startDate.Value.Month,_startDate.Value.Day,dateTimeStart.Hour,dateTimeStart.Minute,dateTimeStart.Second); + + DateTime? xBis = new DateTime(_endDate.Value.Year,_endDate.Value.Month,_endDate.Value.Day,dateTimeEnd.Hour,dateTimeEnd.Minute,dateTimeEnd.Second); + + + CompactEmployeeDC x = MitarbeiterVertretungsearchview.SelectedItem; + + RaiseCustomEvent(this, new CustomEventArgs(x, xVon, xBis)); + + Close(); + } + else + { + if (_startDate.HasValue && _endDate.HasValue && KVDatepickerVon.Text.Equals("") && KVDatepickerBis.Text.Equals("") && !KVCheckBox.IsChecked.Value) + { + MessageBox.Show("Bitte Geben sie eine Start Uhrzeit und eine End Uhrzeit an."); + } + else + { + MessageBox.Show("Bitte Geben sie ein Start und ein Enddatum an."); + } + } } } @@ -163,34 +214,112 @@ namespace BeWo.SchulbegleitenderDienst Close(); } - + //################### Neuer bereich Vertretungs zeitraum bereich/ ganztägig oder nur ein teil #################################### + private void KVCheckBox_OnUnchecked(object sender, RoutedEventArgs e) + { + KVDatepicker_UhrzeitBis.Text = ""; + KVDatepicker_UhrzeitBis.Visibility = Visibility.Visible; + KVLabelUhrzeitVon.Visibility = Visibility.Visible; + + KVDatepicker_UhrzeitVon.Text = ""; + KVDatepicker_UhrzeitVon.Visibility = Visibility.Visible; + KVLabelUhrzeitBis.Visibility = Visibility.Visible; + } + + private void KVCheckBox_OnChecked(object sender, RoutedEventArgs e) + { + KVDatepicker_UhrzeitBis.Visibility = Visibility.Collapsed; + KVLabelUhrzeitVon.Visibility = Visibility.Collapsed; + + KVDatepicker_UhrzeitVon.Visibility = Visibility.Collapsed; + KVLabelUhrzeitBis.Visibility = Visibility.Collapsed; + } + + private void KVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + DateEdit ed = (DateEdit) sender; + + DateTime date = ed.DateTime; + + if (date >= _endDate.Value && date <= _startDate.Value) + { + KVDatepickerVon.DateTime = _endDate.Value; + } + } + + private void KVDatepickerBis_OnEditValueChanged(object sender, EditValueChangedEventArgs e) + { + DateEdit ed = (DateEdit)sender; + + DateTime date = ed.DateTime; + + if (date <= _startDate.Value && date >= _endDate.Value) + { + KVDatepickerVon.DateTime = _startDate.Value; + } + } + + //####################################################################### + } public class CustomEventArgs : EventArgs { - public CustomEventArgs(CompactEmployeeDC s) + private CompactEmployeeDC dc; + private DateTime? startdt; + private DateTime? enddt; + + public CustomEventArgs(CompactEmployeeDC s, DateTime? start, DateTime? ende) { dc = s; + startdt = start; + enddt = ende; } - private CompactEmployeeDC dc; + public CompactEmployeeDC Message { get { return dc; } } + + public DateTime? StartDate + { + get { return startdt; } + } + + public DateTime? EndDate + { + get { return enddt; } + } + } public class CustomKlientEventArgs : EventArgs { private CompactCustomerDC dc; + private DateTime? startdt; + private DateTime? enddt; - public CustomKlientEventArgs(CompactCustomerDC s) + public CustomKlientEventArgs(CompactCustomerDC s, DateTime? start, DateTime? ende) { dc = s; + startdt = start; + enddt = ende; } public CompactCustomerDC Message { get { return dc; } } + + public DateTime? StartDate + { + get{return startdt;} + } + + public DateTime? EndDate + { + get { return enddt; } + } + } } diff --git a/BeWo/ServiceProxy/Generated.cs b/BeWo/ServiceProxy/Generated.cs index 6c108782f..20480e0e3 100644 --- a/BeWo/ServiceProxy/Generated.cs +++ b/BeWo/ServiceProxy/Generated.cs @@ -4171,7 +4171,11 @@ namespace BeWo.ServiceProxy [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/VertretungsListe", ReplyAction="http://tempuri.org/IOperationsService/VertretungsListeResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/VertretungsListeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] - BS.Shared.DataContracts.VertretungsListeDC VertretungsListe(System.DateTime absenceTime); + System.Collections.Generic.List VertretungsListe(System.DateTime datum); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/VertretungsListeWoechentlich", ReplyAction="http://tempuri.org/IOperationsService/VertretungsListeWoechentlichResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/VertretungsListeWoechentlichBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + System.Collections.Generic.List VertretungsListeWoechentlich(System.DateTime start, System.DateTime ende); [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/CreateVertretung", ReplyAction="http://tempuri.org/IOperationsService/CreateVertretungResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/CreateVertretungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] @@ -4905,9 +4909,14 @@ namespace BeWo.ServiceProxy base.Channel.UpdateVertretung(vert); } - public BS.Shared.DataContracts.VertretungsListeDC VertretungsListe(System.DateTime absenceTime) + public System.Collections.Generic.List VertretungsListe(System.DateTime datum) { - return base.Channel.VertretungsListe(absenceTime); + return base.Channel.VertretungsListe(datum); + } + + public System.Collections.Generic.List VertretungsListeWoechentlich(System.DateTime start, System.DateTime ende) + { + return base.Channel.VertretungsListeWoechentlich(start, ende); } public void CreateVertretung(BS.Shared.DataContracts.VertretungDC vertretung) diff --git a/BeWo/View/BargeldkassenView.xaml b/BeWo/View/BargeldkassenView.xaml index ec1f95b86..cbea41dee 100644 --- a/BeWo/View/BargeldkassenView.xaml +++ b/BeWo/View/BargeldkassenView.xaml @@ -229,10 +229,10 @@ - diff --git a/BeWo/View/Detail/AccountingTransactionBookingView.xaml b/BeWo/View/Detail/AccountingTransactionBookingView.xaml index b4fd4b8c1..4041c7344 100644 --- a/BeWo/View/Detail/AccountingTransactionBookingView.xaml +++ b/BeWo/View/Detail/AccountingTransactionBookingView.xaml @@ -69,7 +69,7 @@ -