diff --git a/BeWo/ServiceProxy/Generated.cs b/BeWo/ServiceProxy/Generated.cs index 613778ceb..fe59909df 100644 --- a/BeWo/ServiceProxy/Generated.cs +++ b/BeWo/ServiceProxy/Generated.cs @@ -4629,6 +4629,11 @@ namespace BeWo.ServiceProxy [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/DeleteMobileTestAppointments", ReplyAction="http://tempuri.org/IResourceService/DeleteMobileTestAppointmentsResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/DeleteMobileTestAppointmentsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] void DeleteMobileTestAppointments(); + + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/LoadFilteredAllActiveAppointments", ReplyAction="http://tempuri.org/IResourceService/LoadFilteredAllActiveAppointmentsResponse")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IResourceService/LoadFilteredAllActiveAppointmentsBeWoFaultFau" + + "lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + System.Collections.Generic.List LoadFilteredAllActiveAppointments(long employeeOid, System.DateTime start, System.DateTime end, System.Collections.Generic.List customerOids); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] @@ -4924,6 +4929,11 @@ namespace BeWo.ServiceProxy { base.Channel.DeleteMobileTestAppointments(); } + + public System.Collections.Generic.List LoadFilteredAllActiveAppointments(long employeeOid, System.DateTime start, System.DateTime end, System.Collections.Generic.List customerOids) + { + return base.Channel.LoadFilteredAllActiveAppointments(employeeOid, start, end, customerOids); + } } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] @@ -5067,6 +5077,12 @@ namespace BeWo.ServiceProxy [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/BuildUrlaubsplanerRootObjectBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] BS.Shared.DataContracts.UrlaubsplanerRootDC BuildUrlaubsplanerRootObject(int year, int month); + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetInformationStringForUrlaubsplaner", ReplyAction="http://tempuri.org/IOperationsService/GetInformationStringForUrlaubsplanerRespons" + + "e")] + [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetInformationStringForUrlaubsplanerBeWoFau" + + "ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] + string GetInformationStringForUrlaubsplaner(BS.Shared.DataContracts.UrlaubskontoDC dc, decimal tageUrlaub, decimal tageKrank, bool urlaubVerfallen); + [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/GetFlexibleReportResult", ReplyAction="http://tempuri.org/IOperationsService/GetFlexibleReportResultResponse")] [System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/GetFlexibleReportResultBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")] BS.Shared.DataContracts.FlexibleReportResultDC GetFlexibleReportResult(BS.Shared.DataContracts.FlexibleReportFilterDC filter); @@ -6381,6 +6397,11 @@ namespace BeWo.ServiceProxy return base.Channel.BuildUrlaubsplanerRootObject(year, month); } + public string GetInformationStringForUrlaubsplaner(BS.Shared.DataContracts.UrlaubskontoDC dc, decimal tageUrlaub, decimal tageKrank, bool urlaubVerfallen) + { + return base.Channel.GetInformationStringForUrlaubsplaner(dc, tageUrlaub, tageKrank, urlaubVerfallen); + } + public BS.Shared.DataContracts.FlexibleReportResultDC GetFlexibleReportResult(BS.Shared.DataContracts.FlexibleReportFilterDC filter) { return base.Channel.GetFlexibleReportResult(filter); diff --git a/BeWo/View/Controls/DPCtrlDay.cs b/BeWo/View/Controls/DPCtrlDay.cs index 1875c0141..ac1b1bcf5 100644 --- a/BeWo/View/Controls/DPCtrlDay.cs +++ b/BeWo/View/Controls/DPCtrlDay.cs @@ -48,7 +48,7 @@ namespace BeWo.View.Controls c.Text = string.Empty; c.ToolTip = "Kein gültiger Arbeitsvertrag"; } - else if (info.Reason != null && !info.IsFeiertag && info.DayOfWeek != DayOfWeek.Saturday && info.DayOfWeek != DayOfWeek.Sunday) + else if (info.Reason != null && !info.IsFeiertag /*&& info.DayOfWeek != DayOfWeek.Saturday && info.DayOfWeek != DayOfWeek.Sunday*/) { c.Foreground = Brushes.Red; c.Text = $"{info.Reason.Description[0]}"; diff --git a/BeWo/View/Controls/DPCtrlEmployee.cs b/BeWo/View/Controls/DPCtrlEmployee.cs index 46220129a..0c0f9c407 100644 --- a/BeWo/View/Controls/DPCtrlEmployee.cs +++ b/BeWo/View/Controls/DPCtrlEmployee.cs @@ -50,7 +50,9 @@ namespace BeWo.View.Controls ctrl.Text = ctrl.DisplayMember; - ctrl.ToolTip = new DPCtrlEmployeeTooltip(information.Employee, information.Contracts); + ctrl.ToolTip = new DPCtrlEmployeeTooltip(information.Employee, information.Contracts, information.IsVertretung); + //if (information.IsVertretung) + // ctrl.Path_Notice.Visibility = Visibility.Visible; } else { @@ -107,51 +109,51 @@ namespace BeWo.View.Controls { case 0: return EmployeeInformation.Employee.LastNameFirstName; + //Auskommentieren für nur eine Zeile + case 1: - //case 1: + foreach (var contract in EmployeeInformation.Contracts) + { + sb.Append(contract.EmploymentType?.Name); + sb.Append('/'); + } - // foreach (var contract in EmployeeInformation.Contracts) - // { - // sb.Append(contract.EmploymentType?.Name); - // sb.Append('/'); - // } + sb.Remove(sb.Length - 1, 1); - // sb.Remove(sb.Length - 1, 1); + return sb.ToString(); - // return sb.ToString(); + case 2: - //case 2: + foreach (var contract in EmployeeInformation.Contracts) + { + sb.Append('('); - // foreach (var contract in EmployeeInformation.Contracts) - // { - // sb.Append('('); + if (contract.EntryDate.HasValue) + sb.Append(contract.EntryDate.Value.ToString("dd.MM.yy")); + else + sb.Append("k.A."); - // if (contract.EntryDate.HasValue) - // sb.Append(contract.EntryDate.Value.ToString("dd.MM.yy")); - // else - // sb.Append("k.A."); + sb.Append(" - "); - // sb.Append(" - "); + if (contract.ContractEndDate.HasValue) + sb.Append(contract.ContractEndDate.Value.ToString("dd.MM.yy")); + else + sb.Append("unbefr."); - // if (contract.ContractEndDate.HasValue) - // sb.Append(contract.ContractEndDate.Value.ToString("dd.MM.yy")); - // else - // sb.Append("unbefr."); + sb.Append(')'); - // sb.Append(')'); + sb.Append('/'); + } - // sb.Append('/'); - // } + sb.Remove(sb.Length - 1, 1); - // sb.Remove(sb.Length - 1, 1); - - // return sb.ToString(); + return sb.ToString(); } } else { - return Translator.Translate("Besetzungsstatus"); + return Translator.Translate("Status"); } return null; @@ -165,5 +167,6 @@ namespace BeWo.View.Controls public List Contracts { get; set; } public int Row { get; set; } public bool IsLastRow { get; set; } + public bool IsVertretung { get; set; } } } diff --git a/BeWo/View/Controls/DPCtrlEmployeeTooltip.xaml.cs b/BeWo/View/Controls/DPCtrlEmployeeTooltip.xaml.cs index e36c9e3b1..fe040157e 100644 --- a/BeWo/View/Controls/DPCtrlEmployeeTooltip.xaml.cs +++ b/BeWo/View/Controls/DPCtrlEmployeeTooltip.xaml.cs @@ -16,7 +16,7 @@ namespace BeWo.View.Controls /// public partial class DPCtrlEmployeeTooltip : UserControl { - public DPCtrlEmployeeTooltip(EmployeeDC employeeDC, List contractDCs) + public DPCtrlEmployeeTooltip(EmployeeDC employeeDC, List contractDCs, bool isVertretung) { InitializeComponent(); @@ -28,12 +28,15 @@ namespace BeWo.View.Controls foreach (var contract in contractDCs) { - var sep = new Separator(); + var sep1 = new Separator(); + var sep2 = new Separator(); var txtType1 = new TextBlock(); var txtType2 = new TextBlock(); var txtArbeit1 = new TextBlock(); var txtArbeit2 = new TextBlock(); - + var txtVertretung1 = new TextBlock(); + var txtVertretung2 = new TextBlock(); + txtType1.Text = "Beschäftigungsart:"; txtType2.Text = $"{contract.EmploymentType?.Name}"; @@ -51,12 +54,14 @@ namespace BeWo.View.Controls { txtArbeit2.Text = $"k.A."; } + txtVertretung1.Text = "Vertretung:"; + txtVertretung2.Text = isVertretung ? "Ja" : "Nein"; RootGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); - RootGrid.Children.Add(sep); + RootGrid.Children.Add(sep1); - Grid.SetRow(sep, RootGrid.RowDefinitions.Count - 1); - Grid.SetColumnSpan(sep, 3); + Grid.SetRow(sep1, RootGrid.RowDefinitions.Count - 1); + Grid.SetColumnSpan(sep1, 3); RootGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); RootGrid.Children.Add(txtType1); @@ -73,6 +78,22 @@ namespace BeWo.View.Controls Grid.SetRow(txtArbeit1, RootGrid.RowDefinitions.Count - 1); Grid.SetRow(txtArbeit2, RootGrid.RowDefinitions.Count - 1); Grid.SetColumn(txtArbeit2, 2); + + + RootGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); + RootGrid.Children.Add(sep2); + + Grid.SetRow(sep2, RootGrid.RowDefinitions.Count - 1); + Grid.SetColumnSpan(sep2, 3); + + RootGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); + RootGrid.Children.Add(txtVertretung1); + RootGrid.Children.Add(txtVertretung2); + + Grid.SetRow(txtVertretung1, RootGrid.RowDefinitions.Count - 1); + Grid.SetRow(txtVertretung2, RootGrid.RowDefinitions.Count - 1); + Grid.SetColumn(txtVertretung2, 2); + } } diff --git a/BeWo/View/Controls/DPCtrlSaldo.cs b/BeWo/View/Controls/DPCtrlSaldo.cs index 66b866cc1..7a2f0c520 100644 --- a/BeWo/View/Controls/DPCtrlSaldo.cs +++ b/BeWo/View/Controls/DPCtrlSaldo.cs @@ -30,13 +30,13 @@ namespace BeWo.View.Controls } if (information.Statuszeile) - ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 0, 2); + ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 1, 2); else { if (information.IsLastRow) - ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 0, 1); + ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 1, 1); else - ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 0, 0); + ctrl.BorderBlack.BorderThickness = new Thickness(0, 0, 1, 0); } } } diff --git a/BeWo/View/Controls/DPCtrlSoll.cs b/BeWo/View/Controls/DPCtrlSoll.cs index bdcd7532a..9cd8a8f75 100644 --- a/BeWo/View/Controls/DPCtrlSoll.cs +++ b/BeWo/View/Controls/DPCtrlSoll.cs @@ -1,5 +1,7 @@ -using System; +using BS.Shared.DataContracts; +using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -24,10 +26,12 @@ namespace BeWo.View.Controls { if(information != null) { + Debug.WriteLine("Status: " + information.Statuszeile + " | MA: " + information.EmployeeDC + " | Soll: " + information.SollWert); if (information.Row == 0 && !information.Statuszeile) { ctrl.Text = string.Format("{0:0.00}", information.SollWert); ctrl.ToolTip = "Soll-Wert"; + } if (information.Statuszeile) @@ -62,6 +66,7 @@ namespace BeWo.View.Controls public bool Statuszeile { get; set; } public decimal SollWert { get; set; } public bool IsLastRow { get; set; } + public EmployeeDC EmployeeDC { get; set; } } } diff --git a/BeWo/View/Detail/EmployeeView.xaml b/BeWo/View/Detail/EmployeeView.xaml index eb1aae9bb..cd69f596c 100644 --- a/BeWo/View/Detail/EmployeeView.xaml +++ b/BeWo/View/Detail/EmployeeView.xaml @@ -464,8 +464,8 @@ - - + + diff --git a/BeWo/View/Detail/EmployeeView.xaml.cs b/BeWo/View/Detail/EmployeeView.xaml.cs index 6dbdc3172..e4b693965 100644 --- a/BeWo/View/Detail/EmployeeView.xaml.cs +++ b/BeWo/View/Detail/EmployeeView.xaml.cs @@ -259,7 +259,8 @@ namespace BeWo.View.Detail int restlicheTageImJahr = Convert.ToInt32((new DateTime(ViewModel.LastContract.EntryDate.Value.Year, 12, 31) - ViewModel.LastContract.EntryDate.Value.Date).TotalDays); urlaubstage = CalculateUrlaubstage((DateTime)ViewModel.LastContract.EntryDate, arbeitstage, restlicheTageImJahr, urlaubstage); - //Urlaubskonto: Verbleibende Tage hier auf urlaubstage setzen.. + // Urlaubskonto: Verbleibende Tage hier auf Urlaubstage setzen.. + } } else // Beschäftigungsart sind keine festen Urlaubstage zugeordnet @@ -700,6 +701,18 @@ namespace BeWo.View.Detail contract.EmploymentTypeLeaveDaysVisibility = Visibility.Collapsed; contract.LeaveDaysVisibility = Visibility.Visible; } + + //var index = tabcontrol_contracts.SelectedIndex; + //if(index == tabcontrol_contracts.Items.Count - 1) + // { + // Cache.GetInstance().ClearEmployees(); + // BeWoApp.MainControl.ResetView(UIContext.Employee); + //} + //else + // { + // tabcontrol_contracts.SelectedIndex = tabcontrol_contracts.Items.Count - 1; + // tabcontrol_contracts.SelectedIndex = index; + //} } } } \ No newline at end of file diff --git a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeader.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeader.xaml.cs index 712c1a867..206fc1d37 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeader.xaml.cs +++ b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeader.xaml.cs @@ -118,7 +118,7 @@ namespace BeWo.View.Detail.Report { // Alle Tage in einem Monat if (spanne.Start.Value.Month == spanne.End.Value.Month) - tageUrlaub += Convert.ToInt32((spanne.End.Value.Date - spanne.Start.Value.Date).TotalDays + 1); + tageKrankheit += Convert.ToInt32((spanne.End.Value.Date - spanne.Start.Value.Date).TotalDays + 1); // Tage über mehrere Monate verteilt else { @@ -163,7 +163,7 @@ namespace BeWo.View.Detail.Report } c._EmployeeUrlaubDieserMonat.Text = "Urlaub diesen Monat: " + tageUrlaub + " Tage"; c._EmployeeKrankheitDieserMonat.Text = "Krankheit diesen Monat: " + tageKrankheit + " Tage"; - ((AbwesenheitsEmployeeHeaderTooltip)c.ToolTip).Set(dc.Employee, tageUrlaub, tageKrankheit); + ((AbwesenheitsEmployeeHeaderTooltip)c.ToolTip).Set(dc.Employee, tageUrlaub, tageKrankheit, dc.Month); } } diff --git a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml index cf47450e7..3aea454da 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml +++ b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml @@ -18,6 +18,7 @@ + @@ -33,5 +34,8 @@ + + + diff --git a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml.cs index a1c3d0826..53dea4e62 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml.cs +++ b/BeWo/View/Detail/Report/AbwesenheitsEmployeeHeaderTooltip.xaml.cs @@ -24,7 +24,7 @@ namespace BeWo.View.Detail.Report InitializeComponent(); } - public void Set(EmployeeDC emp, int tageUrlaub, int tageKrankheit) + public void Set(EmployeeDC emp, int tageUrlaub, int tageKrankheit, int month) { var konto = emp.Urlaubskonto; @@ -36,6 +36,11 @@ namespace BeWo.View.Detail.Report _TxtUrlaubsanspruchVorjahr.Text = konto.ResturlaubVorjahrTotal.ToString("0.00") + " Tage"; _TxtTageUrlaub.Text = tageUrlaub.ToString("0.00") + " Tage"; _TxtTageKrank.Text = tageKrankheit.ToString("0.00") + " Tage"; + + if (emp.Urlaubskonto.UrlaubsVerfallsdatum.Month >= month) + _TxtVerfallenerUrlaub.Text = "0.00 Tage"; + else + _TxtVerfallenerUrlaub.Text = konto.VerfallenerUrlaub.ToString("0.00") + " Tage"; } } } diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs index eb642f6d5..39fa50301 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs +++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs @@ -61,11 +61,6 @@ namespace BeWo.View.Detail.Report public int SelectedMonth { get; set; } public int SelectedYear { get; set; } - //public List Abwesenheiten { get; set; } - //public List Feiertage { get; set; } - //public List GeschenkteUrlaubstage { get; set; } - - public AbwesenheitstabelleView() { InitializeComponent(); @@ -96,11 +91,6 @@ namespace BeWo.View.Detail.Report UrlaubsplanerRootObj = ServiceFacade.DoOperationsServiceSync(s => s.BuildUrlaubsplanerRootObject(SelectedYear, SelectedMonth)); - //Feiertage = ServiceFacade.DoOperationsServiceSync(s => s.GetDefaultFeiertageForYear(SelectedYear)).Where(f => f.Datum.Month == SelectedMonth).ToList(); - //Abwesenheiten = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllEmployeeAbsenceTimesForMonth(SelectedYear, SelectedMonth)); - //GeschenkteUrlaubstage = ServiceFacade.DoEmployeeServiceSync(s => s.GetGeschenkteUrlaubstageForYear(SelectedYear)); - - UpdateScheduler(); ColorizeFeiertage(); } @@ -339,6 +329,8 @@ namespace BeWo.View.Detail.Report AbsenceTimes = UrlaubsplanerRootObj.Abwesenheiten.Where(a => a.EmployeeOid == employee.EmployeeOid).ToList(), GeschenkteUrlaubstage = UrlaubsplanerRootObj.GeschenkteUrlaubstage.Where(u => u.Employee == employee.EmployeeOid).ToList() }; + infoDC.TageUrlaub = CountUrlaubstage(infoDC); + infoDC.TageKrankheit = CountKrankheitstage(infoDC); var resource = _SchedulerStorage.CreateResource(employee.EmployeeOid.Value.ToString()); @@ -417,11 +409,154 @@ namespace BeWo.View.Detail.Report { var temp = (VerticalHeaderControl)sender; var c = (VisualResourceHeaderContent)temp.Content; - var info = c.CustomFields["AbwesenheitsInformationDC"]; //Hierin steht das AbwesenheitsInformationDC, aber man kommt nicht dran - + var info = c.CustomFields["AbwesenheitsInformationDC"] as AbwesenheitsInformationDC; //Hierin steht das AbwesenheitsInformationDC, aber man kommt nicht dran + var urlaubskonto = info.Employee.Urlaubskonto; + + bool urlaubVerfallen = info.Month >= urlaubskonto.UrlaubsVerfallsdatum.Month ? true : false; + + string xamlstring = ServiceFacade.DoOperationsServiceSync(s => s.GetInformationStringForUrlaubsplaner(urlaubskonto, info.TageUrlaub, info.TageKrankheit, urlaubVerfallen)); + var control = new InformationView(); + control.SetXaml(xamlstring); + + var beWoWindow = new BeWoWindow(); + + control.ButtonCloseClicked += () => beWoWindow.Close(); + + beWoWindow.Height = 100; + beWoWindow.Width = 400; + beWoWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner; + beWoWindow.GroupBoxContent = control; + beWoWindow.Owner = BeWoApp.CurrentBeWo.MainWindow; + beWoWindow.rootGroupBox.Header = "Infos zu " + info.Employee.LastNameFirstName; + beWoWindow.ShowDialog(); } - + private decimal CountUrlaubstage(AbwesenheitsInformationDC info) + { + decimal tageUrlaub = 0; + + List urlaubstage = new List(); + + foreach (var tag in info.AbsenceTimes) + { + if (tag.Reason.Description.Equals("Urlaub")) + urlaubstage.Add(tag); + } + + if (urlaubstage.Count > 0) + { + foreach (var spanne in urlaubstage) + { + if (spanne.End == null) + spanne.End = new DateTime(info.Year, info.Month, DateTime.DaysInMonth(info.Year, info.Month)); + // Nur ein Tag + if (spanne.Start == spanne.End) + tageUrlaub++; + // Mehrere Tage + else + { + // Alle Tage in einem Monat + if (spanne.Start.Value.Month == spanne.End.Value.Month) + tageUrlaub += Convert.ToInt32((spanne.End.Value.Date - spanne.Start.Value.Date).TotalDays + 1); + // Tage über Monate verteilt + else + { + DateTime? tempStart = null; + DateTime? tempEnd = null; + // Prüfen, ob Start und/oder Ende nicht dem ausgewählten Monat entspricht + if (spanne.Start.Value.Month != info.Month) + { + tempStart = new DateTime(info.Year, info.Month, 1); + } + if (spanne.End.Value.Month != info.Month) + { + tempEnd = new DateTime(info.Year, info.Month, 1).AddMonths(1).AddTicks(-1); + } + + if (tempStart != null && tempEnd != null) + tageUrlaub += Convert.ToInt32((tempEnd.Value.Date - tempStart.Value.Date).TotalDays + 1); + else if (tempStart != null && tempEnd == null) + tageUrlaub += Convert.ToInt32((spanne.End.Value.Date - tempStart.Value.Date).TotalDays + 1); + else if (tempStart == null && tempEnd != null) + tageUrlaub += Convert.ToInt32((tempEnd.Value.Date - spanne.Start.Value.Date).TotalDays + 1); + } + } + } + } + + return tageUrlaub; + } + private decimal CountKrankheitstage(AbwesenheitsInformationDC info) + { + int tageKrankheit = 0; + List krankheitstage = new List(); + + foreach (var tag in info.AbsenceTimes) + { + if (tag.Reason.Description.Equals("Krankheit")) + krankheitstage.Add(tag); + } + if (krankheitstage.Count > 0) + { + foreach (var spanne in krankheitstage) + { + // Nur ein Tag + if (spanne.Start == spanne.End) + tageKrankheit++; + // Mehrere Tage + else + { + // Wenn Krankheit ein Enddatum hat + if (spanne.End != null) + { + // Alle Tage in einem Monat + if (spanne.Start.Value.Month == spanne.End.Value.Month) + tageKrankheit += Convert.ToInt32((spanne.End.Value.Date - spanne.Start.Value.Date).TotalDays + 1); + // Tage über mehrere Monate verteilt + else + { + // Prüfen, ob Start und/oder Ende nicht dem ausgewählten Monat entspricht + DateTime? tempStart = null; + DateTime? tempEnd = null; + if (spanne.Start.Value.Month != info.Month) + { + tempStart = new DateTime(info.Year, info.Month, 1); + } + if (spanne.End.Value.Month != info.Month) + { + tempEnd = new DateTime(info.Year, info.Month, 1).AddMonths(1).AddTicks(-1); + } + + if (tempStart != null && tempEnd != null) + tageKrankheit += Convert.ToInt32((tempEnd.Value.Date - tempStart.Value.Date).TotalDays + 1); + else if (tempStart != null && tempEnd == null) + tageKrankheit += Convert.ToInt32((spanne.End.Value.Date - tempStart.Value.Date).TotalDays + 1); + else if (tempStart == null && tempEnd != null) + tageKrankheit += Convert.ToInt32((tempEnd.Value.Date - spanne.Start.Value.Date).TotalDays + 1); + } + } + // Wenn Krankheit kein Enddatum gesetzt wurde + else + { + if (spanne.Start.Value.Month != info.Month) + { + DateTime tempEnd = new DateTime(info.Year, info.Month, DateTime.DaysInMonth(info.Year, info.Month)); + DateTime tempStart = new DateTime(info.Year, info.Month, 1); ; + + tageKrankheit += Convert.ToInt32((tempEnd.Date - tempStart.Date).TotalDays + 1); + } + else + { + DateTime tempEnd = new DateTime(spanne.Start.Value.Year, spanne.Start.Value.Month, DateTime.DaysInMonth(spanne.Start.Value.Year, spanne.Start.Value.Month)); + tageKrankheit += Convert.ToInt32((tempEnd.Date - spanne.Start.Value.Date).TotalDays + 1); + } + } + } + } + } + + return tageKrankheit; + } } public class MouseHandlerService : MouseHandlerServiceWrapper diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml b/BeWo/View/Detail/Report/DienstplanerView.xaml index 51fc0c961..b0ee262b6 100644 --- a/BeWo/View/Detail/Report/DienstplanerView.xaml +++ b/BeWo/View/Detail/Report/DienstplanerView.xaml @@ -238,7 +238,7 @@