diff --git a/BeWo/BeWo.csproj b/BeWo/BeWo.csproj index 8e5bddff6..e721c24a9 100644 --- a/BeWo/BeWo.csproj +++ b/BeWo/BeWo.csproj @@ -99,6 +99,7 @@ ..\Lib\Blacklight.Wpf.Controls.dll + @@ -126,6 +127,7 @@ + @@ -807,6 +809,7 @@ ProxyLoginView.xaml + diff --git a/BeWo/Scheduler/Converter/ToolTipTimeConverter.cs b/BeWo/Scheduler/Converter/ToolTipTimeConverter.cs new file mode 100644 index 000000000..9bcd8d5d8 --- /dev/null +++ b/BeWo/Scheduler/Converter/ToolTipTimeConverter.cs @@ -0,0 +1,73 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using BeWo.Scheduler.ViewModel; +using BS.Shared.Extensions; +using DevExpress.Xpf.Scheduler.Drawing; +using DevExpress.XtraScheduler; + +namespace BeWo.Scheduler.Converter +{ + public class ToolTipTimeConverter : IMultiValueConverter + { + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + /* + * values[0] -> VisualAppointmentViewInfo + * values[1] -> Intervall + */ + if(values is null || values.Length != 2) + { + return null; + } + + if(values[0] is VisualAppointmentViewInfo visualAppointmentViewInfo && values[1] is TimeInterval timeInterval) + { + if(visualAppointmentViewInfo.CustomViewInfo is CustomFieldCollection customFieldCollection && customFieldCollection[nameof(CustomFieldStorage)] is CustomFieldStorage customFieldStorage) + { + var isAbsenceTime = customFieldStorage.IsAbsenceTime; + var isTask = customFieldStorage.IsTask; + + // Bei Abwesenheit einen Tag abziehen + var start = visualAppointmentViewInfo.AppointmentStart; + var end = visualAppointmentViewInfo.AppointmentEnd; // Jahr ist 9999, wenn es in der Datenbank null ist + + var noEnd = end.Year == 9999; + + if(isAbsenceTime) + { + // Ende kann null sein + // Selber Tag? Hat Ende? + if(noEnd) + { + return start.GetIntervalDescription(end); + } + + // Bei ganztägigen Abwesenheiten + if(start.IsTimeZero() && end.IsTimeZero() && end.AddDays(-1) > start) + { + end = end.AddDays(-1); + } + + return start.GetIntervalDescription(end); + } + + if(isTask) + { + return noEnd ? string.Empty : $"bis {end:dd.MM.yyyy HH:mm}"; + } + + return start.GetIntervalDescription(end).TrimStart(); + } + } + + return null; + } + + public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } + +} \ No newline at end of file diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml b/BeWo/Scheduler/View/NewSchedulerView.xaml index f871a3633..287cc4288 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml @@ -28,12 +28,11 @@ + - - @@ -67,7 +66,8 @@ - @@ -147,7 +147,6 @@ - @@ -190,8 +189,9 @@ - + - - - - - - + + + + + + + + + + diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs index 669c43cc9..4b6f1a9d7 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs @@ -2002,6 +2002,8 @@ namespace BeWo.Scheduler.View private bool _ReloadingViewModel; private DateTime? _LastFetchingDateTime; + public TimeInterval FetchingInterval { get; set; } + private void ReloadVM(bool shouldForceReload = false) { if(_ReloadingViewModel) @@ -2021,7 +2023,7 @@ namespace BeWo.Scheduler.View var start = range.Start; var end = range.End; - var newFetchingInterval = new TimeInterval(start - FetchPadding, end + FetchPadding); + FetchingInterval = new TimeInterval(start - FetchPadding, end + FetchPadding); var selectedEmployeeOids = SelectedEmployees.Select(s => s.EmployeeOid).ToList(); var selectedCustomerOids = SelectedCustomers.Select(s => s.CustomerOid).ToList(); @@ -2033,13 +2035,13 @@ namespace BeWo.Scheduler.View var showOnlyMyAppointments = ZeigeNurMeineTermine; var showAbsenceTimes = AbwesenheitenEinAusCheckBox.IsChecked != null && AbwesenheitenEinAusCheckBox.IsChecked.Value; - if(!shouldForceReload && newFetchingInterval.Equals(_LastFetchedInterval)) + if(!shouldForceReload && FetchingInterval.Equals(_LastFetchedInterval)) { _ReloadingViewModel = false; return; } - _LastFetchedInterval = newFetchingInterval; + _LastFetchedInterval = FetchingInterval; ReloadAppointmentViewModel(start, end, selectedEmployeeOids, selectedCustomerOids, selectedResourceOids, employeesOnly, customersOnly, resourcesOnly, onlyPrivateAppointments, showOnlyMyAppointments, showAbsenceTimes); } @@ -2906,7 +2908,7 @@ namespace BeWo.Scheduler.View { var customFields = (CustomFieldCollection) value; - if(customFields == null) + if(customFields is null) { return string.Empty; } @@ -2919,7 +2921,7 @@ namespace BeWo.Scheduler.View var tooltip = string.Empty; var seperator = "; "; - if(parameter == null) + if(parameter is null) { return tooltip; } diff --git a/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs b/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs index a51b94dea..569c65ce5 100644 --- a/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs +++ b/BeWo/Scheduler/ViewModel/CustomFieldStorage.cs @@ -31,12 +31,24 @@ namespace BeWo.Scheduler.ViewModel } } - if(IsAbsenceTime && _AbsenceTimeStart.HasValue) + if(!IsAbsenceTime || !_AbsenceTimeStart.HasValue) { - result += _AbsenceTimeStart.Value.GetIntervalDescription(_AbsenceTimeEnd); + return result; } - return result; + var absenceTimeEnd = _AbsenceTimeEnd; + + if(absenceTimeEnd.HasValue) + { + var absenceTimeStart = _AbsenceTimeStart.Value; + + if(absenceTimeStart.IsTimeZero() && absenceTimeEnd.Value.IsTimeZero() && absenceTimeEnd.Value.AddDays(-1) > absenceTimeStart) + { + absenceTimeEnd = absenceTimeEnd.Value.AddDays(-1); + } + } + + return result += _AbsenceTimeStart.Value.GetIntervalDescription(absenceTimeEnd); } } diff --git a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs index 76277d512..33c7bc663 100644 --- a/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs +++ b/BeWo/Scheduler/ViewModel/NewSchedulerViewModel.cs @@ -24,14 +24,16 @@ namespace BeWo.Scheduler.ViewModel get => _ActiveAppointmentViewModel; set - { - if(value != null) + { + if(value is null) { - _ActiveAppointmentViewModel = value; - - ViewModelChanged?.Invoke(this, new EventArgs(value)); + return; } - } + + _ActiveAppointmentViewModel = value; + + ViewModelChanged?.Invoke(this, new EventArgs(value)); + } } public AbstractAppointmentEditForm GetEditAppointmentForm(DevExpress.Xpf.Scheduler.SchedulerControl control, Appointment appointment) @@ -53,7 +55,7 @@ namespace BeWo.Scheduler.ViewModel public SchedulerSettings GetActiveSettings() { - return ActiveAppointmentViewModel == null ? null : SchedulerSettings ?? ActiveAppointmentViewModel.GetDefaultSchedulerSettings(); + return ActiveAppointmentViewModel is null ? null : SchedulerSettings ?? ActiveAppointmentViewModel.GetDefaultSchedulerSettings(); } public IEnumerable ConvertAbsenceTimesToAppointments(IEnumerable pAbsenceTimes, DateTime pIntervalEnd, List allEmployees, List allCustomers) @@ -79,8 +81,36 @@ namespace BeWo.Scheduler.ViewModel subject += $" ({dc.SimpleDescription})"; } - var absenceTimeEnd = abwesenheit.End?.AddTicks(1); - + var absenceTimeEnd = abwesenheit.End; + + // Ist nicht genau + if(abwesenheit.End.HasValue) + { + var allDay = abwesenheit.Start.Value.Hour == 0 && abwesenheit.Start.Value.Minute == 0 && abwesenheit.Start.Value.Second == 0 && + abwesenheit.End.Value.Hour == 0 && abwesenheit.End.Value.Minute == 0 && abwesenheit.End.Value.Second == 0; + + var end = abwesenheit.End.Value; + var isMultipleDayAbsenceTime = abwesenheit.End is null || abwesenheit.Start.Value.Date != abwesenheit.End.Value.Date; + + if(isMultipleDayAbsenceTime && allDay) + { + absenceTimeEnd = end.AddDays(1); + } + + // Wenn die Abwesenheit über mehrere Tage geht, muss ein Tag draufaddiert werden + + + + //if(end.Hour == 0 && end.Minute == 0 && end.Second == 0) + //{ + // absenceTimeEnd = end.AddSeconds(1); + //} + //else + //{ + // absenceTimeEnd = end.AddTicks(1); + //} + } + if(originator is null) { originator = BeWoApp.CompactLoggedOnEmployee; @@ -89,8 +119,8 @@ namespace BeWo.Scheduler.ViewModel return new SchedulerAppointmentVM( true, subject, - abwesenheit.Start.Value, - abwesenheit.End ?? pIntervalEnd, + abwesenheit.Start.Value, + absenceTimeEnd ?? pIntervalEnd, originator, abwesenheit.Start, absenceTimeEnd, diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user index bcc1a01ff..359c270c6 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj.user @@ -36,7 +36,7 @@ False - http://localhost/BeWoPlanerMobil/Main/Main + http://localhost/BeWoPlanerMobil/Login/demo diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs index 6af353f36..88ffb03ef 100644 --- a/BeWoPlanerMobil/Controllers/CustomerController.cs +++ b/BeWoPlanerMobil/Controllers/CustomerController.cs @@ -401,7 +401,6 @@ namespace BeWoPlanerMobil.Controllers [HttpPost] public ActionResult DeleteMedListFromHistoryList(FormCollection formCollection) { - // ToDo: Nachfragen, ob gelöscht werden soll if(long.TryParse(formCollection["med-list-oid"], out var medListOid)) { Model.SelectedReportType = CustomerReportType.Historie; diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index 882c8ac54..98fd35b69 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -949,6 +949,12 @@ namespace BeWoPlanerMobil.Controllers int.TryParse(collection[FormCollectionConstants.DurationKey], out dauer); } + // Wenn die Dauer in Stunden ist + if(Model.SelectedDurationUnit == "Stunden" || Model.EinheitZeiterfassung == 1) + { + dauer *= 60; + } + var doku2 = collection[FormCollectionConstants.Dokumentation2Key]?.RemoveUppercaseEsszett(); var doku3 = collection[FormCollectionConstants.Dokumentation3Key]?.RemoveUppercaseEsszett(); var doku4 = collection[FormCollectionConstants.Dokumentation4Key]?.RemoveUppercaseEsszett(); diff --git a/BeWoPlanerMobil/Controllers/ReportViewerController.cs b/BeWoPlanerMobil/Controllers/ReportViewerController.cs index 18d186c6d..6e5ec1925 100644 --- a/BeWoPlanerMobil/Controllers/ReportViewerController.cs +++ b/BeWoPlanerMobil/Controllers/ReportViewerController.cs @@ -47,6 +47,11 @@ namespace BeWoPlanerMobil.Controllers public ActionResult ReportViewer() { + if(Model is null) + { + return Logout(); + } + Model.Report = null; var month = DateTime.Today.Month; diff --git a/BeWoPlanerMobil/Models/MainModel.cs b/BeWoPlanerMobil/Models/MainModel.cs index 5e3ab51fa..9f12c8ae0 100644 --- a/BeWoPlanerMobil/Models/MainModel.cs +++ b/BeWoPlanerMobil/Models/MainModel.cs @@ -246,7 +246,7 @@ namespace BeWoPlanerMobil.Models var allCostBearerRelations = new List {new SupportConceptListObject("Hilfeplan auswählen", "", "-1", false, false), new SupportConceptListObject("Ohne Hilfeplan", "", "-2", false, false) }; foreach(var sc in SupportConcepts.OrderBy(sc => sc.Customer.LastName)) { - allCostBearerRelations.AddRange(sc.CostBearerRelations.Where(w => ShowExpiredSupportConcepts || w.EndDate == null || w.EndDate.Value >= DateTime.Now.Date).Select( + allCostBearerRelations.AddRange(sc.CostBearerRelations.Where(w => ShowExpiredSupportConcepts || w.EndDate is null || w.EndDate.Value >= DateTime.Now.Date).Select( cb => new SupportConceptListObject( $"{sc.Customer.LastNameFirstName} {(sc.Customer.DateOfBirth.HasValue ? "*" + sc.Customer.DateOfBirth.Value.ToString("dd.MM.yyyy") : string.Empty)}", $"{cb.StartDate?.ToShortDateString().Remove(6, 2) ?? string.Empty}-{cb.EndDate?.ToShortDateString().Remove(6, 2) ?? string.Empty} {cb.CostBearer.Name}{GetIsNotApproved(cb)}", diff --git a/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js b/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js index 89b33cc19..2989f6492 100644 --- a/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js +++ b/BeWoPlanerMobil/Scripts/utils/service-record-time-calc.js @@ -84,6 +84,7 @@ function onDurationChange(startTimeId, endTimeId, startDateId, endDateId, durati } } +// ToDo: Erst Dauer, dann Start- oder Endzeit führt dazu, dass die Dauer in Stunden benutzt wird! function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTimeId, durationId, hoursMinutesDropdownBtnId, startDatePickerId, endDatePickerId, isInvokedByStartElement, isInvokedByEndElement) { var startTime = $("#" + startTimeId).val(); var endTime = $("#" + endTimeId).val(); @@ -98,23 +99,30 @@ function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTime isInMin = hoursMinutesDropdownButton.text().replaceAll(/\s/g, "") === "Minuten"; } + logInfo2("calculateDuration aufgerufen:\r\n" + + "isInvocatedByHoursMinutesButton: " + isInvocatedByHoursMinutesButton + "\r\n" + + "isInvokedByStartElement: " + isInvokedByStartElement + "\r\n" + + "isInvokedByEndElement: " + isInvokedByEndElement + "\r\n" + + "Format der Dauer: " + (isInMin ? "Minuten" : "Stunden")); + var durationFormat = isInMin ? "m" : "h"; if((startTime.length > 0 && startTime.length < 5) || (endTime.length > 0 && endTime.length < 5)) { return; } - var startTimeCondition = startTime !== undefined && startTime !== null && startTime.length > 0; - var endTimeCondition = endTime !== undefined && endTime !== null && endTime.length > 0; + var isStartTimeValid = startTime !== undefined && startTime !== null && startTime.length > 0; + var isEndTimeValid = endTime !== undefined && endTime !== null && endTime.length > 0; var durationNumber = parseFloat(duration.replace(",", ".")); - var durationCondition = !isNaN(durationNumber); - + var isDurationValid = !isNaN(durationNumber); + var startDateString = $("#" + startDatePickerId).datetimepicker("date"); var endDate = moment(new Date()); var startDate = moment(new Date()); + // Das Startdatum hat einen Wert if(startDateString !== null && startDateString.length !== 0) { startDate = moment(startDateString); endDate = startDate.clone(); @@ -123,7 +131,7 @@ function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTime // Es gibt ein Enddatumsfeld if($("#" + endDatePickerId).length !== 0) { var endDateString = $("#" + endDatePickerId).datetimepicker("date"); - + // Das Enddatum hat einen Wert if(endDateString !== null && endDateString.length !== 0) { endDate = moment(endDateString); } @@ -132,7 +140,7 @@ function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTime var newDurationValue = 0; // Start- und Enddatum sind vorhanden und das Event wurde nicht vom Stunden/Minuten-Dropdown aufgerufen - if(startTimeCondition && endTimeCondition && isInvocatedByHoursMinutesButton === false) { + if(isStartTimeValid && isEndTimeValid && isInvocatedByHoursMinutesButton === false) { var startHHmm = parseTimeInputToIntegerArray(startTime); var endHHmm = parseTimeInputToIntegerArray(endTime); @@ -165,22 +173,29 @@ function calculateDuration(isInvocatedByHoursMinutesButton, startTimeId, endTime $("#" + durationId).val(newDurationValue); // Startdatum und Dauer sind vorhanden - } else if(startTimeCondition && durationCondition) { - if (hoursMinutesDropdownButton.length) { + } else if(isStartTimeValid && isDurationValid) { + if (isInvocatedByHoursMinutesButton) { durationNumber = isInMin ? durationNumber *= 60 : durationNumber /= 60; - $("#" + durationId).val(durationNumber); } calculateTimeWithDuration(startTime, $("#" + endTimeId), startDate, durationNumber, hoursMinutesDropdownBtnId); // Enddatum und Dauer sind vorhanden - } else if(endTimeCondition && durationCondition) { - if (hoursMinutesDropdownButton.length) { + } else if(isEndTimeValid && isDurationValid) { + if (isInvocatedByHoursMinutesButton) { durationNumber = isInMin ? durationNumber *= 60 : durationNumber /= 60; - $("#" + durationId).val(durationNumber); } calculateTimeWithDuration(endTime, $("#" + startTimeId), startDate, durationNumber * -1, hoursMinutesDropdownBtnId); + } else if (isInvocatedByHoursMinutesButton) { + // Wurde von Min zu Std oder Std zu Min + if (isInvocatedByHoursMinutesButton && isDurationValid) { + // Das jetzige Format ist das Gegenteil des vorherigen + // Ist es jetzt Minuten, war es vorher Stunden; es muss also mit 60 multipliziert werden. + // Ist es jetzt Stunden, war es vorher Minuten; es muss also durch 60 geteilt werden. + durationNumber = isInMin ? durationNumber * 60 : durationNumber / 60; + $("#" + durationId).val(durationNumber); + } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Customer/Customer.cshtml b/BeWoPlanerMobil/Views/Customer/Customer.cshtml index 106f15081..c692922c2 100644 --- a/BeWoPlanerMobil/Views/Customer/Customer.cshtml +++ b/BeWoPlanerMobil/Views/Customer/Customer.cshtml @@ -82,20 +82,16 @@ function changeReportTypeSelection() { try { var selectedReportType = $("#report-type-select").find(":selected").val(); - var medListReportConteiner = $("#med-list-report-container"); var historyList = $("#med-list-history-list"); $("#show-med-list-btn").prop("disabled", selectedReportType === "2"); if (selectedReportType !== "2") { historyList.hide(); - - //medListReportConteiner.show(); return; } historyList.removeClass("d-none"); - //medListReportConteiner.hide(); historyList.show(); } catch (error) { showErrorPopup(error); @@ -112,11 +108,13 @@ } } - function deleteHistoryMedList(oid) { + function deleteHistoryMedList(oid, name) { try { - showSpinner(); - $("#med-list-oid-delete").val(oid); - $("#delete-history-med-list").submit(); + showMessagePopupWithCallback("Löschen","Sind Sie sicher, dass Sie die " + name + " löschen wollen?", function() { + showSpinner(); + $("#med-list-oid-delete").val(oid); + $("#delete-history-med-list").submit(); + }); } catch (error) { showErrorPopup(error); } @@ -150,8 +148,6 @@
- @Html.Partial("CustomerReportPartial", Model) - @if(Model?.SelectedJsonCustomer != null) { using(Html.BeginForm("UpdateCustomer", "Customer", FormMethod.Post, new { id = "stammdaten-form", @class = "needs-validation", novalidate = "novalidate" })) @@ -743,6 +739,7 @@ @foreach(var list in Model.SelectedCustomer.Medikamentenverordnungslisten.Where(w => !w.Gueltig)) { var listName = $"{(list.MedListType ? "Medikamentenverordnungsliste" : "Bedarfsmedikamentenverordnungsliste")} vom {list.ErstellDatum}"; + var name = $"{listName} von {list.Ersteller}"; @listName @@ -754,7 +751,7 @@ - @@ -764,11 +761,11 @@ } - @*@if(!(Model.Report is null)) - { - // ToDo: Ist viel zu hoch auf kleinen Bildschirmen!*@ - @Html.Partial("CustomerReportPartial", Model) - @*}*@ + @if(!(Model.Report is null)) + { + // ToDo: Ist viel zu hoch auf kleinen Bildschirmen! + @Html.Partial("CustomerReportPartial", Model) + }
diff --git a/BeWoPlanerMobil/Views/Customer/CustomerReportPartial.cshtml b/BeWoPlanerMobil/Views/Customer/CustomerReportPartial.cshtml index 5899c24a2..4ee444d92 100644 --- a/BeWoPlanerMobil/Views/Customer/CustomerReportPartial.cshtml +++ b/BeWoPlanerMobil/Views/Customer/CustomerReportPartial.cshtml @@ -10,6 +10,5 @@ settings.MobileMode = true; settings.SettingsMobile.ReaderMode = true; settings.SettingsMobile.AnimationEnabled = false; - settings.Height= Unit.Percentage(100); }).Bind(Model.Report).Render(); } \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/ReportViewer/DocumentWebViewerPartial.cshtml b/BeWoPlanerMobil/Views/ReportViewer/DocumentWebViewerPartial.cshtml index 8d1e0a119..0b778bb6b 100644 --- a/BeWoPlanerMobil/Views/ReportViewer/DocumentWebViewerPartial.cshtml +++ b/BeWoPlanerMobil/Views/ReportViewer/DocumentWebViewerPartial.cshtml @@ -1,10 +1,36 @@  @model BeWoPlanerMobil.Models.ReportViewerModel + + @Html.DevExpress().WebDocumentViewer(settings => { settings.MobileMode = true; settings.Name = "webDocumentViewer1"; settings.SettingsMobile.ReaderMode = true; - + settings.Height = Unit.Percentage(100); + settings.ClientSideEvents.Init = "initEvent"; + }).Bind(Model.Report).GetHtml() \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/ReportViewer/ReportViewer.cshtml b/BeWoPlanerMobil/Views/ReportViewer/ReportViewer.cshtml index 4df97d389..371214128 100644 --- a/BeWoPlanerMobil/Views/ReportViewer/ReportViewer.cshtml +++ b/BeWoPlanerMobil/Views/ReportViewer/ReportViewer.cshtml @@ -47,7 +47,7 @@ } -
+
@@ -62,12 +62,18 @@
-
- + @* + ToDo: Hier am Montag weitermachen! Die Spalte ist viel zu klein! + *@ +
@if(!(Model.Report is null)) { @Html.Partial("DocumentWebViewerPartial", Model) } + else if(Html.IsInDebugMode()) + { +
Kein Report vorhanden
+ }
\ No newline at end of file diff --git a/Service/ServiceImplementations/ResourceServiceImp.cs b/Service/ServiceImplementations/ResourceServiceImp.cs index 26fc90e09..3d202af7c 100644 --- a/Service/ServiceImplementations/ResourceServiceImp.cs +++ b/Service/ServiceImplementations/ResourceServiceImp.cs @@ -2688,19 +2688,23 @@ namespace BeWo.Service.ServiceImplementations var employees = DAOFactory.SearchDAO.GetAllActiveEmployeesForEmployee(employeeOid); var employeeOids = employees.Where(employee => employee.Oid.HasValue).Select(employee => employee.Oid.Value).ToList(); - employeeOids = employeeOids.Where(oid => selectedEmployeeOids.Contains(oid)).ToList(); + employeeOids = employeeOids.Where(selectedEmployeeOids.Contains).ToList(); var absenceTimes = DAOFactory.SearchDAO.GetAllEmployeeAbsenceTimesInIntervalForEmployee(start, end, employeeOids); var dcList = MapperFactory.AbsenceTimeDC_AbsenceTime.MapToNewDCs(absenceTimes); - foreach(var at in dcList) - { - if(at.End.HasValue) - { - at.End = at.End.Value.Date.AddDays(1).AddTicks(-1); - } - } + //foreach(var at in dcList) + //{ + // // Das betrifft doch nur ganztägige Abwesenheiten + // if(at.End.HasValue) + // { + // if(at.End.Value.Hour == 0 && at.End.Value.Minute == 0 && at.End.Value.Second == 0) + // { + // at.End = at.End.Value.Date.AddDays(1).AddTicks(-1); + // } + // } + //} return dcList.OrderBy(a => a.Start).ToList(); } diff --git a/Shared/Extensions/DateTimeExtensions.cs b/Shared/Extensions/DateTimeExtensions.cs index 111c0ec7f..911a2d901 100644 --- a/Shared/Extensions/DateTimeExtensions.cs +++ b/Shared/Extensions/DateTimeExtensions.cs @@ -512,12 +512,12 @@ namespace BS.Shared.Extensions { var result = string.Empty; - var isAllDay = start.IsTimeZero() && (end == null || end.Value.IsTimeZero()); + var isAllDay = start.IsTimeZero() && (end is null || end.Value.IsTimeZero()); var endTimeHasValue = end.HasValue; - if (isAllDay) + if(isAllDay) { - if (endTimeHasValue) + if(endTimeHasValue) { if (start.Date.Equals(end.Value.Date)) { @@ -535,9 +535,9 @@ namespace BS.Shared.Extensions } else { - if (endTimeHasValue) + if(endTimeHasValue) { - if (start.Date.Equals(end.Value.Date)) + if(start.Date.Equals(end.Value.Date)) { result += $" {start:dd.MM.yyyy HH:mm} - {end.Value:HH:mm}"; }