());
// }
//}
//var dateTimes = ConvertStringDatesToDateTimes(start, end);
- //if(allDay)
- //{
- // dateTimes.EndDate = dateTimes.EndDate.AddDays(1);
- //}
+ //var unavailableResources = KalenderService.CheckResourceAvailability(dateTimes.StartDate, dateTimes.EndDate, oidList, Model.SelectedAppointment?.SchedulerAppointmentOid);
- //var info = KalenderService.CheckResourceAvailabilityWithEmployeeInformation(dateTimes.StartDate, dateTimes.EndDate, oidList, Model.SelectedAppointment?.SchedulerAppointmentOid);
+ //return JsonConvert.SerializeObject(unavailableResources);
- //var result = string.Empty;
-
- //foreach(var kvp in info)
- //{
- // result += $"Die Ressource \"{kvp.Key}\" ist im ausgewählten Zeitraum {start} bis {end} bereits gebucht";
- // if(!kvp.Value.All(string.IsNullOrWhiteSpace))
- // {
- // result += ":
";
- // }
+ var oidList = ConvertOidStringToList(resourceOids);
- // foreach(var interval in kvp.Value)
- // {
- // result += $"{interval}
";
- // }
- //}
+ foreach(var oid in oidList)
+ {
+ if(!Model.ResourceCategories2Resources.Any(a => a.Value.All(b => b.ResourceOid != oid)))
+ {
+ return LeerzeichenFuerGetMethoden;
+ }
+ }
- //return result;
+ var dateTimes = ConvertStringDatesToDateTimes(start, end);
+
+ if(allDay)
+ {
+ dateTimes.EndDate = dateTimes.EndDate.AddDays(1);
+ }
+
+ var recurrenceId = Model.SelectedAppointment.RecurrenceId;
+ var recurrenceIndex = Model.SelectedAppointment.RecurrenceIndex;
+ var info = KalenderService.CheckResourceAvailabilityWithEmployeeInformation(dateTimes.StartDate, dateTimes.EndDate, oidList, Model.SelectedAppointment?.SchedulerAppointmentOid, null);
+
+ var result = string.Empty;
+
+ foreach(var kvp in info)
+ {
+ result += $"Die Ressource \"{kvp.Key}\" ist im ausgewählten Zeitraum {start} bis {end} bereits gebucht";
+ if(!kvp.Value.All(string.IsNullOrWhiteSpace))
+ {
+ result += ":
";
+ }
+
+ foreach(var interval in kvp.Value)
+ {
+ result += $"{interval}
";
+ }
+ }
+
+ return result;
}
[Authorize]
diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs
index 9b3553221..9461febe1 100644
--- a/BeWoPlanerMobil/Models/AbstractModel.cs
+++ b/BeWoPlanerMobil/Models/AbstractModel.cs
@@ -155,7 +155,28 @@ namespace BeWoPlanerMobil.Models
public static bool HasRightMitarbeiterstundenkontoViewTeams => CheckRight(UserRightType.Mitarbeiterstundenkonto_ViewTeams);
public static bool HasRightMitarbeiterstundenkontoViewSelf => CheckRight(UserRightType.Mitarbeiterstundenkonto_ViewSelf);
- public static bool HasRightToViewReports => CheckRight(UserRightType.QueryView_View);
+ public static bool HasRightToViewReports => CheckForAtLeastOneRight(new UserRightType[]
+ {
+ UserRightType.ViewAll,
+ UserRightType.QueryView_View,
+ UserRightType.Analysis_ServiceOverview_View,
+ UserRightType.Analysis_Auslastung_View,
+ UserRightType.Analysis_AuslastungAllEmployee_View,
+ UserRightType.Analysis_AuslastungTeam_View,
+ UserRightType.Kilometerauswertung_View,
+ UserRightType.KilometerauswertungEigene_View,
+ UserRightType.BewertungAuswertung_View,
+ UserRightType.PivotTabelleAnsehen,
+ UserRightType.DienstplanungAnsehen,
+ UserRightType.AbwesenheitsPlanungAnsehen,
+ UserRightType.Mitarbeiterstundenkonto_ViewAll,
+ UserRightType.Mitarbeiterstundenkonto_ViewSelf,
+ UserRightType.Mitarbeiterstundenkonto_ViewTeams,
+ UserRightType.Jahresbericht,
+ UserRightType.Auswertungen_BerichteAnsehen,
+ UserRightType.Auswertungen_StundenuebersichtAnsehen,
+ UserRightType.Auswertungen_HilfeplanuebersichtAnsehen
+ });
public static bool HasRightToViewMitarbeiterstundenkonto
{
diff --git a/BeWoPlanerMobil/Models/MainModel.cs b/BeWoPlanerMobil/Models/MainModel.cs
index 163746097..457950a8c 100644
--- a/BeWoPlanerMobil/Models/MainModel.cs
+++ b/BeWoPlanerMobil/Models/MainModel.cs
@@ -729,6 +729,8 @@ namespace BeWoPlanerMobil.Models
public MandatorDC Mandator { get; set; }
public bool IsPasswordSecurityEnabled { get; set; }
+
+ public bool ShowMarker { get; set; }
}
public class CustomSelectListItem
diff --git a/BeWoPlanerMobil/Models/SchedulerModel.cs b/BeWoPlanerMobil/Models/SchedulerModel.cs
index 99a835ddf..2423a56d4 100644
--- a/BeWoPlanerMobil/Models/SchedulerModel.cs
+++ b/BeWoPlanerMobil/Models/SchedulerModel.cs
@@ -85,7 +85,7 @@ namespace BeWoPlanerMobil.Models
allResources.AddRangeIfElementsNotIn(cat2res.Value);
}
- return allResources;
+ return allResources.OrderBy(resource => resource.Name).ToList();
}
}
diff --git a/BeWoPlanerMobil/Scripts/view-scripts/main.js b/BeWoPlanerMobil/Scripts/view-scripts/main.js
index 76f402731..f24506a2c 100644
--- a/BeWoPlanerMobil/Scripts/view-scripts/main.js
+++ b/BeWoPlanerMobil/Scripts/view-scripts/main.js
@@ -100,11 +100,11 @@ function submitGroupBookingForm() {
}
function deactivateGroupBookingForm() {
- $("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn").prop("disabled", true);
+ $("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #gb-marker-cb").prop("disabled", true);
}
function activateGroupBookingForm() {
- $("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn").prop("disabled", false);
+ $("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #gb-marker-cb").prop("disabled", false);
}
function deleteServiceRecord(serviceRecordOid) {
diff --git a/BeWoPlanerMobil/Scripts/view-scripts/scheduler.js b/BeWoPlanerMobil/Scripts/view-scripts/scheduler.js
index b6066c782..865eb94c8 100644
--- a/BeWoPlanerMobil/Scripts/view-scripts/scheduler.js
+++ b/BeWoPlanerMobil/Scripts/view-scripts/scheduler.js
@@ -121,57 +121,56 @@ function validateAppointmentForm() {
$.get(getCheckResourcesAvailabilityUrl(), { start: startDate.format("DD.MM.YYYY HH:mm"), end: endDate.format("DD.MM.YYYY HH:mm"), resourceOids: oidString, allDay: isAllDay }).done(function(result) {
if (result.length > 1) {
try {
- // ToDo: Wieder einchecken! (24.07.2023)
- //hideSpinner();
-
- //if (result.includes("Fehler!")) {
- // showErrorMessagePopup(result.substring(7));
- // return;
- //} else {
- // showMessagePopupWithHtml("Überschneidung",
- // result,
- // function() {
- // $("#messagePopup .modal-body").html();
- // showSpinner();
- // insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
- // },
- // false);
- //}
-
-
- var unavailableResources = $.parseJSON(result);
- var resourceCount = 0;
- var names = "";
-
- $.each(unavailableResources, function(index, resource) {
- if (names.length > 1) {
- names += ", ";
- }
-
- resourceCount++;
-
- names += resource.Name;
- });
-
- var unavailableResourcesMessage;
-
- if(resourceCount > 0) {
- if(resourceCount > 1) {
- unavailableResourcesMessage = "Einige der ausgewählten Ressourcen (" + names + ") sind zum gewählten Zeitpunkt nicht verfügbar.";
- } else {
- unavailableResourcesMessage = "Eine der ausgewählten Ressourcen (" + names + ") ist zum gewählten Zeitpunkt nicht verfügbar.";
- }
-
- hideSpinner();
-
- showWarningMessageBox("Überschneidung", unavailableResourcesMessage, function() {
- $("#messagePopup .modal-body").html();
- showSpinner();
- insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
- }, false);
+ hideSpinner();
+ if (result.includes("Fehler!")) {
+ showErrorMessagePopup(result.substring(7));
return;
+ } else {
+ showMessagePopupWithHtml("Überschneidung",
+ result,
+ function() {
+ $("#messagePopup .modal-body").html();
+ showSpinner();
+ insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
+ },
+ false);
}
+
+ // ALT!
+ //var unavailableResources = $.parseJSON(result);
+ //var resourceCount = 0;
+ //var names = "";
+
+ //$.each(unavailableResources, function(index, resource) {
+ // if (names.length > 1) {
+ // names += ", ";
+ // }
+
+ // resourceCount++;
+
+ // names += resource.Name;
+ //});
+
+ //var unavailableResourcesMessage;
+
+ //if(resourceCount > 0) {
+ // if(resourceCount > 1) {
+ // unavailableResourcesMessage = "Einige der ausgewählten Ressourcen (" + names + ") sind zum gewählten Zeitpunkt nicht verfügbar.";
+ // } else {
+ // unavailableResourcesMessage = "Eine der ausgewählten Ressourcen (" + names + ") ist zum gewählten Zeitpunkt nicht verfügbar.";
+ // }
+
+ // hideSpinner();
+
+ // showWarningMessageBox("Überschneidung", unavailableResourcesMessage, function() {
+ // $("#messagePopup .modal-body").html();
+ // showSpinner();
+ // insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
+ // }, false);
+
+ // return;
+ //}
} catch (error) {
showErrorPopup(error);
return;
diff --git a/BeWoPlanerMobil/Util/FormCollectionConstants.cs b/BeWoPlanerMobil/Util/FormCollectionConstants.cs
index 16cae73e4..e46514fbf 100644
--- a/BeWoPlanerMobil/Util/FormCollectionConstants.cs
+++ b/BeWoPlanerMobil/Util/FormCollectionConstants.cs
@@ -24,10 +24,9 @@
public static string RecordsKey => "Records";
public static string ServiceRecordOidHolder2Key => "service-record-oid-holder";
public static string IsInGroupBookingModeKey => "IsInGroupBookingMode";
-
public static string IsInMultiBookingModeKey => "IsInMultiBookingMode";
-
public static string DurationInMinutesKey => "DurationInMinutes";
+ public static string MarkerKey => "marker-cb";
// Kalender
public static string AppointmentStartDateKey => "StartDate";
diff --git a/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml b/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml
index 1bd927b22..41c49ed01 100644
--- a/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml
+++ b/BeWoPlanerMobil/Views/Main/GroupBookingPartial.cshtml
@@ -146,6 +146,25 @@
+
+
+ @if(Model.ShowMarker)
+ {
+
+ }
+
+
diff --git a/BeWoPlanerMobil/Views/Main/Main.cshtml b/BeWoPlanerMobil/Views/Main/Main.cshtml
index 2ec1291a5..3494dfe72 100644
--- a/BeWoPlanerMobil/Views/Main/Main.cshtml
+++ b/BeWoPlanerMobil/Views/Main/Main.cshtml
@@ -235,14 +235,14 @@
$("#employeesDropDown, #category-select, #leistung-select, " +
"#start-date, #end-date, #start-time, #end-time, #duration, " +
"#distance, #textbausteine-button, #goals-button, textarea, #reset-button, " +
- "#create-button, #statistics-button, #timeFrameSelect, #hours-minutes-dropdown-btn").prop("disabled", (isSupportConceptSelected ? false : true));
+ "#create-button, #statistics-button, #timeFrameSelect, #hours-minutes-dropdown-btn, #marker-cb").prop("disabled", (isSupportConceptSelected ? false : true));
if("@Model.IsInGroupBookingMode".toLowerCase() === "true") {
var hasSelectedSupportConcepts = "@Model.SelectedConceptCostBearerRelations.Any()".toLowerCase() === "true";
$("#employees-button, #category-select, #leistung-select, " +
"#start-date, #end-date, #start-time, #end-time, #duration, " +
- "#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn").prop("disabled", (hasSelectedSupportConcepts ? false : true));
+ "#distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #gb-marker-cb").prop("disabled", (hasSelectedSupportConcepts ? false : true));
}
$("#fehlerdetail-textarea").prop("disabled", false);
diff --git a/BeWoPlanerMobil/Views/Main/MultiBookingPartial.cshtml b/BeWoPlanerMobil/Views/Main/MultiBookingPartial.cshtml
index 9fac99543..a419dca9d 100644
--- a/BeWoPlanerMobil/Views/Main/MultiBookingPartial.cshtml
+++ b/BeWoPlanerMobil/Views/Main/MultiBookingPartial.cshtml
@@ -204,7 +204,7 @@
function deactivateMultiBookingForm() {
try {
- $("#multi-booking-employees-button, #mb-category-select, #mb-leistung-select, #mb-start-date, #mb-end-date, #mb-start-time, #mb-end-time, #mb-duration, #mb-distance, textarea, #mb-reset-button, #mb-create-button, #mb-textbausteine-button, #mb-hours-minutes-dropdown-btn").prop("disabled", true);
+ $("#multi-booking-employees-button, #mb-category-select, #mb-leistung-select, #mb-start-date, #mb-end-date, #mb-start-time, #mb-end-time, #mb-duration, #mb-distance, textarea, #mb-reset-button, #mb-create-button, #mb-textbausteine-button, #mb-hours-minutes-dropdown-btn, #mb-marker-cb").prop("disabled", true);
} catch (error) {
showErrorPopup(error);
}
@@ -212,7 +212,7 @@
function activateMultiBookingForm() {
try {
- $("#multi-booking-employees-button, #mb-category-select, #mb-leistung-select, #mb-start-date, #mb-end-date, #mb-start-time, #mb-end-time, #mb-duration, #mb-distance, textarea, #mb-reset-button, #mb-create-button, #mb-textbausteine-button, #mb-hours-minutes-dropdown-btn").prop("disabled", false);
+ $("#multi-booking-employees-button, #mb-category-select, #mb-leistung-select, #mb-start-date, #mb-end-date, #mb-start-time, #mb-end-time, #mb-duration, #mb-distance, textarea, #mb-reset-button, #mb-create-button, #mb-textbausteine-button, #mb-hours-minutes-dropdown-btn, #mb-marker-cb").prop("disabled", false);
} catch (error) {
showErrorPopup(error);
}
@@ -339,6 +339,25 @@
+
+
+ @if(Model.ShowMarker)
+ {
+
+ }
+
+