diff --git a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs index f3681c1d7..9c92f8905 100644 --- a/BeWo/Scheduler/View/NewSchedulerView.xaml.cs +++ b/BeWo/Scheduler/View/NewSchedulerView.xaml.cs @@ -2134,7 +2134,24 @@ namespace BeWo.Scheduler.View { GetCacheObjects((c, e, r) => { - ServiceFacade.DoResourceServiceAsync(s2 => s2.LoadFilteredAppointmentsMitAufgaben(BeWoApp.HasLoggedOnUserRight(new[] {UserRightType.KalenderMitarbeitertermineAnsehen}), BeWoApp.LoggedOnEmployee.EmployeeOid.Value, start, end, pSelectedEmployees, pSelectedCustomer, pSelectedResources, pEmployeesOnly, pCustomersOnly, pResourcesOnly, pPrivateAppointmentsOnly, pOnlyMyAppointments, IsTasksVisible), + ServiceFacade.DoResourceServiceAsync(s2 => s2.LoadFilteredAppointmentsMitAufgaben( + BeWoApp.HasLoggedOnUserRight(new[] + { + UserRightType.KalenderMitarbeitertermineAnsehen + }), + BeWoApp.LoggedOnEmployee.EmployeeOid.Value, + start, + end, + pSelectedEmployees, + pSelectedCustomer, + pSelectedResources, + pEmployeesOnly, + pCustomersOnly, + pResourcesOnly, + pPrivateAppointmentsOnly, + pOnlyMyAppointments, + IsTasksVisible + ), appointments => { ServiceFacade.DoResourceServiceAsync(s3 => s3.GetAllActiveEmployeeAbsenceTimesInInterval(start, end, BeWoApp.LoggedOnEmployee.EmployeeOid.Value, SelectedEmployees.Select(employee => employee.EmployeeOid).ToList()), diff --git a/BeWoPlanerMobil/.vs/BeWoPlanerMobil.csproj.dtbcache.json b/BeWoPlanerMobil/.vs/BeWoPlanerMobil.csproj.dtbcache.json index 43a6c575f..ee5b701c4 100644 --- a/BeWoPlanerMobil/.vs/BeWoPlanerMobil.csproj.dtbcache.json +++ b/BeWoPlanerMobil/.vs/BeWoPlanerMobil.csproj.dtbcache.json @@ -1 +1 @@ -{"RootPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\BeWoPlanerMobil","ProjectFileName":"BeWoPlanerMobil.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"App_Start\\BundleConfig.cs"},{"SourceFile":"App_Start\\FilterConfig.cs"},{"SourceFile":"App_Start\\RouteConfig.cs"},{"SourceFile":"App_Start\\WebApiConfig.cs"},{"SourceFile":"Controllers\\AbstractBaseController.cs"},{"SourceFile":"Controllers\\ChatController.cs"},{"SourceFile":"Controllers\\CustomerController.cs"},{"SourceFile":"Controllers\\DevToolsController.cs"},{"SourceFile":"Controllers\\DevExpressSchedulerController.cs"},{"SourceFile":"Controllers\\ExternalSignatureController.cs"},{"SourceFile":"Controllers\\ReportBaseController.cs"},{"SourceFile":"Controllers\\ReportController.cs"},{"SourceFile":"Controllers\\ReportViewerController.cs"},{"SourceFile":"Controllers\\SchedulerController.cs"},{"SourceFile":"Models\\AbstractModel.cs"},{"SourceFile":"Models\\MokZiel.cs"},{"SourceFile":"Models\\MokSupportConceptListObject.cs"},{"SourceFile":"Models\\MokMandator.cs"},{"SourceFile":"Models\\MokServiceRecord.cs"},{"SourceFile":"Models\\SchedulerSessionModel.cs"},{"SourceFile":"Models\\MainSessionModel.cs"},{"SourceFile":"Models\\ReportSessionModel .cs"},{"SourceFile":"Models\\ReportViewerSessionModel.cs"},{"SourceFile":"Models\\CustomerSessionModel.cs"},{"SourceFile":"Models\\CustomerModel.cs"},{"SourceFile":"Models\\DevToolsModel.cs"},{"SourceFile":"Models\\DevExpressSchedulerModel.cs"},{"SourceFile":"Models\\ExternalSignatureModel.cs"},{"SourceFile":"Models\\ISessionModel.cs"},{"SourceFile":"Models\\ReportModel.cs"},{"SourceFile":"Models\\ReportViewerModel.cs"},{"SourceFile":"Models\\SchedulerModel.cs"},{"SourceFile":"Util\\DcToMokMapper.cs"},{"SourceFile":"Util\\MokSettings.cs"},{"SourceFile":"Util\\AppointmentListItem.cs"},{"SourceFile":"Util\\BeWoLoginState.cs"},{"SourceFile":"Util\\BootstrapTreeViewItem.cs"},{"SourceFile":"Util\\ConvertedDateTimes.cs"},{"SourceFile":"Util\\FormCollectionConstants.cs"},{"SourceFile":"Util\\GoalRating.cs"},{"SourceFile":"Util\\GoalTreeItem.cs"},{"SourceFile":"Controllers\\LoginController.cs"},{"SourceFile":"Controllers\\MainController.cs"},{"SourceFile":"Util\\GroupBookingSelectionObject.cs"},{"SourceFile":"Util\\GroupOfPeopleItem.cs"},{"SourceFile":"Util\\HtmlHelperExtensions.cs"},{"SourceFile":"Util\\JsonAbsenceTime.cs"},{"SourceFile":"Util\\JsonCustomer.cs"},{"SourceFile":"Util\\JsonOrganisation.cs"},{"SourceFile":"Util\\MobileUserSettingsUtils.cs"},{"SourceFile":"Util\\MoKExtensions\\TagBuilderExtensions.cs"},{"SourceFile":"Util\\NullableDateTimeSpan.cs"},{"SourceFile":"Util\\PasswordUtils.cs"},{"SourceFile":"Util\\QuittierungsbelegItem.cs"},{"SourceFile":"Util\\QuittierungsbelegResult.cs"},{"SourceFile":"Util\\RecurrenceInformation.cs"},{"SourceFile":"Global.asax.cs"},{"SourceFile":"Models\\LoginModel.cs"},{"SourceFile":"Models\\MainModel.cs"},{"SourceFile":"Models\\ServiceCategoryModel.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Service\\ASPHibernateSessionManager.cs"},{"SourceFile":"Service\\MobileSessionFacade.cs"},{"SourceFile":"Service\\MobileUpdInsInterceptor.cs"},{"SourceFile":"TestWebService.asmx.cs"},{"SourceFile":"Util\\MobileUtils.cs"},{"SourceFile":"Util\\ReferenceNumberWithNotice.cs"},{"SourceFile":"Util\\ReportUtils\\ConfirmationReceiptObject.cs"},{"SourceFile":"Util\\ReportUtils\\Quittierungsbelegsunterschriftenobjekt.cs"},{"SourceFile":"Util\\ReportUtils\\QuittierungsbelegsReportSettings.cs"},{"SourceFile":"Util\\ReportUtils\\ReportTimeFrame.cs"},{"SourceFile":"Util\\ServiceRecord2Validation.cs"},{"SourceFile":"Util\\SignatureUtils.cs"},{"SourceFile":"Util\\SupportConceptStatisticsData.cs"},{"SourceFile":"Util\\TextbausteinDisplayItem.cs"},{"SourceFile":"Util\\Umfeldsperson.cs"},{"SourceFile":"Util\\ValidationResult.cs"},{"SourceFile":"Util\\Watermarker.cs"},{"SourceFile":"Views\\DevExpressScheduler\\SchedulerHelper.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Antlr.3.5.0.2\\lib\\Antlr3.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Data\\bin\\Debug\\BeWo.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Data\\bin\\Debug\\BeWo.Data.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Report\\bin\\Debug\\BeWo.Report.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Report\\bin\\Debug\\BeWo.Report.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Service\\bin\\Debug\\BeWo.Service.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Service\\bin\\Debug\\BeWo.Service.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Bogus.35.6.3\\lib\\net40\\Bogus.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Shared\\bin\\Debug\\BS.Shared.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Shared\\bin\\Debug\\BS.Shared.dll"},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Charts.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.CodeParser.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.Desktop.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.DataAccess.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Drawing.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Mvvm.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Office.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.PivotGrid.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Printing.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Export.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Sparkline.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Utils.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.ASPxScheduler.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.ASPxThemes.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.Mvc5.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Xpo.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraCharts.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraEditors.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraPivotGrid.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraPrinting.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Web.WebForms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Core.Desktop.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Reporting.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Reporting.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\EntityFramework.6.5.1\\lib\\net45\\EntityFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\EntityFramework.6.5.1\\lib\\net45\\EntityFramework.SqlServer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\log4net.3.1.0\\lib\\net462\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\\lib\\net472\\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebHelpers.3.3.0\\lib\\net45\\Microsoft.Web.Helpers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Web.Infrastructure.2.0.0\\lib\\net40\\Microsoft.Web.Infrastructure.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Newtonsoft.Json.Bson.1.0.3\\lib\\net45\\Newtonsoft.Json.Bson.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\NHibernate.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\ReportService\\bin\\Debug\\ReportingService.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\ReportService\\bin\\Debug\\ReportingService.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\RestSharp.106.13.0\\lib\\net452\\RestSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\System.Buffers.4.6.1\\lib\\net462\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.Entity.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.EnterpriseServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.Client.6.0.0\\lib\\net45\\System.Net.Http.Formatting.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\System.Numerics.Vectors.4.6.1\\lib\\net462\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ServiceModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.ApplicationServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.DynamicData.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Entity.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.Helpers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.Core.5.3.0\\lib\\net45\\System.Web.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.WebHost.5.3.0\\lib\\net45\\System.Web.Http.WebHost.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Mvc.5.3.0\\lib\\net45\\System.Web.Mvc.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Web.Optimization.1.1.3\\lib\\net40\\System.Web.Optimization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Razor.3.3.0\\lib\\net45\\System.Web.Razor.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Routing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Services.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.Razor.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\WebGrease.1.6.0\\lib\\WebGrease.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.Data.3.3.0\\lib\\net45\\WebMatrix.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.WebData.3.3.0\\lib\\net45\\WebMatrix.WebData.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\BeWoPlanerMobil\\bin\\BeWoPlanerMobil.dll","OutputItemRelativePath":"BeWoPlanerMobil.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]} \ No newline at end of file +{"RootPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\BeWoPlanerMobil","ProjectFileName":"BeWoPlanerMobil.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"App_Start\\BundleConfig.cs"},{"SourceFile":"App_Start\\FilterConfig.cs"},{"SourceFile":"App_Start\\RouteConfig.cs"},{"SourceFile":"App_Start\\WebApiConfig.cs"},{"SourceFile":"Controllers\\AbstractBaseController.cs"},{"SourceFile":"Controllers\\ChatController.cs"},{"SourceFile":"Controllers\\CustomerController.cs"},{"SourceFile":"Controllers\\DevToolsController.cs"},{"SourceFile":"Controllers\\DevExpressSchedulerController.cs"},{"SourceFile":"Controllers\\EmployeeController.cs"},{"SourceFile":"Controllers\\ExternalSignatureController.cs"},{"SourceFile":"Controllers\\IAbsenceTimeController.cs"},{"SourceFile":"Controllers\\IDocumentsController.cs"},{"SourceFile":"Controllers\\PersonController.cs"},{"SourceFile":"Controllers\\SignableController.cs"},{"SourceFile":"Controllers\\ReportBaseController.cs"},{"SourceFile":"Controllers\\ReportController.cs"},{"SourceFile":"Controllers\\ReportViewerController.cs"},{"SourceFile":"Controllers\\SchedulerController.cs"},{"SourceFile":"Models\\AbstractModel.cs"},{"SourceFile":"Models\\AppointmentModel.cs"},{"SourceFile":"Models\\DevExpressSchedulerSessionModel.cs"},{"SourceFile":"Models\\EmployeeModel.cs"},{"SourceFile":"Models\\EmployeeSessionModel.cs"},{"SourceFile":"Models\\IAbsenceTimeModel.cs"},{"SourceFile":"Models\\IAbsenceTimeSessionModel.cs"},{"SourceFile":"Models\\IDocumentsModel.cs"},{"SourceFile":"Models\\MokZiel.cs"},{"SourceFile":"Models\\MokSupportConceptListObject.cs"},{"SourceFile":"Models\\MokMandator.cs"},{"SourceFile":"Models\\MokServiceRecord.cs"},{"SourceFile":"Models\\BaseSessionModel.cs"},{"SourceFile":"Models\\PersonModel.cs"},{"SourceFile":"Models\\PersonSessionModel.cs"},{"SourceFile":"Models\\SchedulerSessionModel.cs"},{"SourceFile":"Models\\MainSessionModel.cs"},{"SourceFile":"Models\\ReportSessionModel .cs"},{"SourceFile":"Models\\ReportViewerSessionModel.cs"},{"SourceFile":"Models\\CustomerSessionModel.cs"},{"SourceFile":"Models\\CustomerModel.cs"},{"SourceFile":"Models\\DevToolsModel.cs"},{"SourceFile":"Models\\DevExpressSchedulerModel.cs"},{"SourceFile":"Models\\ExternalSignatureModel.cs"},{"SourceFile":"Models\\ReportModel.cs"},{"SourceFile":"Models\\ReportViewerModel.cs"},{"SourceFile":"Models\\SchedulerModel.cs"},{"SourceFile":"Util\\DcToMokMapper.cs"},{"SourceFile":"Util\\ISignable.cs"},{"SourceFile":"Util\\MokSettings.cs"},{"SourceFile":"Util\\AppointmentListItem.cs"},{"SourceFile":"Util\\BeWoLoginState.cs"},{"SourceFile":"Util\\BootstrapTreeViewItem.cs"},{"SourceFile":"Util\\ConvertedDateTimes.cs"},{"SourceFile":"Util\\FormCollectionConstants.cs"},{"SourceFile":"Util\\GoalRating.cs"},{"SourceFile":"Util\\GoalTreeItem.cs"},{"SourceFile":"Controllers\\LoginController.cs"},{"SourceFile":"Controllers\\MainController.cs"},{"SourceFile":"Util\\GroupBookingSelectionObject.cs"},{"SourceFile":"Util\\GroupOfPeopleItem.cs"},{"SourceFile":"Util\\HtmlHelperExtensions.cs"},{"SourceFile":"Util\\JsonAbsenceTime.cs"},{"SourceFile":"Util\\JsonCustomer.cs"},{"SourceFile":"Util\\JsonOrganisation.cs"},{"SourceFile":"Util\\MobileUserSettingsUtils.cs"},{"SourceFile":"Util\\MoKExtensions\\TagBuilderExtensions.cs"},{"SourceFile":"Util\\NullableDateTimeSpan.cs"},{"SourceFile":"Util\\PasswordUtils.cs"},{"SourceFile":"Util\\QuittierungsbelegItem.cs"},{"SourceFile":"Util\\QuittierungsbelegResult.cs"},{"SourceFile":"Util\\RecurrenceInformation.cs"},{"SourceFile":"Global.asax.cs"},{"SourceFile":"Models\\LoginModel.cs"},{"SourceFile":"Models\\MainModel.cs"},{"SourceFile":"Models\\ServiceCategoryModel.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Service\\ASPHibernateSessionManager.cs"},{"SourceFile":"Service\\MobileSessionFacade.cs"},{"SourceFile":"Service\\MobileUpdInsInterceptor.cs"},{"SourceFile":"TestWebService.asmx.cs"},{"SourceFile":"Util\\MobileUtils.cs"},{"SourceFile":"Util\\ReferenceNumberWithNotice.cs"},{"SourceFile":"Util\\ReportUtils\\ConfirmationReceiptObject.cs"},{"SourceFile":"Util\\ReportUtils\\Quittierungsbelegsunterschriftenobjekt.cs"},{"SourceFile":"Util\\ReportUtils\\QuittierungsbelegsReportSettings.cs"},{"SourceFile":"Util\\ReportUtils\\ReportTimeFrame.cs"},{"SourceFile":"Util\\JsonPerson.cs"},{"SourceFile":"Util\\ServiceRecord2Validation.cs"},{"SourceFile":"Util\\SignatureUtils.cs"},{"SourceFile":"Util\\SupportConceptStatisticsData.cs"},{"SourceFile":"Util\\TextbausteinDisplayItem.cs"},{"SourceFile":"Util\\Umfeldsperson.cs"},{"SourceFile":"Util\\ValidationResult.cs"},{"SourceFile":"Util\\Watermarker.cs"},{"SourceFile":"Views\\DevExpressScheduler\\SchedulerHelper.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Antlr.3.5.0.2\\lib\\Antlr3.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Data\\bin\\Debug\\BeWo.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Data\\bin\\Debug\\BeWo.Data.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Report\\bin\\Debug\\BeWo.Report.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Report\\bin\\Debug\\BeWo.Report.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Service\\bin\\Debug\\BeWo.Service.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Service\\bin\\Debug\\BeWo.Service.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Bogus.35.6.3\\lib\\net40\\Bogus.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Shared\\bin\\Debug\\BS.Shared.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Shared\\bin\\Debug\\BS.Shared.dll"},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Charts.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.CodeParser.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.Desktop.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Data.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.DataAccess.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Drawing.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Mvvm.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Office.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.PivotGrid.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Printing.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.RichEdit.v23.2.Export.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Sparkline.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Utils.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.ASPxScheduler.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.ASPxThemes.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.Mvc5.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Web.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.Xpo.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraCharts.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraEditors.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraPivotGrid.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraPrinting.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraReports.v23.2.Web.WebForms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Core.Desktop.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Reporting.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\DevExpress 23.2\\Components\\Bin\\Framework\\DevExpress.XtraScheduler.v23.2.Reporting.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\EntityFramework.6.5.1\\lib\\net45\\EntityFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\EntityFramework.6.5.1\\lib\\net45\\EntityFramework.SqlServer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\log4net.3.1.0\\lib\\net462\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\\lib\\net472\\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebHelpers.3.3.0\\lib\\net45\\Microsoft.Web.Helpers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Web.Infrastructure.2.0.0\\lib\\net40\\Microsoft.Web.Infrastructure.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Newtonsoft.Json.Bson.1.0.3\\lib\\net45\\Newtonsoft.Json.Bson.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\NHibernate.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\ReportService\\bin\\Debug\\ReportingService.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\ReportService\\bin\\Debug\\ReportingService.dll"},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\RestSharp.106.13.0\\lib\\net452\\RestSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\System.Buffers.4.6.1\\lib\\net462\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.Entity.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.EnterpriseServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.Client.6.0.0\\lib\\net45\\System.Net.Http.Formatting.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\System.Numerics.Vectors.4.6.1\\lib\\net462\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ServiceModel.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\Lib\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.ApplicationServices.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.DynamicData.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Entity.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.Helpers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.Core.5.3.0\\lib\\net45\\System.Web.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebApi.WebHost.5.3.0\\lib\\net45\\System.Web.Http.WebHost.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Mvc.5.3.0\\lib\\net45\\System.Web.Mvc.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Web.Optimization.1.1.3\\lib\\net40\\System.Web.Optimization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.Razor.3.3.0\\lib\\net45\\System.Web.Razor.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Routing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.Services.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.3.3.0\\lib\\net45\\System.Web.WebPages.Razor.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\WebGrease.1.6.0\\lib\\WebGrease.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.Data.3.3.0\\lib\\net45\\WebMatrix.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\packages\\Microsoft.AspNet.WebPages.WebData.3.3.0\\lib\\net45\\WebMatrix.WebData.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Users\\Lyndon\\Documents\\Entwicklung\\BeWo\\BeWoPlanerMobil\\bin\\BeWoPlanerMobil.dll","OutputItemRelativePath":"BeWoPlanerMobil.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]} \ No newline at end of file diff --git a/BeWoPlanerMobil/BeWoPlanerMobil.csproj b/BeWoPlanerMobil/BeWoPlanerMobil.csproj index a507644a9..0daee286c 100644 --- a/BeWoPlanerMobil/BeWoPlanerMobil.csproj +++ b/BeWoPlanerMobil/BeWoPlanerMobil.csproj @@ -208,7 +208,9 @@ False ..\Lib\NHibernate.dll - + + True + ..\packages\RestSharp.106.13.0\lib\net452\RestSharp.dll @@ -318,6 +320,8 @@ + + @@ -343,6 +347,7 @@ + @@ -389,6 +394,8 @@ + + @@ -700,6 +707,12 @@ + + + + + + diff --git a/BeWoPlanerMobil/Controllers/CustomerController.cs b/BeWoPlanerMobil/Controllers/CustomerController.cs index b632f61f4..07f60b221 100644 --- a/BeWoPlanerMobil/Controllers/CustomerController.cs +++ b/BeWoPlanerMobil/Controllers/CustomerController.cs @@ -680,7 +680,6 @@ namespace BeWoPlanerMobil.Controllers #endregion #region Bargeldkassen - [Authorize] private void ReloadBargeldkassen() { @@ -1240,7 +1239,6 @@ namespace BeWoPlanerMobil.Controllers #endregion #region Abwesenheiten - [Authorize] [HttpPost] public ActionResult CreateOrUpdateAbsenceTime(FormCollection formCollection) diff --git a/BeWoPlanerMobil/Controllers/DevExpressSchedulerController.cs b/BeWoPlanerMobil/Controllers/DevExpressSchedulerController.cs index ed83c92bc..8c402159c 100644 --- a/BeWoPlanerMobil/Controllers/DevExpressSchedulerController.cs +++ b/BeWoPlanerMobil/Controllers/DevExpressSchedulerController.cs @@ -1,16 +1,40 @@ -using System; -using System.Collections.Generic; -using System.Web.Mvc; -using BeWoPlanerMobil.Models; +using BeWoPlanerMobil.Models; using BeWoPlanerMobil.Service; using BeWoPlanerMobil.Views.DevExpressScheduler; +using BS.Shared; +using BS.Shared.Core; using BS.Shared.DataContracts; +using BS.Shared.DataContracts.Compact; +using BS.Shared.Extensions; using DevExpress.Web.Mvc; +using DevExpress.XtraScheduler; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web.Mvc; +using BeWoPlanerMobil.Util.Constants; +using BeWoPlanerMobil.Util.SchedulerUtils; namespace BeWoPlanerMobil.Controllers { + /* + * ToDo: + * 1. Filterung einbauen (Mitarbeiter, Klienten, Ressourcen, Privat, Aufgaben, Abwesenheiten) + * 2. "In die Zeiterfassung übertragen" und "Verfügbare Mitarbeiter prüfen" einbauen + * 3. Rechte implementieren! + * 4. Ressourcen-Farben einbauen -> Templates wie im DemoCenter benutzen + * 5. Übersetzungen + */ + public class DevExpressSchedulerController : AbstractBaseController { + [Authorize] + public override string SaveCollapsibleStatus(bool isOpen, string identifier) + { + return SaveCollapsibleStatusToModel(Model, isOpen, identifier); + } + private DevExpressSchedulerModel _Model; public DevExpressSchedulerModel Model { @@ -29,11 +53,96 @@ namespace BeWoPlanerMobil.Controllers _Model = new DevExpressSchedulerModel(); InitModel(_Model); + InitViewModel(); return _Model; } } + private AppointmentModel _AppointmentModel; + + public AppointmentModel AppointmentModel + { + get + { + if(false == MobileSessionFacade.IsUserLoggedIn()) + { + Logout(); + return null; + } + + if(_AppointmentModel != null) + { + return _AppointmentModel; + } + + _AppointmentModel = new AppointmentModel(); + InitModel(_AppointmentModel); + InitAppointmentModel(); + + return _AppointmentModel; + } + } + + private void InitAppointmentModel() + { + AppointmentModel.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees(); + AppointmentModel.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers(); + AppointmentModel.PossibleResources = KalenderService.GetAllResources(); + } + + private void InitViewModel() + { + if(!MobileSessionFacade.IsUserLoggedIn() || Request.Browser.Browser.Equals("InternetExplorer") || Model?.LoggedInEmployee?.EmployeeOid is null) + { + Logout(); + return; + } + + Model.PossibleEmployees = EmployeeService.GetAllAuthorizedCompactEmployees(); + Model.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers(); + Model.PossibleResources = KalenderService.GetAllResources(); + + ReloadAppointments(); + } + + private void ReloadAppointments() + { + if(Model.LoggedInEmployee.EmployeeOid is null) + { + throw new Exception("Bei DevExpressSchedulerController.ReloadAppointments() ist die Oid des angemeldeten Benutzers ist wider Erwarten NULL!"); + } + + // ToDo: ausgewählte Ansicht laden und speichern! + //Model.ShowBetrag = UserSettingsUtils.GetSettingValueAsBool(Model.Mandator.Settings, SettingsKeys.ShowBetrag); + var user = LoggedInUser; + var userSettings = user?.Settings.FirstOrDefault(f => f.Type.Equals(SettingsType.ApplicationSettings))?.Value; + + Model.CurrentViewType = (SchedulerViewType) UserSettingsUtils.GetSettingValueAsInteger(userSettings, SettingsKeys.SchedulerViewType); + + var intervalStart = DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday); + var intervalEnd = intervalStart.AddDays(7); + + var appointments = KalenderService.LoadFilteredAppointmentsMitAufgaben + ( + Model.HasRightKalenderMitarbeitertermineAnsehen, + Model.LoggedInEmployee.EmployeeOid.Value, + intervalStart, + intervalEnd, + new List(), + new List(), + new List(), + false, + false, + false, + false, + false, + true + ); + + Model.Appointments = appointments; + } + [Authorize] public ActionResult DevExpressScheduler() { @@ -41,29 +150,12 @@ namespace BeWoPlanerMobil.Controllers { return RedirectToActionPermanent("Index", "Login"); } - - var appointments = KalenderService.LoadFilteredAppointments( - true, - Model.LoggedInEmployee?.EmployeeOid ?? 1, - DateTime.Today.AddDays(-60), - DateTime.Today.AddDays(60), - new List(), - new List(), - new List(), - false, - false, - false, - false, - false); - - Model.Appointments = appointments; Model.Resources = new List(); return View(Model); } - [Authorize] public ActionResult SchedulerPagePartial() { @@ -80,15 +172,191 @@ namespace BeWoPlanerMobil.Controllers [Authorize] private void UpdateAppointment() { - var appointmentsToInsert = SchedulerExtension.GetAppointmentsToInsert(SchedulerHelper.GetSchedulerSettings(), Model.Appointments); - var appointmentsToUpdate = SchedulerExtension.GetAppointmentsToUpdate(SchedulerHelper.GetSchedulerSettings(), Model.Appointments); - var appointmentsToRemove = SchedulerExtension.GetAppointmentsToRemove(SchedulerHelper.GetSchedulerSettings(), Model.Appointments); + var appointmentsToInsert = SchedulerExtension.GetAppointmentsToInsert( + "scheduler", + Model.Appointments, + SchedulerHelper.DefaultAppointmentStorage, + SchedulerHelper.DefaultResourceStorage); + + var appointmentsToUpdate = SchedulerExtension.GetAppointmentsToUpdate( + "scheduler", + Model.Appointments, + SchedulerHelper.DefaultAppointmentStorage, + SchedulerHelper.DefaultResourceStorage + ); + + var appointmentsToRemove = SchedulerExtension.GetAppointmentsToRemove( + "scheduler", + Model.Appointments, + SchedulerHelper.DefaultAppointmentStorage, + SchedulerHelper.DefaultResourceStorage + ); + + foreach(var appointment in appointmentsToInsert) + { + appointment.CustomerList = AppointmentModel.SelectedCustomers; + appointment.ResourceList = AppointmentModel.SelectedResources; + + appointment.EmployeeList = new List(); + + foreach(var selectedEmployee in AppointmentModel.SelectedEmployees ?? new List()) + { + appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee }); + } + + appointment.Originator = Model.LoggedInUser.Employee; + + KalenderService.InsertSchedulerAppointment(appointment); + ViewData["EditableAppointmentModel"] = appointment; + } + + foreach(var appointment in appointmentsToUpdate) + { + if(AppointmentModel.SelectedCustomers != null) + { + appointment.CustomerList = AppointmentModel.SelectedCustomers; + } + + if(AppointmentModel.SelectedResources != null) + { + appointment.ResourceList = AppointmentModel.SelectedResources; + } + + if(AppointmentModel.SelectedEmployees != null) + { + appointment.EmployeeList = new List(); + + foreach(var selectedEmployee in AppointmentModel.SelectedEmployees) + { + appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee }); + } + } + + appointment.ActivationType = ActivationTypeId.Active; + + KalenderService.UpdateSchedulerAppointments(new List { appointment }); + } + + KalenderService.DeleteSchedulerAppointments( + appointmentsToRemove + .Where(appointment => appointment.SchedulerAppointmentOid.HasValue && appointment.NewSchedulerAppointmentVersion.HasValue) + .ToDictionary(k => k.SchedulerAppointmentOid.Value, v => v.NewSchedulerAppointmentVersion.Value)); + + ReloadAppointments(); + } + + [HttpPost] + public ActionResult CustomerMultiSelectPartial(string value) + { + var selectedCustomerOids = GridLookupExtension.GetSelectedValues("CustomerGridLookup") ?? Array.Empty(); + + AppointmentModel.SelectedCustomerOids = selectedCustomerOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList(); + + return PartialView("CustomerMultiSelectPartial", AppointmentModel); + } + + [HttpPost] + public ActionResult ResourceGridLookupPartial(string value) + { + var selectedResourceOids = GridLookupExtension.GetSelectedValues("ResourceGridLookup") ?? Array.Empty(); + + AppointmentModel.SelectedResourceOids = selectedResourceOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList(); + + return PartialView("ResourceMultiSelectPartial", AppointmentModel); + } + + [HttpPost] + public ActionResult EmployeeGridLookupPartial(string value) + { + /* + * Im AppointmentModel müssen die PossibleEmployees bleiben, denn daraus wählt man die Mitarbeiter, die noch nicht mit dem Termin + * verknüpft sind und es müssen - zumindest beim Bearbeiten - die bereits mit dem Termin verbundenen Mitarbeiter-zu-Termin-Relationen + * zwischengespeichert werden. + * + */ + var selectedEmployeeOids = GridLookupExtension.GetSelectedValues("EmployeeGridLookup") ?? Array.Empty(); + + AppointmentModel.SelectedEmployeeOids = selectedEmployeeOids.Where(oid => oid.HasValue).Select(oid => oid.Value).ToList(); + + return PartialView("EmployeeMultiSelectPartial", AppointmentModel); } [Authorize] - public override string SaveCollapsibleStatus(bool isOpen, string identifier) + public string SelectActiveViewType(string viewTypeName) { - return SaveCollapsibleStatusToModel(Model, isOpen, identifier); + if(Enum.TryParse(viewTypeName, out var viewType)) + { + Model.CurrentViewType = viewType; + + UpdateUserSettingsWithoutReload(SettingsKeys.SchedulerViewType, ((int) viewType).ToString()); + } + + return LeerzeichenFuerGetMethoden; + } + + [Authorize] + public ActionResult CustomCallbackAction(string apptID, string actionId, string[] args) + { + if(actionId == "ToServiceRecord") + { + // Serientermin + if(apptID.Contains("_")) + { + var splitApptId = apptID.Split('_'); + + var selectedAppointmentOid = long.Parse(splitApptId[0]); + var recurrenceIndex = int.Parse(splitApptId[1]); + + // Hier dann Ausnahme bilden mit ServiceRecord? + var appointment = GetAppointmentFromModelByOid(selectedAppointmentOid); + + var test = appointment is null; + } + else + { + if(long.TryParse(apptID, out var selectedAppointmentOid)) + { + var appointment = GetAppointmentFromModelByOid(selectedAppointmentOid); + + var test = appointment is null; + } + } + + return RedirectToActionPermanent("Main", "Main"); + } + + if(actionId == "ShowAvailableEmployees") + { + var startString = args[0]; + var endString = args[1]; + + var start = DateTime.Parse(startString); + var end = DateTime.Parse(endString); + + var availabilities = ReportService.GetMitarbeiterverfuegbarkeiten(AppointmentModel.PossibleEmployees, start, end); + var employee2Overtime = new EmployeeAvailabilityObject(start, end, availabilities); + + Model.EmployeeAvailabilityObject = employee2Overtime; + + //ViewData[ViewDataConstants.SchedulerEmployeeAvailabilityConstant] = employee2Overtime; + + return PartialView("SchedulerPagePartial", Model); + } + + return PartialView("SchedulerPagePartial", Model); + } + + private SchedulerAppointmentDC GetAppointmentFromModelByOid(long oid) + { + foreach(SchedulerAppointmentDC appointment in Model.Appointments) + { + if(appointment.SchedulerAppointmentOid == oid) + { + return appointment; + } + } + + return null; } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Controllers/MainController.cs b/BeWoPlanerMobil/Controllers/MainController.cs index 8643b702f..ed488e014 100644 --- a/BeWoPlanerMobil/Controllers/MainController.cs +++ b/BeWoPlanerMobil/Controllers/MainController.cs @@ -3369,7 +3369,7 @@ namespace BeWoPlanerMobil.Controllers [Authorize] public ActionResult RedirectToPersons() { - return RedirectToActionPermanent("Person", "Person", new { id = Model.LoggedInEmployee?.EmployeeOid }); + return RedirectToActionPermanent("Person", "Person"); } [Authorize] @@ -4230,7 +4230,7 @@ namespace BeWoPlanerMobil.Controllers return LeerzeichenFuerGetMethoden; } - + /// diff --git a/BeWoPlanerMobil/Controllers/PersonController.cs b/BeWoPlanerMobil/Controllers/PersonController.cs index bffea0888..c9eea7d87 100644 --- a/BeWoPlanerMobil/Controllers/PersonController.cs +++ b/BeWoPlanerMobil/Controllers/PersonController.cs @@ -89,7 +89,7 @@ namespace BeWoPlanerMobil.Controllers LoadPersonToModel(selectedPersonOid); } - return RedirectToAction("Person", Model); + return RedirectToActionPermanent("Person", new { id = selectedPersonOid }); } private void InitViewModel() @@ -144,7 +144,6 @@ namespace BeWoPlanerMobil.Controllers } #region Dokumente - [Authorize] public ActionResult SaveDescriptionChange(string descriptionText, long? fileOid) { diff --git a/BeWoPlanerMobil/Global.asax.cs b/BeWoPlanerMobil/Global.asax.cs index 6b5d8ac7c..9df8e6a32 100644 --- a/BeWoPlanerMobil/Global.asax.cs +++ b/BeWoPlanerMobil/Global.asax.cs @@ -1,12 +1,14 @@ +using DevExpress.Web.Mvc; +using log4net.Config; using System; +using System.Globalization; using System.Net; +using System.Threading; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; -using DevExpress.Web.Mvc; -using log4net.Config; namespace BeWoPlanerMobil @@ -16,9 +18,14 @@ namespace BeWoPlanerMobil public class MvcApplication : HttpApplication { - protected void Application_Start() + private readonly CultureInfo _CultureInfo = new CultureInfo("de-DE"); + + protected void Application_Start() { - AreaRegistration.RegisterAllAreas(); + Thread.CurrentThread.CurrentCulture = _CultureInfo; + Thread.CurrentThread.CurrentUICulture = _CultureInfo; + + AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); @@ -38,7 +45,11 @@ namespace BeWoPlanerMobil protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) { - DevExpressHelper.Theme = "Metropolis"; + DevExpressHelper.Theme = "MaterialCompact"; + DevExpress.Web.ASPxWebControl.GlobalThemeBaseColor = "#FF5A00"; + + Thread.CurrentThread.CurrentCulture = _CultureInfo; + Thread.CurrentThread.CurrentUICulture = _CultureInfo; } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/AbstractModel.cs b/BeWoPlanerMobil/Models/AbstractModel.cs index 023327a09..36e2080aa 100644 --- a/BeWoPlanerMobil/Models/AbstractModel.cs +++ b/BeWoPlanerMobil/Models/AbstractModel.cs @@ -289,5 +289,7 @@ namespace BeWoPlanerMobil.Models public bool HasRightToViewPersonDocuments => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.DokumentePersonen }); public bool HasRightToViewPersonUmfeld => CheckForAtLeastOneRight(new[] { UserRightType.ViewAll, UserRightType.Person_FamilyView }); + + public bool HasRightKalenderMitarbeitertermineAnsehen => CheckRight(UserRightType.KalenderMitarbeitertermineAnsehen); } -} \ No newline at end of file +} diff --git a/BeWoPlanerMobil/Models/AppointmentModel.cs b/BeWoPlanerMobil/Models/AppointmentModel.cs new file mode 100644 index 000000000..05807a792 --- /dev/null +++ b/BeWoPlanerMobil/Models/AppointmentModel.cs @@ -0,0 +1,201 @@ +using BS.Shared.DataContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using BS.Shared.DataContracts.Compact; + +namespace BeWoPlanerMobil.Models +{ + [Serializable] + public class AppointmentModel : AbstractModel + { + public AppointmentSessionModel AppointmentSessionModel => SessionModel as AppointmentSessionModel; + + public long? Oid { get; set; } + public int? EventType { get; set; } + public int? Label { get; set; } + public bool AllDay { get; set; } + public string Location { get; set; } + public int? Status { get; set; } + public string RecurrenceInfo { get; set; } + public string Subject { get; set; } + public DateTime? StartTime { get; set; } + public DateTime? EndTime { get; set; } + public string Description { get; set; } + public bool IsPrivate { get; set; } + public bool CanBeEdited { get; set; } + public bool IsTask { get; set; } + public DateTime? DueDate { get; set; } + public DateTime? CompletedDate { get; set; } + public string CompletedNotice { get; set; } + public string CompletedUser { get; set; } + public string TaskDescription { get; set; } + + public List SelectedCustomers + { + get + { + return SelectedCustomerOids is null ? + null : + PossibleCustomers.Where(customer => SelectedCustomerOids.Contains(customer.CustomerOid)).ToList(); + } + + set + { + SelectedCustomerOids = value?.Select(customer => customer.CustomerOid).ToList(); + } + } + + public List SelectedResources + { + get + { + return SelectedResourceOids is null ? + null : + PossibleResources.Where(resource => resource.ResourceOid.HasValue && SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList(); + } + + set + { + SelectedResourceOids = value?.Where(resource => resource.ResourceOid.HasValue).Select(resource => resource.ResourceOid.Value).ToList(); + } + } + + public bool HasServiceRecordEntry { get; set; } + public List ServiceRecordList { get; set; } + + public List PossibleCustomers { get; set; } + public List PossibleResources { get; set; } + + + public List SelectedCustomerOids + { + get => AppointmentSessionModel.SelectedCustomerOids; + set => AppointmentSessionModel.SelectedCustomerOids = value; + } + + + + public List SelectedResourceOids + { + get => AppointmentSessionModel.SelectedResourceOids; + set => AppointmentSessionModel.SelectedResourceOids = value; + } + + + + + /* Mitarbeiter */ + public List PossibleEmployees { get; set; } + + public List SelectedEmployee2SchedulerAppointments { get; set; } + + public List SelectedEmployees { get; set; } + + public List SelectedEmployeeOids + { + get => AppointmentSessionModel.SelectedEmployeeOids; + set => AppointmentSessionModel.SelectedEmployeeOids = value; + } + + public List SelectedEmployees2Appointments + { + get => AppointmentSessionModel.SelectedEmployees2Appointments; + set => AppointmentSessionModel.SelectedEmployees2Appointments = value; + } + /* /Mitarbeiter */ + + + + + + + + public AppointmentModel() + { + SessionModel = new AppointmentSessionModel(); + } + + public AppointmentModel(List possibleCustomers, List possibleResources, List possibleEmployees) + { + PossibleCustomers = possibleCustomers; + PossibleResources = possibleResources; + PossibleEmployees = possibleEmployees; + + SessionModel = new AppointmentSessionModel(); + } + + public AppointmentModel(SchedulerAppointmentDC appointment) + { + if(appointment is null) + { + return; + } + + SessionModel = new AppointmentSessionModel(); + + Oid = appointment.SchedulerAppointmentOid; + EventType = appointment.Type; + AllDay = appointment.AllDay; + Location = appointment.Location; + Status = appointment.Status; + RecurrenceInfo = appointment.RecurrenceInfo; + Subject = appointment.Subject; + StartTime = appointment.StartDate; + EndTime = appointment.EndDate; + Description = appointment.Description; + + SelectedCustomers = appointment.CustomerList; + SelectedEmployees = appointment.EmployeeList?.Select(employee2Appointment => employee2Appointment.Employee)?.ToList(); + SelectedEmployee2SchedulerAppointments = appointment.EmployeeList; + SelectedResources = appointment.ResourceList; + HasServiceRecordEntry = appointment.HasServiceRecordEntry; + ServiceRecordList = appointment.ServiceRecordList; + CanBeEdited = appointment.CanBeEdited; + IsPrivate = appointment.IsPrivate; + + IsTask = appointment.IsTask; + DueDate = appointment.DueDate; + CompletedDate = appointment.CompletedDate; + CompletedNotice = appointment.CompletedNotice; + CompletedUser = appointment.CompletedUser; + TaskDescription = appointment.TaskDescription; + } + + public virtual void Assign(AppointmentModel source) + { + if(source is null) + { + return; + } + + Oid = source.Oid; + EventType = source.EventType; + Label = source.Label; + AllDay = source.AllDay; + Location = source.Location; + Status = source.Status; + RecurrenceInfo = source.RecurrenceInfo; + Subject = source.Subject; + StartTime = source.StartTime; + EndTime = source.EndTime; + Description = source.Description; + + SelectedCustomers = source.SelectedCustomers; + SelectedEmployees = source.SelectedEmployees; + SelectedEmployee2SchedulerAppointments = source.SelectedEmployee2SchedulerAppointments; + SelectedResources = source.SelectedResources; + HasServiceRecordEntry = source.HasServiceRecordEntry; + ServiceRecordList = source.ServiceRecordList; + CanBeEdited = source.CanBeEdited; + IsPrivate = source.IsPrivate; + + IsTask = source.IsTask; + DueDate = source.DueDate; + CompletedDate = source.CompletedDate; + CompletedNotice = source.CompletedNotice; + CompletedUser = source.CompletedUser; + TaskDescription = source.TaskDescription; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/AppointmentSessionModel.cs b/BeWoPlanerMobil/Models/AppointmentSessionModel.cs new file mode 100644 index 000000000..6082de86e --- /dev/null +++ b/BeWoPlanerMobil/Models/AppointmentSessionModel.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; + +namespace BeWoPlanerMobil.Models +{ + public class AppointmentSessionModel : BaseSessionModel + { + public List SelectedCustomerOids { get; set; } + public List SelectedEmployeeOids { get; set; } + public List SelectedResourceOids { get; set; } + + public List SelectedEmployees2Appointments { get; set; } + + public override void ResetValues() + { + base.ResetValues(); + + SelectedCustomerOids = null; + SelectedEmployeeOids = null; + SelectedResourceOids = null; + SelectedEmployees2Appointments = null; + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/DevExpressSchedulerModel.cs b/BeWoPlanerMobil/Models/DevExpressSchedulerModel.cs index 8be77a67b..04f900e85 100644 --- a/BeWoPlanerMobil/Models/DevExpressSchedulerModel.cs +++ b/BeWoPlanerMobil/Models/DevExpressSchedulerModel.cs @@ -1,19 +1,57 @@ using System.Collections; -using DevExpress.Web.ASPxScheduler; +using System.Collections.Generic; +using BeWoPlanerMobil.Util.SchedulerUtils; +using BS.Shared.DataContracts; +using BS.Shared.DataContracts.Compact; +using DevExpress.XtraScheduler; namespace BeWoPlanerMobil.Models { public class DevExpressSchedulerModel : AbstractModel { + public DevExpressSchedulerModel() + { + SessionModel = new DevExpressSchedulerSessionModel(); + SessionModel.ResetValues(); + } + + public SchedulerViewType CurrentViewType + { + get => DevExpressSchedulerSessionModel.CurrentSchedulerViewType; + set => DevExpressSchedulerSessionModel.CurrentSchedulerViewType = value; + } + + public DevExpressSchedulerSessionModel DevExpressSchedulerSessionModel => SessionModel as DevExpressSchedulerSessionModel; + + public List PossibleCustomers { get; set; } + public List PossibleResources { get; set; } + public List PossibleEmployees { get; set; } + + public List SelectedCustomers { get; set; } + public List SelectedResources { get; set; } + public List SelectedEmployees { get; set; } + + public List SelectedCustomerOids + { + get => DevExpressSchedulerSessionModel.SelectedCustomerOids; + set => DevExpressSchedulerSessionModel.SelectedCustomerOids = value; + } + + public List SelectedEmployeeOids + { + get => DevExpressSchedulerSessionModel.SelectedEmployeeOids; + set => DevExpressSchedulerSessionModel.SelectedEmployeeOids = value; + } + + public List SelectedResourceOids + { + get => DevExpressSchedulerSessionModel.SelectedResourceOids; + set => DevExpressSchedulerSessionModel.SelectedResourceOids = value; + } + + public EmployeeAvailabilityObject EmployeeAvailabilityObject { get; set; } + public IEnumerable Appointments { get; set; } public IEnumerable Resources { get; set; } - public string Type { get; set; } - } - - public class CustomAppointmentTemplateContainer : AppointmentFormTemplateContainer - { - public CustomAppointmentTemplateContainer(ASPxScheduler scheduler) : base(scheduler) { } - - public string CustomInfo => Appointment.CustomFields["AppointmentCustomField"] != null ? Appointment.CustomFields["AppointmentCustomField"].ToString() : ""; } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Models/DevExpressSchedulerSessionModel.cs b/BeWoPlanerMobil/Models/DevExpressSchedulerSessionModel.cs index f2c8276a6..1a5999d9d 100644 --- a/BeWoPlanerMobil/Models/DevExpressSchedulerSessionModel.cs +++ b/BeWoPlanerMobil/Models/DevExpressSchedulerSessionModel.cs @@ -1,12 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; +using System.Collections.Generic; +using DevExpress.XtraScheduler; namespace BeWoPlanerMobil.Models { - public class DevExpressSchedulerSessionModel + public class DevExpressSchedulerSessionModel : BaseSessionModel { + public List SelectedCustomerOids { get; set; } + public List SelectedEmployeeOids { get; set; } + public List SelectedResourceOids { get; set; } + public SchedulerViewType CurrentSchedulerViewType { get; set; } + public override void ResetValues() + { + base.ResetValues(); + + SelectedCustomerOids = null; + SelectedEmployeeOids = null; + SelectedResourceOids = null; + } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js index bac0116f9..f1acec2eb 100644 --- a/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js +++ b/BeWoPlanerMobil/Scripts/ownSoft-Scripts/mobileUtils.js @@ -528,4 +528,28 @@ function array2Csv(array) { } return result.replace(/,\s*$/, ""); +} + +function getTimeStamp(dateObject, showSeconds, showMilliseconds) { + if(showSeconds === false) { + showMilliseconds = false; + } + + const dd = String(dateObject.getDate()).padStart(2, "0"); + const MM = String(dateObject.getMonth() + 1).padStart(2, "0"); + const yyyy = dateObject.getFullYear(); + const HH = String(dateObject.getHours()).padStart(2, "0"); + const mm = String(dateObject.getMinutes()).padStart(2, "0"); + const ss = String(dateObject.getSeconds()).padStart(2, "0"); + const ms = String(dateObject.getMilliseconds()).padStart(2, "0"); + + if(showSeconds === true) { + if(showMilliseconds === true) { + return `${dd}.${MM}.${yyyy} ${HH}:${mm}:${ss}.${ms}`; + } else { + return `${dd}.${MM}.${yyyy} ${HH}:${mm}:${ss}`; + } + } else { + return `${dd}.${MM}.${yyyy} ${HH}:${mm}`; + } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Service/MobileSessionFacade.cs b/BeWoPlanerMobil/Service/MobileSessionFacade.cs index 2de45d149..50ff3d2c9 100644 --- a/BeWoPlanerMobil/Service/MobileSessionFacade.cs +++ b/BeWoPlanerMobil/Service/MobileSessionFacade.cs @@ -1,15 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using System.Web; - -using BeWo.Data.Entities; -using BeWo.Service.DCEntityMapper; +using System.Web; using BeWo.Service.ServiceContracts; using BeWo.Service.ServiceImplementations; using BeWoPlanerMobil.Models; -using BS.Shared; -using BS.Shared.DataContracts; -using BS.Shared.DataContracts.Compact; using ReportingService.ServiceContracts; using ReportingService.ServiceImplementations; diff --git a/BeWoPlanerMobil/Util/Constants/ViewDataConstants.cs b/BeWoPlanerMobil/Util/Constants/ViewDataConstants.cs new file mode 100644 index 000000000..f0380320f --- /dev/null +++ b/BeWoPlanerMobil/Util/Constants/ViewDataConstants.cs @@ -0,0 +1,7 @@ +namespace BeWoPlanerMobil.Util.Constants +{ + public class ViewDataConstants + { + public static string SchedulerEmployeeAvailabilityConstant => "SchedulerEmployeeAvailability"; + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/MobileUtils.cs b/BeWoPlanerMobil/Util/MobileUtils.cs index afed31c63..a7bd9e74e 100644 --- a/BeWoPlanerMobil/Util/MobileUtils.cs +++ b/BeWoPlanerMobil/Util/MobileUtils.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.Globalization; using System.Linq; using System.Text; @@ -531,5 +532,98 @@ namespace BeWoPlanerMobil.Util return $"{(serviceRecord.Start.Value.AddMinutes(duration))}"; } + + public static string GetColorAsHex(System.Windows.Media.Color color) + { + return $"{color.R:X2}{color.G:X2}{color.B:X2}"; + } + + public static string ColorArgbToRgbHex(string color) + { + if(color.StartsWith("#") && color.Length == 9) + { + return $"#{color.Substring(3)}"; + } + + return null; + } + + public static string GetAppointmentRightGradient(bool hasCustomers, List colors, int colorCountLimit = 4) + { + if(colors is null) + { + colors = new List(); + } + + if(colors.Count == 0 && false == hasCustomers) + { + return string.Empty; + } + + if(hasCustomers && colors.Count == 0) + { + return "linear-gradient(#3B7799 100.0%)"; + } + + if(colors.Count > colorCountLimit) + { + colors = colors.GetRange(0, colorCountLimit); + } + + var colorCount = colors.Count; + var startingPoint = hasCustomers ? 50 : 0; + var divisor = hasCustomers ? 50 : 100; + + if(colorCount == 1) + { + var color = colors.First(); + + return hasCustomers ? $"linear-gradient(#3B7799 50.0%, {color} 50.0%)" : $"linear-gradient({color})"; + } + + var result = hasCustomers ? "#3B7799 50.0%, " : string.Empty; + + for(var i = 0; i < colorCount; i++) + { + var currentColor = colors[i]; + + var colorWidth = (double)divisor / colorCount; + var colorStartingPoint = startingPoint + i * colorWidth; + + var colorStart = FormattableString.Invariant($"{colorStartingPoint:F1}"); + var colorEnd = FormattableString.Invariant($"{colorStartingPoint + colorWidth:F1}"); + + result += $"{currentColor} {colorStart}%, {currentColor} {colorEnd}%, "; + } + + return $"linear-gradient({result.TrimEnd().TrimEnd(',')})"; + } + + public static string GetAppointmentRightBackground(DevExpress.XtraScheduler.Appointment appointment) + { + var hasCustomers = appointment.CustomFields["Customers"] is List customerList && customerList.Any(); + + var customFieldValue = appointment.CustomFields["Resources"]; + + var resourceList = customFieldValue as List ?? new List(); + + var resourcesWithColors = resourceList.Where(resource => false == IsNullOrWhiteSpace(resource.Color)).ToList(); + + var resourceColors = (resourcesWithColors.Count > 4 ? resourcesWithColors.GetRange(0, 4) : resourcesWithColors).Select(resource => ColorArgbToRgbHex(resource.Color)).ToList(); + + return GetAppointmentRightGradient(hasCustomers, resourceColors); + } + + public static string GetLeftAppointmentBorder(DevExpress.XtraScheduler.Appointment appointment) + { + if(appointment.CustomFields[nameof(SchedulerAppointmentDC.Originator)] is CompactEmployeeDC originator && originator.FilterableBrush?.Color != null) + { + var color = originator.FilterableBrush.Color; + + return $"5px solid #{GetColorAsHex(color)}"; + } + + return "5px solid #C0FFD0"; + } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/SchedulerUtils/CustomAppointmentTemplateContainer.cs b/BeWoPlanerMobil/Util/SchedulerUtils/CustomAppointmentTemplateContainer.cs new file mode 100644 index 000000000..7032934c8 --- /dev/null +++ b/BeWoPlanerMobil/Util/SchedulerUtils/CustomAppointmentTemplateContainer.cs @@ -0,0 +1,9 @@ +using DevExpress.Web.ASPxScheduler; + +namespace BeWoPlanerMobil.Util.SchedulerUtils +{ + public class CustomAppointmentTemplateContainer : AppointmentFormTemplateContainer + { + public CustomAppointmentTemplateContainer(ASPxScheduler scheduler) : base(scheduler) { } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Util/SchedulerUtils/EmployeeAvailabilityObject.cs b/BeWoPlanerMobil/Util/SchedulerUtils/EmployeeAvailabilityObject.cs new file mode 100644 index 000000000..84e471171 --- /dev/null +++ b/BeWoPlanerMobil/Util/SchedulerUtils/EmployeeAvailabilityObject.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using BS.Shared.DataContracts.Compact; +using BS.Shared.Extensions; + +namespace BeWoPlanerMobil.Util.SchedulerUtils +{ + public class EmployeeAvailabilityObject + { + public DateTime IntervalStart { get; set; } + public DateTime IntervalEnd { get; set; } + public Dictionary Employee2Overtime { get; set; } + + public string Interval + { + get + { + var von = IntervalStart.IsTimeZero() ? $"{IntervalStart:dd.MM.yy}" : $"{IntervalStart:dd.MM.yy HH:mm}"; + var bis = IntervalEnd.IsTimeZero() ? $"{IntervalStart:dd.MM.yy}" : $"{IntervalStart:dd.MM.yy HH:mm}"; + + return $"Verfügbarkeit vom {von} bis {bis}"; + } + } + + public EmployeeAvailabilityObject(DateTime intervalStart, DateTime intervalEnd, Dictionary employee2Overtime) + { + IntervalStart = intervalStart; + IntervalEnd = intervalEnd; + Employee2Overtime = employee2Overtime.OrderBy(kvp => kvp.Key.DetailDescription).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + } + } +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/CustomAppointmentFormPartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/CustomAppointmentFormPartial.cshtml new file mode 100644 index 000000000..5955657f9 --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/CustomAppointmentFormPartial.cshtml @@ -0,0 +1,255 @@ +@model BeWoPlanerMobil.Models.AppointmentModel + +@using BS.Shared.DataContracts +@using DevExpress.Web.Mvc.UI + +@{ + Html.EnableClientValidation(); + Html.EnableUnobtrusiveJavaScript(); +} + + + +@using(Html.BeginForm()) +{ + + @* Start *@ + + + + + + @* Ende *@ + + + + + + @* Private & Ganztägig *@ + + + + + @* Mitarbeiter, Klienten, Ressourcen *@ + + + + + @* Betreff *@ + + + + + + @* Ort *@ + + + + + + @* Notiz *@ + + + + + + +
+ @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.StartDate); + settings.Text = "Start:"; + settings.Width = Unit.Percentage(100); + }).GetHtml() + + @Html.DevExpress().DateEdit( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.StartDate); + settings.Properties.EditFormat = EditFormat.DateTime; + settings.ShowModelErrors = true; + settings.Properties.ValidationSettings.Display = Display.Dynamic; + settings.Width = Unit.Percentage(100); + }).Bind(Model.StartTime).GetHtml() +
+ @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.EndDate); + settings.Text = "Ende:"; + settings.Width = Unit.Percentage(100); + }).GetHtml() + + @Html.DevExpress().DateEdit( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.EndDate); + settings.Properties.EditFormat = EditFormat.DateTime; + settings.ShowModelErrors = true; + settings.Properties.ValidationSettings.Display = Display.Dynamic; + settings.Width = Unit.Percentage(100); + }).Bind(Model.EndTime).GetHtml() +
+ + + + + + + +
+ @Html.DevExpress().CheckBox( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.IsPrivate); + settings.Width = Unit.Percentage(100); + }).Bind(Model.IsPrivate).GetHtml() + + @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.IsPrivate); + settings.Text = "Privat"; + settings.Width = Unit.Percentage(100); + settings.ControlStyle.CssClass = "centeredLabel"; + }).GetHtml() + + @Html.DevExpress().CheckBox( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.AllDay); + settings.Width = Unit.Percentage(100); + }).Bind(Model.AllDay).GetHtml() + + @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.AllDay); + settings.Text = "Ganztägig"; + settings.Width = Unit.Percentage(100); + settings.ControlStyle.CssClass = "centeredLabel"; + }).GetHtml() +
+
+ + + + + + +
+ @Html.Partial("EmployeeMultiSelectPartial") + + @Html.Partial("CustomerMultiSelectPartial") + + @Html.Partial("ResourceMultiSelectPartial") +
+
+ @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Subject); + settings.Text = "Betreff:"; + settings.Width = Unit.Percentage(100); + }).GetHtml() + + @Html.DevExpress().TextBox( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.Subject); + settings.ShowModelErrors = true; + settings.Properties.ValidationSettings.Display = Display.Dynamic; + settings.Width = Unit.Percentage(100); + }).Bind(Model.Subject).GetHtml() +
+ @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Location); + settings.Text = "Ort:"; + settings.Width = Unit.Percentage(100); + }).GetHtml() + + @Html.DevExpress().TextBox( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.Location); + settings.ShowModelErrors = true; + settings.Properties.ValidationSettings.Display = Display.Dynamic; + settings.Width = Unit.Percentage(100); + }).Bind(Model.Location).GetHtml() +
+ @Html.DevExpress().Label( + settings => + { + settings.AssociatedControlName = nameof(SchedulerAppointmentDC.Description); + settings.Text = "Notiz:"; + settings.Width = Unit.Percentage(100); + }).GetHtml() +
+ @Html.DevExpress().Memo( + settings => + { + settings.Name = nameof(SchedulerAppointmentDC.Description); + settings.Properties.Rows = 4; + settings.ShowModelErrors = true; + settings.Properties.ValidationSettings.Display = Display.Dynamic; + settings.Width = Unit.Percentage(100); + }).Bind(Model.Description).GetHtml() +
+ + @Html.DevExpress().AppointmentRecurrenceForm(ViewBag.AppointmentRecurrenceFormSettings).GetHtml() + + + + + + + +
+ @Html.DevExpress().Button( + settings => + { + settings.Name = "Apply"; + settings.Text = "OK"; + settings.ClientSideEvents.Click = "OnAppointmentFormSave"; + }).GetHtml() + + @Html.DevExpress().Button( + settings => + { + settings.Name = "Cancel"; + settings.Text = "Abbrechen"; + settings.ClientSideEvents.Click = "function(s, e){ scheduler.AppointmentFormCancel(); }"; + }).GetHtml() + + @Html.DevExpress().Button( + settings => + { + settings.Name = "Delete"; + settings.Text = "Löschen"; + settings.Enabled = ViewBag.DeleteButtonEnabled; + settings.ClientSideEvents.Click = "function(s, e){ scheduler.AppointmentFormDelete(); }"; + }).GetHtml() +
+ + + + + +
+ @Html.DevExpress().SchedulerStatusInfo( + settings => + { + settings.Name = "schedulerStatusInfo"; + settings.Priority = 1; + settings.SchedulerName = "scheduler"; + }).GetHtml() +
+} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/CustomerMultiSelectPartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/CustomerMultiSelectPartial.cshtml new file mode 100644 index 000000000..c95f31d16 --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/CustomerMultiSelectPartial.cshtml @@ -0,0 +1,50 @@ +@model BeWoPlanerMobil.Models.AppointmentModel + +@using BS.Shared.DataContracts.Compact +@using DevExpress.Web.Mvc.UI + +@Html.DevExpress().GridLookup(settings => +{ + settings.Name = "CustomerGridLookup"; + settings.GridViewProperties.CallbackRouteValues = new { controller = "DevExpressScheduler", Action = "CustomerMultiSelectPartial" }; + settings.KeyFieldName = nameof(CompactCustomerDC.CustomerOid); + + settings.CommandColumn.ShowSelectCheckbox = true; + settings.CommandColumn.Visible = true; + + settings.Columns.Add(c => + { + c.FieldName = nameof(CompactCustomerDC.CustomerOid); + c.Visible = false; + }); + + settings.Columns.Add(c => + { + c.FieldName = nameof(CompactCustomerDC.DetailDescription); + c.Caption = nameof(CompactCustomerDC.DetailDescription); + }); + + settings.Width = Unit.Percentage(100); + settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple; + settings.Properties.TextFormatString = "{1}"; + settings.Properties.MultiTextSeparator = "; "; + settings.Properties.Width = 250; + settings.Properties.NullText = "Klienten"; + + settings.GridViewProperties.Settings.ShowFilterRow = true; + settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible; + settings.GridViewProperties.SettingsPager.EnableAdaptivity = true; + settings.GridViewProperties.SettingsPager.PageSize = 7; + settings.GridViewProperties.SetStatusBarTemplateContent(c => + { + ViewContext.Writer.Write("
"); + Html.DevExpress().Button(btnSettings => + { + btnSettings.Name = "btnClose"; + btnSettings.UseSubmitBehavior = false; + btnSettings.Text = "Schließen"; + btnSettings.ClientSideEvents.Click = "CloseCustomerGridLookup"; + }).Render(); + ViewContext.Writer.Write("
"); + }); +}).BindList(Model.PossibleCustomers).Bind(Model.SelectedCustomerOids).GetHtml() \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/DevExpressScheduler.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/DevExpressScheduler.cshtml index 9569735f6..b3da0836b 100644 --- a/BeWoPlanerMobil/Views/DevExpressScheduler/DevExpressScheduler.cshtml +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/DevExpressScheduler.cshtml @@ -1,7 +1,127 @@ -@model BeWoPlanerMobil.Models.DevExpressSchedulerModel +@using BeWoPlanerMobil.Util.Constants +@using BeWoPlanerMobil.Util.SchedulerUtils +@using BS.Shared.DataContracts.Compact +@model BeWoPlanerMobil.Models.DevExpressSchedulerModel @{ ViewBag.Title = "DevExpressScheduler"; } -@Html.Partial("SchedulerPagePartial", Model) \ No newline at end of file + + +@using(Html.BeginForm()) +{ + @Html.Partial("SchedulerPagePartial", Model) +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/EmployeeMultiSelectPartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/EmployeeMultiSelectPartial.cshtml new file mode 100644 index 000000000..61fee524b --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/EmployeeMultiSelectPartial.cshtml @@ -0,0 +1,50 @@ +@model BeWoPlanerMobil.Models.AppointmentModel +@using BS.Shared.DataContracts.Compact +@using DevExpress.Web.Mvc.UI + +@Html.DevExpress().GridLookup(settings => +{ + // ToDo: Es müssen CompcatEmployee-Objekte sein! + settings.Name = "EmployeeGridLookup"; + settings.GridViewProperties.CallbackRouteValues = new { controller = "DevExpressScheduler", Action = "EmployeeGridLookupPartial" }; + settings.KeyFieldName = nameof(CompactEmployeeDC.EmployeeOid); + + settings.CommandColumn.ShowSelectCheckbox = true; + settings.CommandColumn.Visible = true; + + settings.Columns.Add(c => + { + c.FieldName = nameof(CompactEmployeeDC.EmployeeOid); + c.Visible = false; + }); + + settings.Columns.Add(c => + { + c.FieldName = nameof(CompactEmployeeDC.DetailDescription); + c.Caption = nameof(CompactEmployeeDC.DetailDescription); + }); + + settings.Width = Unit.Percentage(100); + settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple; + settings.Properties.TextFormatString = "{1}"; + settings.Properties.MultiTextSeparator = "; "; + settings.Properties.Width = 250; + settings.Properties.NullText = "Mitarbeiter"; + + settings.GridViewProperties.Settings.ShowFilterRow = true; + settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible; + settings.GridViewProperties.SettingsPager.EnableAdaptivity = true; + settings.GridViewProperties.SettingsPager.PageSize = 7; + settings.GridViewProperties.SetStatusBarTemplateContent(c => + { + ViewContext.Writer.Write("
"); + Html.DevExpress().Button(btnSettings => + { + btnSettings.Name = "btnClose3"; + btnSettings.UseSubmitBehavior = false; + btnSettings.Text = "Schließen"; + btnSettings.ClientSideEvents.Click = "CloseEmployeeGridLookup"; + }).Render(); + ViewContext.Writer.Write("
"); + }); +}).BindList(Model.PossibleEmployees).Bind(Model.SelectedEmployeeOids).GetHtml() \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/HorizontalAppointmentTemplatePartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/HorizontalAppointmentTemplatePartial.cshtml new file mode 100644 index 000000000..8b3dad682 --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/HorizontalAppointmentTemplatePartial.cshtml @@ -0,0 +1,52 @@ +@using BeWoPlanerMobil.Util +@model DevExpress.XtraScheduler.Appointment + +@functions +{ + string GetSubjectAndLocation() + { + var locationPart = false == string.IsNullOrWhiteSpace(Model.Location) ? $" ({Model.Location})" : string.Empty; + + return $" {Model.Subject}{locationPart}"; + } + + string GetHeaderTime() + { + return Model.AllDay ? string.Empty : $"{Model.Start.ToShortTimeString()} - {Model.End.ToShortTimeString()}"; + } +} + + + +
+
+ +
+
\ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/ResourceMultiSelectPartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/ResourceMultiSelectPartial.cshtml new file mode 100644 index 000000000..5a7b1f3ed --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/ResourceMultiSelectPartial.cshtml @@ -0,0 +1,48 @@ +@model BeWoPlanerMobil.Models.AppointmentModel +@using BS.Shared.DataContracts +@using DevExpress.Web.Mvc.UI + +@Html.DevExpress().GridLookup(settings => +{ + settings.Name = "ResourceGridLookup"; + settings.GridViewProperties.CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "ResourceGridLookupPartial" }; + settings.KeyFieldName = nameof(ResourceDC.ResourceOid); + + settings.CommandColumn.ShowSelectCheckbox = true; + settings.CommandColumn.Visible = true; + + settings.Columns.Add(c => + { + c.FieldName = nameof(ResourceDC.ResourceOid); + c.Visible = false; + }); + + settings.Columns.Add(c => + { + c.FieldName = nameof(ResourceDC.Name); + c.Caption = nameof(ResourceDC.Name); + }); + + settings.Width = Unit.Percentage(100); + settings.Properties.SelectionMode = GridLookupSelectionMode.Multiple; + settings.Properties.TextFormatString = "{1}"; + settings.Properties.MultiTextSeparator = "; "; + settings.Properties.NullText = "Ressourcen"; + + settings.GridViewProperties.Settings.ShowFilterRow = true; + settings.GridViewProperties.Settings.ShowStatusBar = GridViewStatusBarMode.Visible; + settings.GridViewProperties.SettingsPager.EnableAdaptivity = true; + settings.GridViewProperties.SettingsPager.PageSize = 7; + settings.GridViewProperties.SetStatusBarTemplateContent(c => + { + ViewContext.Writer.Write("
"); + Html.DevExpress().Button(btnSettings => + { + btnSettings.Name = "btnClose2"; + btnSettings.UseSubmitBehavior = false; + btnSettings.Text = "Schließen"; + btnSettings.ClientSideEvents.Click = "CloseResourceGridLookup"; + }).Render(); + ViewContext.Writer.Write("
"); + }); +}).BindList(Model.PossibleResources).Bind(Model.SelectedResourceOids).GetHtml() \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerHelper.cs b/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerHelper.cs index 7371ff96d..f2115d4e6 100644 --- a/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerHelper.cs +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerHelper.cs @@ -1,83 +1,62 @@ -using System; -using System.Web.Mvc; -using System.Web.UI.WebControls; +using DevExpress.Web.ASPxScheduler; using DevExpress.Web.Mvc; -using DevExpress.XtraScheduler; -using DayView = DevExpress.Web.ASPxScheduler.DayView; - -// TODO: - -/* - * - * ToDo am 08.12.2025: Folgende Klassen erstellen: - * - * 1: SchedulerDataHelper mit Datenbankzugriffen - * GetAppointments() - * GetResources() - * - * - * - * - * - * - * - * 1. SchedulerDataObject - * - */ +using BS.Shared.DataContracts; namespace BeWoPlanerMobil.Views.DevExpressScheduler { public static class SchedulerHelper { private static MVCxAppointmentStorage _DefaultAppointmentStorage; - public static MVCxAppointmentStorage DefaultAppointmentStorage => _DefaultAppointmentStorage ?? (_DefaultAppointmentStorage = CreateDefaultAppointmentStorage()); + private static MVCxResourceStorage _DefaultResourceStorage; + public static MVCxResourceStorage DefaultResourceStorage => _DefaultResourceStorage ?? (_DefaultResourceStorage = CreateDefaultResourceStorage()); + private static MVCxAppointmentStorage CreateDefaultAppointmentStorage() { var appointmentStorage = new MVCxAppointmentStorage(); - SetupMappings(appointmentStorage); + appointmentStorage.Mappings.AppointmentId = nameof(SchedulerAppointmentDC.SchedulerAppointmentOid); + appointmentStorage.Mappings.Type = nameof(SchedulerAppointmentDC.Type); + appointmentStorage.Mappings.Label = nameof(SchedulerAppointmentDC.LabelKey); + appointmentStorage.Mappings.AllDay = nameof(SchedulerAppointmentDC.AllDay); + appointmentStorage.Mappings.Location = nameof(SchedulerAppointmentDC.Location); + appointmentStorage.Mappings.Status = nameof(SchedulerAppointmentDC.Status); + appointmentStorage.Mappings.RecurrenceInfo = nameof(SchedulerAppointmentDC.RecurrenceInfo); + appointmentStorage.Mappings.Subject = nameof(SchedulerAppointmentDC.Subject); + appointmentStorage.Mappings.Start = nameof(SchedulerAppointmentDC.StartDate); + appointmentStorage.Mappings.End = nameof(SchedulerAppointmentDC.EndDate); + appointmentStorage.Mappings.Description = nameof(SchedulerAppointmentDC.Description); + appointmentStorage.Mappings.ReminderInfo = nameof(SchedulerAppointmentDC.ReminderInfo); + appointmentStorage.Mappings.ResourceId = "ResourceID"; - appointmentStorage.CustomFieldMappings.Add("CustomFieldStorage", "CustomFieldStorage"); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Originator", nameof(SchedulerAppointmentDC.Originator))); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Customers", nameof(SchedulerAppointmentDC.CustomerList))); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Employees", nameof(SchedulerAppointmentDC.EmployeeList))); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("Resources", nameof(SchedulerAppointmentDC.ResourceList))); + + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsPrivate", "IsPrivate")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CanBeEdited", "CanBeEdited")); + + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("HasServiceRecordEntry", "HasServiceRecordEntry")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("ServiceRecordList", "ServiceRecordList")); + + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsAbsenceTime", "IsAbsenceTime")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsCustomerAbsenceTime", "IsCustomerAbsenceTime")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeStart", "AbsenceTimeStart")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeEnd", "AbsenceTimeEnd")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("AbsenceTimeOid", "AbsenceTimeOid")); + + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("IsTask", "IsTask")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("DueDate", "DueDate")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedDate", "CompletedDate")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedNotice", "CompletedNotice")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CompletedUser", "CompletedUser")); + appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("TaskDescription", "TaskDescription")); return appointmentStorage; } - public static void SetupMappings(MVCxAppointmentStorage storage) - { - storage.Mappings.AppointmentId = "Oid"; - storage.Mappings.Start = "StartDate"; - storage.Mappings.End = "EndDate"; - storage.Mappings.Subject = "Subject"; - storage.Mappings.Description = "Description"; - storage.Mappings.Label = "LabelId"; - storage.Mappings.AllDay = "AllDay"; - storage.Mappings.ResourceId = "ResourceId"; - storage.Mappings.RecurrenceInfo = "RecurrenceInfo"; - storage.Mappings.ReminderInfo = "ReminderInfo"; - storage.Mappings.Location = "Location"; - storage.Mappings.Type = "EventType"; - storage.Mappings.Status = "Status"; - } - - public static void ApplyCommonViewSettings(DayView view) - { - view.ResourcesPerPage = 1; - ApplyWorkTime(view); - } - - private static void ApplyWorkTime(DayView view) - { - view.WorkTime.Start = TimeSpan.FromHours(7); - view.WorkTime.End = TimeSpan.FromHours(20); - view.ShowWorkTimeOnly = true; - } - - private static MVCxResourceStorage _DefaultResourceStorage; - - public static MVCxResourceStorage DefaultResourceStorage => _DefaultResourceStorage ?? (_DefaultResourceStorage = CreateDefaultResourceStorage()); - private static MVCxResourceStorage CreateDefaultResourceStorage() { var resourceStorage = new MVCxResourceStorage(); @@ -87,54 +66,5 @@ namespace BeWoPlanerMobil.Views.DevExpressScheduler return resourceStorage; } - - public static SchedulerSettings GetSchedulerSettings() - { - return GetSchedulerSettings(null); - } - - public static SchedulerSettings GetSchedulerSettings(this HtmlHelper customHtml) - { - var settings = new SchedulerSettings - { - Name = "scheduler", - CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "SchedulerPagePartial" }, - EditAppointmentRouteValues = new { Controller = "DevExpressScheduler", Action = "EditAppointment" }, - }; - - ApplyCommonViewSettings(settings.Views.DayView); - ApplyCommonViewSettings(settings.Views.WorkWeekView); - ApplyCommonViewSettings(settings.Views.FullWeekView); - - settings.Views.FullWeekView.Enabled = true; - settings.Views.WeekView.Enabled = false; - settings.Views.MonthView.ResourcesPerPage = 1; - settings.Views.MonthView.AppointmentDisplayOptions.StartTimeVisibility = AppointmentTimeVisibility.Never; - settings.Views.MonthView.AppointmentDisplayOptions.EndTimeVisibility = AppointmentTimeVisibility.Never; - settings.Views.MonthView.AppointmentDisplayOptions.StatusDisplayType = AppointmentStatusDisplayType.Bounds; - settings.Views.MonthView.AppointmentDisplayOptions.ShowRecurrence = true; - settings.Views.MonthView.MonthViewStyles.DateCellBody.Height = Unit.Pixel(170); - - TimeScale[] timeScales = - { - new TimeScaleYear { Enabled = false }, - new TimeScaleQuarter { Enabled = false }, - new TimeScaleMonth(), - new TimeScaleFixedInterval { Enabled = false }, - new TimeScaleDay(), - new TimeScaleHour { Enabled = false } - }; - - settings.Views.TimelineView.Scales.AddRange(timeScales); - settings.Views.TimelineView.ResourcesPerPage = 2; - - settings.Storage.EnableReminders = false; - settings.Storage.Resources.Assign(DefaultResourceStorage); - settings.Storage.Appointments.Assign(DefaultAppointmentStorage); - - settings.Views.DayView.Styles.ScrollAreaHeight = new Unit(500); - - return settings; - } } } \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerPagePartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerPagePartial.cshtml index c9ea0d33a..0429dde94 100644 --- a/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerPagePartial.cshtml +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/SchedulerPagePartial.cshtml @@ -1,62 +1,246 @@ -@using BeWoPlanerMobil.Views.DevExpressScheduler +@using BeWoPlanerMobil.Models +@using BeWoPlanerMobil.Util.Constants +@using BeWoPlanerMobil.Util.SchedulerUtils +@using BeWoPlanerMobil.Views.DevExpressScheduler @using BS.Shared.DataContracts -@using DevExpress.Data.Helpers +@using BS.Shared.DataContracts.Compact @using DevExpress.XtraScheduler +@using MenuItem = DevExpress.Web.MenuItem +@using PopupMenuShowingEventArgs = DevExpress.Web.ASPxScheduler.PopupMenuShowingEventArgs @model BeWoPlanerMobil.Models.DevExpressSchedulerModel +@functions +{ + //ToDo: So das EditForm verändern! + //https://docs.devexpress.com/AspNetMvc/119776/components/scheduler/get-started/how-to-customize-the-appointment-dialog-using-view-model-api-working-with-custom-fields?utm_source=SupportCenter&utm_medium=website&utm_campaign=docs-feedback&utm_content=T743814 + + static AppointmentRecurrenceFormSettings CreateAppointmentRecurrenceFormSettings(CustomAppointmentTemplateContainer container) + { + return new AppointmentRecurrenceFormSettings + { + Name = "appointmentRecurrenceForm", + Width = Unit.Percentage(100), + IsRecurring = container.Appointment.IsRecurring, + DayNumber = container.RecurrenceDayNumber, + End = container.RecurrenceEnd, + Month = container.RecurrenceMonth, + OccurrenceCount = container.RecurrenceOccurrenceCount, + Periodicity = container.RecurrencePeriodicity, + RecurrenceRange = container.RecurrenceRange, + Start = container.Start, + WeekDays = container.RecurrenceWeekDays, + WeekOfMonth = container.RecurrenceWeekOfMonth, + RecurrenceType = container.RecurrenceType, + IsFormRecreated = container.IsFormRecreated + }; + } + + static void PopupMenuShowing(object s, PopupMenuShowingEventArgs e) + { + var menuId = e.Menu.MenuId; + + var invisibleMenuItemNames = new List + { + "StatusSubMenu", + "LabelSubMenu", + "StatusSubMenu", + "LabelSubMenu", + "NewAllDayEvent", + "NewRecurringEvent" + }; + + if(menuId == SchedulerMenuItemId.AppointmentMenu) + { + e.Menu.Items.Add(new MenuItem("In die Zeiterfassung übertragen", "ToServiceRecord")); + } + + if(menuId == SchedulerMenuItemId.DefaultMenu) + { + e.Menu.Items.Add(new MenuItem("Verfügbare Mitarbeiter anzeigen", "ShowAvailableEmployees")); + } + + foreach(MenuItem item in e.Menu.Items) + { + if(invisibleMenuItemNames.Contains(item.Name)) + { + item.Visible = false; + } + + if(item.Name == "SwitchViewMenu") + { + foreach(MenuItem subItem in item.Items) + { + switch(subItem.Text) + { + case "Day View": + subItem.Text = "Tag"; + break; + case "Work Week View": + subItem.Text = "Arbeitswoche"; + break; + case "Week View": + subItem.Text = "Woche"; + break; + case "Month View": + subItem.Text = "Monat"; + break; + case "Timeline View": + subItem.Text = "Zeitstrahl"; + break; + case "Agenda View": + subItem.Text = "Agenda"; + break; + } + } + } + + switch(item.Text) + { + case "Open": + item.Text = "Öffnen"; + break; + case "Edit Series": + item.Text = "Serie bearbeiten"; + break; + case "Restore Default State": + item.Text = "Serienelement wiederherstellen"; + break; + case "Delete": + item.Text = "Löschen"; + break; + case "New Appointment": + item.Text = "Neuer Termin"; + break; + case "New Recurring Appointment": + item.Text = "Neuer Serientermin"; + break; + case "Go to Today": + item.Text = "Heute"; + break; + case "Go to Date...": + item.Text = "Gehe zu Datum..."; + break; + case "Change View To": + item.Text = "Ansicht wechseln"; + break; + case "60 Minutes": + item.Text = "60 Minuten"; + break; + case "30 Minutes": + item.Text = "30 Minuten"; + break; + case "15 Minutes": + item.Text = "15 Minuten"; + break; + case "10 Minutes": + item.Text = "10 Minuten"; + break; + case "6 Minutes": + item.Text = "6 Minuten"; + break; + case "5 Minutes": + item.Text = "5 Minuten"; + break; + } + } + } +} + @{ var scheduler = Html.DevExpress().Scheduler( settings => { settings.Name = "scheduler"; + settings.OptionsAdaptivity.Enabled = true; settings.CallbackRouteValues = new { Controller = "DevExpressScheduler", Action = "SchedulerPagePartial" }; settings.EditAppointmentRouteValues = new { Controller = "DevExpressScheduler", Action = "EditAppointment" }; + settings.CustomActionRouteValues = new { Controller = "DevExpressScheduler", Action = "CustomCallBackAction" }; + + settings.ActiveViewType = Model.CurrentViewType; + settings.OptionsView.VerticalScrollBarMode = ScrollBarMode.Auto; + settings.OptionsToolTips.ShowSelectionToolTip = false; + settings.ClientSideEvents.ActiveViewChanging = "onActiveViewChanged"; + settings.ClientSideEvents.MenuItemClicked = "onMenuItemClicked"; + settings.PopupMenuShowing = PopupMenuShowing; + settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage); + settings.Storage.EnableReminders = false; + settings.OptionsBehavior.ClientTimeZoneId = "W. Europe Standard Time"; + settings.Width = Unit.Percentage(100); + settings.Height = Unit.Percentage(100); - SchedulerHelper.ApplyCommonViewSettings(settings.Views.DayView); - SchedulerHelper.ApplyCommonViewSettings(settings.Views.WorkWeekView); - SchedulerHelper.ApplyCommonViewSettings(settings.Views.FullWeekView); + settings.Views.DayView.DayCount = 1; - settings.Views.FullWeekView.Enabled = true; - settings.Views.WeekView.Enabled = false; - settings.Views.MonthView.ResourcesPerPage = 1; - settings.Views.MonthView.AppointmentDisplayOptions.StartTimeVisibility = AppointmentTimeVisibility.Never; - settings.Views.MonthView.AppointmentDisplayOptions.EndTimeVisibility = AppointmentTimeVisibility.Never; - settings.Views.MonthView.AppointmentDisplayOptions.StatusDisplayType = AppointmentStatusDisplayType.Bounds; - settings.Views.MonthView.AppointmentDisplayOptions.ShowRecurrence = true; - settings.Views.MonthView.MonthViewStyles.DateCellBody.Height = Unit.Pixel(170); + settings.Start = BS.Shared.Extensions.DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday); + settings.OptionsForms.RecurrenceFormName = "appointmentRecurrenceForm"; - TimeScale[] timeScales = + settings.ClientSideEvents.EndCallback = "resizeSchedulerEditForm"; + settings.ClientSideEvents.Init = "resizeSchedulerEditForm"; + + settings.AppointmentFormShowing = (sender, e) => { - new TimeScaleYear { Enabled = false }, - new TimeScaleQuarter { Enabled = false }, - new TimeScaleMonth(), - new TimeScaleFixedInterval { Enabled = false }, - new TimeScaleDay(), - new TimeScaleHour { Enabled = false } + if(sender is MVCxScheduler scheduler) + { + e.Container = new CustomAppointmentTemplateContainer(scheduler); + } }; - settings.Views.TimelineView.Scales.AddRange(timeScales); - settings.Views.TimelineView.ResourcesPerPage = 2; + settings.Views.WeekView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); }); - settings.Storage.EnableReminders = false; - settings.Storage.Resources.Assign(SchedulerHelper.DefaultResourceStorage); - settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage); + settings.Views.MonthView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); }); - settings.Storage.Appointments.Assign(SchedulerHelper.DefaultAppointmentStorage); - settings.Storage.Resources.Assign(SchedulerHelper.DefaultResourceStorage); - settings.Storage.Appointments.Mappings.Start = nameof(SchedulerAppointmentDC.StartDate); - settings.Storage.Appointments.Mappings.End = nameof(SchedulerAppointmentDC.EndDate); - settings.Storage.Appointments.Mappings.Subject = nameof(SchedulerAppointmentDC.Subject); - settings.Storage.Appointments.Mappings.AllDay = nameof(SchedulerAppointmentDC.AllDay); - settings.Storage.Appointments.Mappings.Description = nameof(SchedulerAppointmentDC.Description); - settings.Storage.Appointments.Mappings.Status = nameof(SchedulerAppointmentDC.Status); - settings.Storage.Appointments.Mappings.Label = nameof(SchedulerAppointmentDC.LabelKey); - settings.Storage.Appointments.Mappings.Type = nameof(SchedulerAppointmentDC.Type); + settings.Views.DayView.SetVerticalAppointmentTemplateContent(c => { Html.RenderPartial("VerticalAppointmentTemplatePartial", c.AppointmentViewInfo); }); + settings.Views.DayView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo); }); - settings.Views.DayView.Styles.ScrollAreaHeight = new Unit(500); - + settings.Views.WorkWeekView.SetVerticalAppointmentTemplateContent(c => { Html.RenderPartial("VerticalAppointmentTemplatePartial", c.AppointmentViewInfo); }); + settings.Views.WorkWeekView.SetHorizontalAppointmentTemplateContent(c => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", c.AppointmentViewInfo.Appointment); }); + + settings.OptionsForms.SetAppointmentFormTemplateContent(c => + { + var container = (CustomAppointmentTemplateContainer) c; + + var oid = (long?) container.Appointment.Id; + + // Die bereits ausgewählten Mitarbeiter-Termin-Relationen beim Bearbeiten: + var employees2Appointment = container.Appointment.CustomFields["Employees"] as List ?? new List(); + + var customerList = container.Appointment.CustomFields["Customers"] as List; + var resourceList = container.Appointment.CustomFields["Resources"] as List; + + var newModel = new AppointmentModel(Model.PossibleCustomers, Model.PossibleResources, Model.PossibleEmployees) + { + Oid = oid, + Subject = container.Appointment.Subject, + Location = container.Appointment.Location, + StartTime = container.Appointment.Start, + EndTime = container.Appointment.End, + AllDay = container.Appointment.AllDay, + Description = container.Appointment.Description, + EventType = (int?)container.Appointment.Type, + SelectedEmployee2SchedulerAppointments = employees2Appointment, + SelectedCustomers = customerList, + SelectedResources = resourceList, + SelectedEmployeeOids = employees2Appointment.Select(employee2Appointment => employee2Appointment.Employee.EmployeeOid).ToList(), + CompletedNotice = container.Appointment.CustomFields["CompletedNotice"]?.ToString(), + CompletedUser = container.Appointment.CustomFields["CompletedUser"]?.ToString(), + TaskDescription = container.Appointment.CustomFields["TaskDescription"]?.ToString(), + HasServiceRecordEntry = container.Appointment.CustomFields["HasServiceRecordEntry"] is true, + CanBeEdited = container.Appointment.CustomFields["CanBeEdited"] is true, + IsPrivate = container.Appointment.CustomFields["IsPrivate"] is true, + IsTask = container.Appointment.CustomFields["IsTask"] is true, + DueDate = container.Appointment.CustomFields["DueDate"] is DateTime dueDate ? dueDate : null, + CompletedDate = container.Appointment.CustomFields["CompletedDate"] is DateTime completedDate ? completedDate : null + }; + + var appointmentModel = ViewData["EditableAppointmentModel"] != null ? (AppointmentModel)ViewData["EditableAppointmentModel"] : newModel; + + ViewBag.DeleteButtonEnabled = container.CanDeleteAppointment; + ViewBag.IsRecurring = container.Appointment.IsRecurring; + ViewBag.AppointmentRecurrenceFormSettings = CreateAppointmentRecurrenceFormSettings(container); + + Html.RenderPartial("CustomAppointmentFormPartial", appointmentModel); + }); }); if(ViewData["SchedulerErrorText"] != null) @@ -65,4 +249,49 @@ } } -@scheduler.Bind(Model.Appointments,Model.Resources).GetHtml() \ No newline at end of file +@scheduler.Bind(Model.Appointments,Model.Resources).GetHtml() + + +@* Mitarbeiterverfügbarkeitenpopup *@ +@if(Model.EmployeeAvailabilityObject != null) +{ + @**@ + + +} \ No newline at end of file diff --git a/BeWoPlanerMobil/Views/DevExpressScheduler/VerticalAppointmentTemplatePartial.cshtml b/BeWoPlanerMobil/Views/DevExpressScheduler/VerticalAppointmentTemplatePartial.cshtml new file mode 100644 index 000000000..208f4bade --- /dev/null +++ b/BeWoPlanerMobil/Views/DevExpressScheduler/VerticalAppointmentTemplatePartial.cshtml @@ -0,0 +1,80 @@ +@using BeWoPlanerMobil.Util +@using BS.Shared.DataContracts +@using DevExpress.Web.ASPxScheduler.Drawing +@model AppointmentViewInfo + +@functions{ + string GetHeaderText(){ + return $"{Model.AppointmentInterval.Start.ToShortTimeString()} - {Model.Appointment.End.ToShortTimeString()}"; + } + + string GetRight() + { + var serviceRecords = Model.Appointment.CustomFields[nameof(SchedulerAppointmentDC.ServiceRecordList)] as List ?? new List(); + + return serviceRecords.Any() ? "40px" : "23px"; + } +} + + + +
+
+ +
+ @if(Model.Appointment.CustomFields[nameof(SchedulerAppointmentDC.ServiceRecordList)] is List serviceRecords && serviceRecords.Any()) + { + + } + + @if(Model.Appointment.IsRecurring) + { + if(Model.Appointment.Id is long) + { + + + + + } + else + { + + } + } +
+
+
\ No newline at end of file diff --git a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml index ff61aa91c..d3d67b23a 100644 --- a/BeWoPlanerMobil/Views/Shared/_Layout.cshtml +++ b/BeWoPlanerMobil/Views/Shared/_Layout.cshtml @@ -1,5 +1,4 @@ @using BeWoPlanerMobil.Controllers -@using BeWoPlanerMobil.Models @using BeWoPlanerMobil.Service @using BeWoPlanerMobil.Util @@ -29,6 +28,7 @@ + diff --git a/BeWoPlanerMobil/Web.config b/BeWoPlanerMobil/Web.config index fda7f1161..43f171232 100644 --- a/BeWoPlanerMobil/Web.config +++ b/BeWoPlanerMobil/Web.config @@ -1,173 +1,177 @@  + - -
- -
-
-
-
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ +
+
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Shared/DataContracts/AppointmentDC.cs b/Shared/DataContracts/AppointmentDC.cs index 5d0f54aae..63a3fbccc 100644 --- a/Shared/DataContracts/AppointmentDC.cs +++ b/Shared/DataContracts/AppointmentDC.cs @@ -15,7 +15,7 @@ namespace BS.Shared.DataContracts public long? AppointmentVersion { get; set; } [DataMember] - public Object ContextObject { get; set; } + public object ContextObject { get; set; } [DataMember] public string Subject { get; set; } diff --git a/Shared/Extensions/DateTimeExtensions.cs b/Shared/Extensions/DateTimeExtensions.cs index 892a8c254..5fe3a3853 100644 --- a/Shared/Extensions/DateTimeExtensions.cs +++ b/Shared/Extensions/DateTimeExtensions.cs @@ -750,5 +750,14 @@ namespace BS.Shared.Extensions return date; } + + public static DateTime GetDayOfWeek(DayOfWeek dayOfWeek) + { + var today = DateTime.Today; + + var diff = (7 + (today.DayOfWeek - dayOfWeek)) % 7; + + return today.AddDays(-diff); + } } } \ No newline at end of file