Merge branch 'master' into feature_rene_18_ai
# Conflicts: # AiCoreUnitTest/AiCoreUnitTest.csproj # BeWo/BeWoApp.xaml.cs # BeWo/View/Controls/AI/AiPromptbausteinLibraryControl.xaml # Server/Components/AICore/AICore.csproj # Server/Components/AICore/Prompt/AiSystemPromptFactory.cs # Server/Components/AICore/Prompt/SystemPrompts/AiConversationSystemPromptBuilder.cs # Server/Components/AICore/Prompt/SystemPrompts/AiFunctionSystemPromptBuilder.cs # Server/Components/AICore/Prompt/SystemPrompts/Builder/BaseSystemPromptBuilder.cs # Server/Components/AICore/Prompt/SystemPrompts/Builder/ServiceRecordPromptBuilder.cs # Server/Components/AICore/packages.config # Server/Components/ServerUtils/Core/MailUtils.cs # Service/Plugins/AiService2.cs # Service/Service.csproj # Service/ServiceBehavior/JsonError/JsonErrorHandler.cs # Service/ServiceBehavior/WCFError/WCFErrorHandler.cs # Shared/Shared.csproj
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@@ -18,8 +17,6 @@
|
||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
|
||||
<IsCodedUITest>False</IsCodedUITest>
|
||||
<TestProjectType>UnitTest</TestProjectType>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -49,12 +46,6 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.2.2.10\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MSTest.TestFramework.2.2.10\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
</ItemGroup>
|
||||
@@ -66,7 +57,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Data\Data.csproj">
|
||||
@@ -88,12 +78,8 @@
|
||||
</ItemGroup>
|
||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.props'))" />
|
||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.2.10\build\net46\MSTest.TestAdapter.targets')" />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MSTest.TestAdapter" />
|
||||
<PackageReference Include="MSTest.TestFramework" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="MSTest.TestAdapter" version="2.2.10" targetFramework="net472" />
|
||||
<package id="MSTest.TestFramework" version="2.2.10" targetFramework="net472" />
|
||||
</packages>
|
||||
59
BeWo.sln
59
BeWo.sln
@@ -333,7 +333,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPZLeverkusen", "ReportImp\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Weitblick-ambulantBeWo", "ReportImp\Weitblick-ambulantBeWo\Weitblick-ambulantBeWo.csproj", "{2E99BA67-61A2-47BD-8412-6ECBC126D83E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KomMitBewo", "ReportImp\KomMitBewo\KomMitBewo.csproj", "{1A585E99-09AB-4924-8FB9-9C9D1FE48044}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KommMitBewo", "ReportImp\KomMitBewo\KommMitBewo.csproj", "{1A585E99-09AB-4924-8FB9-9C9D1FE48044}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skmRheydt", "ReportImp\skmRheydt\skmRheydt.csproj", "{B9C896DD-8C7D-4F37-B826-203D2E83D650}"
|
||||
EndProject
|
||||
@@ -377,8 +377,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaritasAhlen", "ReportImp\C
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TabulaRasa", "ReportImp\TabulaRasa\TabulaRasa.csproj", "{8E7F125B-32E9-4D59-A47A-C0994A980CD3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPZLeverkusen2", "SPZLeverkusen2\SPZLeverkusen2.csproj", "{74040CE0-1D24-4F47-91B9-7F166EADBC61}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatController", "..\Chat\ChatController\ChatController.csproj", "{8A83C4DC-A0B1-4A51-AE1D-366D7A05B298}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PraxisPusteblume", "ReportImp\PraxisPusteblume\PraxisPusteblume.csproj", "{A6E699B3-8399-4B8D-90F1-119B021F3D44}"
|
||||
@@ -441,8 +439,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkmLeverkusen", "ReportImp\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EmpathieFachassistenz", "ReportImp\EmpathieFachassistenz\EmpathieFachassistenz.csproj", "{F618F17B-5905-4D09-A976-733011945A9B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebenUndWohnenChristianWilke", "ReportImp\LebenUndWohnenChristianWilke\LebenUndWohnenChristianWilke.csproj", "{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaritasverbandDuerenJuelichEV", "ReportImp\CaritasverbandDuerenJuelichEV\CaritasverbandDuerenJuelichEV.csproj", "{86E14AC3-CD3F-4E63-8154-26DFA2E6ABEB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KoelnerBeWoSelbstbestimmtLeben", "ReportImp\KoelnerBeWoSelbstbestimmtLeben\KoelnerBeWoSelbstbestimmtLeben.csproj", "{FE240F9F-CC85-4F7D-9080-BEEBE76B0735}"
|
||||
@@ -507,8 +503,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutismusLeben", "ReportImp\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeWoAachen", "ReportImp\LeWoAachen\LeWoAachen.csproj", "{C9CDE69B-D3A1-4BF7-B988-1A4ACF2D664A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToprakGmbH", "ReportImp\ToprakGmbH\ToprakGmbH.csproj", "{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlzeyTeilhabe", "ReportImp\AlzeyTeilhabe\AlzeyTeilhabe.csproj", "{D173B437-EAD2-4535-B59D-76737600E058}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChristopherusHausFamilienhilfe", "ReportImp\ChristopherusHausFamilienhilfe\ChristopherusHausFamilienhilfe.csproj", "{B104F622-7BE6-4DFE-9E20-32915507860D}"
|
||||
@@ -3013,22 +3007,6 @@ Global
|
||||
{8E7F125B-32E9-4D59-A47A-C0994A980CD3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8E7F125B-32E9-4D59-A47A-C0994A980CD3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8E7F125B-32E9-4D59-A47A-C0994A980CD3}.Release|x86.Build.0 = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61}.Release|x86.Build.0 = Release|Any CPU
|
||||
{8A83C4DC-A0B1-4A51-AE1D-366D7A05B298}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{8A83C4DC-A0B1-4A51-AE1D-366D7A05B298}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{8A83C4DC-A0B1-4A51-AE1D-366D7A05B298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -3525,22 +3503,6 @@ Global
|
||||
{F618F17B-5905-4D09-A976-733011945A9B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{F618F17B-5905-4D09-A976-733011945A9B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F618F17B-5905-4D09-A976-733011945A9B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{86E14AC3-CD3F-4E63-8154-26DFA2E6ABEB}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{86E14AC3-CD3F-4E63-8154-26DFA2E6ABEB}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{86E14AC3-CD3F-4E63-8154-26DFA2E6ABEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -4053,22 +4015,6 @@ Global
|
||||
{C9CDE69B-D3A1-4BF7-B988-1A4ACF2D664A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C9CDE69B-D3A1-4BF7-B988-1A4ACF2D664A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C9CDE69B-D3A1-4BF7-B988-1A4ACF2D664A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D173B437-EAD2-4535-B59D-76737600E058}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{D173B437-EAD2-4535-B59D-76737600E058}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{D173B437-EAD2-4535-B59D-76737600E058}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -5021,7 +4967,6 @@ Global
|
||||
{888961E7-A394-4F3B-A667-09EA2F80ED4B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{96A3E6E3-3F9B-4CAB-B306-3F23DE6A40F9} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{8E7F125B-32E9-4D59-A47A-C0994A980CD3} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{74040CE0-1D24-4F47-91B9-7F166EADBC61} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{8A83C4DC-A0B1-4A51-AE1D-366D7A05B298} = {E7543C39-A44C-40C9-82C9-E7FAA2D9A852}
|
||||
{A6E699B3-8399-4B8D-90F1-119B021F3D44} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{E590CC37-E2A4-488F-BBA2-C70042BD488D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
@@ -5053,7 +4998,6 @@ Global
|
||||
{56602D65-47F7-4175-A065-A044FE7F6C81} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{E30D35E8-9B15-4345-B8B7-422415A659DA} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{F618F17B-5905-4D09-A976-733011945A9B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{48324B9E-4EC0-47B9-BBA7-6FD61384D25A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{86E14AC3-CD3F-4E63-8154-26DFA2E6ABEB} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{FE240F9F-CC85-4F7D-9080-BEEBE76B0735} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{976CC5EF-26C9-4415-84C6-33A450222F04} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
@@ -5086,7 +5030,6 @@ Global
|
||||
{CEA6A3D2-DDD4-4699-89AE-FEF7908C46D5} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{54419AAB-93DB-482F-B304-035D001081DD} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{C9CDE69B-D3A1-4BF7-B988-1A4ACF2D664A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{12BC3B31-7499-44EC-B7B9-E3CEB2D9997B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{D173B437-EAD2-4535-B59D-76737600E058} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{B104F622-7BE6-4DFE-9E20-32915507860D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{39876291-220B-412E-8ADE-B7A24621656D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<EnableSecurityDebugging>true</EnableSecurityDebugging>
|
||||
<TargetZone>Internet</TargetZone>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
<SignManifests>true</SignManifests>
|
||||
<SignManifests>false</SignManifests>
|
||||
<ManifestKeyFile>
|
||||
</ManifestKeyFile>
|
||||
<ManifestCertificateThumbprint>8E3A8E81F1C6F67A1C6D239593544EA33D8AC6A7</ManifestCertificateThumbprint>
|
||||
@@ -43,12 +43,12 @@
|
||||
<TargetCulture>de-DE</TargetCulture>
|
||||
<ProductName>BeWoPlaner</ProductName>
|
||||
<PublisherName>ownSoft GmbH</PublisherName>
|
||||
<MinimumRequiredVersion>2.0.1.297</MinimumRequiredVersion>
|
||||
<MinimumRequiredVersion>2.0.1.299</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.htm</WebPage>
|
||||
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
|
||||
<TrustUrlParameters>true</TrustUrlParameters>
|
||||
<ApplicationRevision>298</ApplicationRevision>
|
||||
<ApplicationRevision>300</ApplicationRevision>
|
||||
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
@@ -501,9 +501,6 @@
|
||||
<Reference Include="DevExpress.XtraScheduler.v23.2.Core.Desktop, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraScheduler.v23.2.Core, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework.Aero">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
@@ -513,9 +510,6 @@
|
||||
<Reference Include="PresentationFramework.Luna">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="RestSharp, Version=106.15.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.15.0\lib\net452\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Activities" />
|
||||
<Reference Include="System.Core">
|
||||
@@ -2759,6 +2753,7 @@
|
||||
<Compile Include="ServiceProxy\ServiceFacade.cs" />
|
||||
<Compile Include="Validation\ValidationBinding.cs" />
|
||||
<Compile Include="Validation\AttributeValidator.cs" />
|
||||
<Compile Include="Validation\ICustomerRelatedContext.cs" />
|
||||
<Compile Include="Validation\DecimalValidator.cs" />
|
||||
<Compile Include="Validation\ValidationAttribute.cs" />
|
||||
<Compile Include="Validation\ValidationRules.cs" />
|
||||
@@ -3172,7 +3167,6 @@
|
||||
<DependentUpon>PivotGridReport.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
@@ -3932,4 +3926,8 @@
|
||||
<Copy SourceFiles="app.DebugRemote.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)' == 'DebugRemote' " />
|
||||
<Copy SourceFiles="app.Release.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)' == 'Release' " />
|
||||
</Target>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
<PackageReference Include="RestSharp" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -265,6 +265,8 @@ namespace BeWo
|
||||
|
||||
private static String PUB_KEY_E8 = "04d165f25edc4bb40c029cd2b2faeee96cab3aae38a1f4d4393233c542d4cc330c34c7212090705ce8622f1c71b342d779be460dc1db47a113a0c7df8126633bd48d1df63d823332f6f42be7f5963ab41367187b6b3e8d48d9eadeedae6d3e874c";
|
||||
|
||||
private static String PUB_KEY_E9 = "04a05cdc459f3bace602a958495d0c153a22027ce9a68d594897db5c68e9ae3064c9d15b6017a4720ae52449ade7bf3b4783f582b6cfb60777a140657e83335878a1a635d69288ef95c78c99462abd56d0737f69083dd18988c30abed6a6e22a73";
|
||||
|
||||
private static String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private static String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
@@ -273,14 +275,20 @@ namespace BeWo
|
||||
|
||||
private static String PUB_KEY_R13 = "00a567708dd0568164151761cdb906d4ad19908c2650379816639254dbd9cc840593ecd3ec081ba0605143487d2bc748969eb42dda9dc8273b57a19fabf0d60ed40e30ca6f9bb1d1d6a49d323e584e356f4558687117fc3ed85d82a02fb2516cb01a5db859ce3565c88ba1af1037ffe39c5dc2491734ff8c2b8b8df0bc712c930c1d05c4bac7cdaac95e7cd1c901f79c03f6fc0a5df4da7be6db764270ebf44d22da00776fd6c95f17fdda752ea5570cf6ea5cb6e073a568cfa174e275827e109fc1f5a2eb01e938b10a44ccd3c289f54935820a34b31ce988c2474e820e0a36f0474f8af1290475dacde19a5cff5e9d9895ba9a43d04aa21705010430d332b38f";
|
||||
|
||||
private static String PUB_KEY_R14 = "00cd68546c992fd4c4df145ee284bca5a798da8ad5d59e0eb211eaee13bd7f7344cbabf6d9e37f0f2e23cdaf7235aa9eba1daa8e00d6d0e844e0d128ee05b5a783b54b1c6e0cd6f427c78d04c976f8327a9e8b022e71bc9f12b6ac19f4ec4bb134ba50bbb89dc6f3439e006425efa46fabfa8e60e47c9fd5687d97db48a8909078d4138c8fd7c60ab9bec4cbc2f48bbf9689b65dece60bb5c183c59c20af9eabe62498495165e9ce22868a7623cd60d8190118f60bca00d292d556573d7f7278c71febbbb9bb79861970fc6c2c39a25f223ac5870dca69f409caf2716a7a5f0924934a1cd1f7084b4d2295947d80d7beb574769c79690146a715dc792e14818895";
|
||||
|
||||
private static String PUB_KEY_YE1 = "0407655075fe68a695ada17d2babca549c8cf31968e2572f3fcd9c0736b32966f160f2854f42729fb3012422e6f4b0186263486925903f5f74f47c1a9c8320e2230847eb9dbb7fbfe65210f2cb1066da33a11c7036cdee9f71b5e226d80bdffabc";
|
||||
|
||||
private static String PUB_KEY_YE2 = "04719ab43391d6c410bdcca97b7774942db58738edac647434c7b9de533ea336cf9b920f97269345ab1e5597be796fa812ea881df8925bb121b98cc808aadff603e9ef34fef576e7d2bc5d021d8c55e5a1839ad26214ef57fb1d0d3d3ef603970f";
|
||||
|
||||
private static String PUB_KEY_YE3 = "04bb1da0af0ccf58dda60f5be887eae5132b6285518c74bf27b9c4ad4a353599520968896d9bb9dab3bc241a6ab9894cdba3895f99ad6acea68c7e378913b2209e73ac9fc3b546984acb0b9652ab65f8776bc973583c5485377dbec2bb327f6c33";
|
||||
|
||||
private static String PUB_KEY_YR1 = "00a158bc5f6c42620317bc9c4d3caa7fa05d7750c8263c0041d3b5422cd0eda179adf65b8464d252055d745724f53f3e8b0fc66ad5dda0738dd6365d40751ae3e2c1276b36ce8b3d273e9986069da1ba2e3da19b43218eb074a799022e416cd536d021fa45204130b490f5c5eb1fc77176fe0f009e39b2c18c2faf14484dc1b230b66ba70037d2f90a05d52108b9b5f3624cfa05659dd2d0e957a8b9a6b5d57de6e75601be5be9efc5e3d0e20ac1f4634d0083bd815486f5873ca798a7be5f49844414edb1bdc1c26a55f62a5e06330ba11fc3f5c1f11d0096a22e654e65f0634d79279ac67a5cf59d98c9bb1736922a1a5f6f572419e13243f9df5ad2746e6e33";
|
||||
|
||||
private static String PUB_KEY_YR2 = "00d9d0bc70069a6a87ce25baa31ead5fde78bfdf5d0ee62d042fd4b9e958a65bcaf1a9c7ac21e807e7b2502717a7b04e470703e8123a806f9b70df9b4e80b86885f8a46eb787c0728c2a9c0410096f7cf903cffde3afff0ba0ec8ca4e0d90ec5fd88ea0d9fe794fa9c9a0e4cb15cba4791abcd091901186a7f9d3c5afd38652040ada118a80d916f3ba5aa69b0e02e50972ba18851b79b948ace2a6998ab7a2b1ebb7da0cc324d04088ab6cbdde875f8bf6e5ba6444d712fc1fc6b5cf6455b5290fed8f2cfc5d7a2dd38a6e79938b5f0045f00f6ab288f4f1ad336aea537e00caf983673574daa4393c23c5e57a2f99693f5ac6898bcb9d168f94eab26513d6fb9";
|
||||
|
||||
private static String PUB_KEY_YR3 = "00c94b4f90c9fad99bc5349d7ba024a83ede7ada1e8c4a37d34eb06bc74fd36d71d813856ba3ea08b30ccaa7f554229723c9faa28aeeb8e004cfd72b7a20c7ad443db81063c2e254d9f89ec991d5415475a95bfdc2ff998b57a3796edeaa29ee4e8e97ea4e2f3be504836197e32aee5f55c5408cef5ed4a58ba634ac463518c02c68391f5e82f77510956f0a811a56e7c7d8e417b770baafdb86db291162b1bed2fc73c0f7aee95baac03bf0c514a6e2df935f1ca106d23206ab1b6c6d86cafbfd2a7b6d78ee9f6850efd235cb9a4fda682c558a99c63dd144748572b2faa891e8abfbfdee6008afc11a48cb5ccd407d7d42443c0e8883cfb0af9124e223d348a5";
|
||||
|
||||
private bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
|
||||
{
|
||||
try
|
||||
@@ -301,14 +309,18 @@ namespace BeWo
|
||||
pk.Contains(PUB_KEY_E6.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E7.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E8.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E9.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R10.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R11.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R12.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R13.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R14.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE2.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR2.ToLower()))
|
||||
pk.Contains(PUB_KEY_YR2.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR3.ToLower()))
|
||||
{
|
||||
chainContainsPk = true;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Translation;
|
||||
|
||||
using BeWo.Core;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.Scheduler.Resources;
|
||||
using BeWo.Scheduler.View;
|
||||
@@ -151,7 +154,25 @@ namespace BeWo.Scheduler.ViewModel
|
||||
|
||||
protected override void DeleteAppointments(IEnumerable<AbsenceTimeDC> dcList)
|
||||
{
|
||||
ServiceFacade.DoCustomerServiceAsync(s => s.DeactivateAbsenceTimes(dcList.ToDictionary(dc => dc.AbsenceTimeOid != null ? dc.AbsenceTimeOid.Value : 0,
|
||||
var lDcList = dcList.ToList();
|
||||
|
||||
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry))
|
||||
{
|
||||
var pastAbsenceTimes = lDcList.Where(dc => dc.IsInThePast).ToList();
|
||||
if (pastAbsenceTimes.Count > 0)
|
||||
{
|
||||
lDcList = lDcList.Except(pastAbsenceTimes).ToList();
|
||||
MessageBox.Show(Translator.Translate("Sie besitzen nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen."),
|
||||
"BeWo Planer", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
if (lDcList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ServiceFacade.DoCustomerServiceAsync(s => s.DeactivateAbsenceTimes(lDcList.ToDictionary(dc => dc.AbsenceTimeOid != null ? dc.AbsenceTimeOid.Value : 0,
|
||||
dc => dc.AbsenceTimeVersion != null ? dc.AbsenceTimeVersion.Value : 0)));
|
||||
}
|
||||
|
||||
|
||||
@@ -198,11 +198,18 @@ namespace BeWo.Scheduler.ViewModel
|
||||
|
||||
var message = string.Empty;
|
||||
|
||||
|
||||
ServiceFacade.DoResourceServiceSync( s => message = s.ValidateSchedulerAppointment(start, end, employeeOids, customerOids, resourceOids, originatorOid, schedulerAppointmentOid, recurrenceInfoId, recurrenceIndex, shouldSkipResourceAvailablityCheck));
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
if(message.Contains("Die Ressource") && message.Contains("ist im ausgewählten Zeitraum") && message.Contains("bereits gebucht:") && BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderRessourcenDoppeltBuchen) is false)
|
||||
{
|
||||
message = message.Remove(message.Length - 31) + "Speichern nicht möglich.";
|
||||
|
||||
MessageBox.Show(message, "Überschneidung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
var messageBoxResult = MessageBox.Show(message, "Überschneidung", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
|
||||
|
||||
if(messageBoxResult.Equals(MessageBoxResult.No))
|
||||
@@ -212,7 +219,7 @@ namespace BeWo.Scheduler.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
if (item.Type.Equals(AppointmentType.ChangedOccurrence) && _GeoeffneterTermin != null)
|
||||
if(item.Type.Equals(AppointmentType.ChangedOccurrence) && _GeoeffneterTermin != null)
|
||||
{
|
||||
areEqual = _GeoeffneterTermin.Equals(item);
|
||||
}
|
||||
@@ -223,7 +230,7 @@ namespace BeWo.Scheduler.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
if (dcList.Count <= 0)
|
||||
if(dcList.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -305,6 +312,14 @@ namespace BeWo.Scheduler.ViewModel
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(message))
|
||||
{
|
||||
if(message.Contains("Die Ressource") && message.Contains("ist im ausgewählten Zeitraum") && message.Contains("bereits gebucht:") && BeWoApp.LoggedOnUser.HasRight(UserRightType.KalenderRessourcenDoppeltBuchen) is false)
|
||||
{
|
||||
message = message.Remove(message.Length - 31) + "Speichern nicht möglich.";
|
||||
|
||||
MessageBox.Show(message, "Überschneidung", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
var messageBoxResult = MessageBox.Show(message, "Überschneidung", MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
|
||||
|
||||
if(messageBoxResult.Equals(MessageBoxResult.No))
|
||||
@@ -314,11 +329,10 @@ namespace BeWo.Scheduler.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
dcList.Add(vm.CommitToDataContract());
|
||||
}
|
||||
|
||||
if (dcList.Count <= 0)
|
||||
if(dcList.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -188,7 +188,43 @@ namespace BeWo.ServiceProxy
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ValueListEntryType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiRoutineType))]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC> ExecuteAiConversationWithRoutine(long conversation, BS.Shared.DataContracts.Feature.AI.AiViewContextDC view_context, long routine, int step);
|
||||
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/ExecuteAiConversationWithRoutineComplete", ReplyAction="http://tempuri.org/IAiEnhancedService/ExecuteAiConversationWithRoutineCompleteResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/ExecuteAiConversationWithRoutineCompleteBeW" +
|
||||
"oFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BeWoDataContract))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiConfigDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiModelDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiModelDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiConversationDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinRoutineDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiPromptbausteinRoutineDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinRoutineStepDC>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiPromptbausteinRoutineStepDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Feature.AI.AiUserSettingDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.Compact.CompactEmployeeDC))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<BS.Shared.TableID, System.Collections.Generic.List<long>>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<long>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.Dictionary<long, BS.Shared.ValueListEntryType>))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Core.BeWoFault))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.Core.BeWoFaultType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiDataContextType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiModelSource))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiActionType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.TableID))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiConversationMessageRole))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ActivationTypeId))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.ValueListEntryType))]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.AiRoutineType))]
|
||||
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC> ExecuteAiConversationWithRoutineComplete(BS.Shared.AiActionType actionType, BS.Shared.DataContracts.Feature.AI.AiViewContextDC view_context, long routine);
|
||||
|
||||
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/CheckContextSize", ReplyAction="http://tempuri.org/IAiEnhancedService/CheckContextSizeResponse")]
|
||||
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/CheckContextSizeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
|
||||
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.BeWoDataContract))]
|
||||
@@ -364,7 +400,12 @@ namespace BeWo.ServiceProxy
|
||||
{
|
||||
return base.Channel.ExecuteAiConversationWithRoutine(conversation, view_context, routine, step);
|
||||
}
|
||||
|
||||
|
||||
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC> ExecuteAiConversationWithRoutineComplete(BS.Shared.AiActionType actionType, BS.Shared.DataContracts.Feature.AI.AiViewContextDC view_context, long routine)
|
||||
{
|
||||
return base.Channel.ExecuteAiConversationWithRoutineComplete(actionType, view_context, routine);
|
||||
}
|
||||
|
||||
public bool CheckContextSize(BS.Shared.AiActionType actionType, BS.Shared.DataContracts.Feature.AI.AiViewContextDC view_context)
|
||||
{
|
||||
return base.Channel.CheckContextSize(actionType, view_context);
|
||||
|
||||
@@ -237,8 +237,7 @@ namespace BeWo.Services
|
||||
|
||||
if (windowViewModel is DialogViewModel dialogViewModel)
|
||||
{
|
||||
dialogViewModel.Closing += (s, e) => window.Close();
|
||||
window.Closed += (s, e) => dialogViewModel.CloseFinalCommand.Execute(null);
|
||||
dialogViewModel.RequestCloseFinal += (s, e) => window.Close();
|
||||
}
|
||||
|
||||
if (options.ShowAsDialog)
|
||||
|
||||
@@ -52,129 +52,4 @@
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PopUpWindowStyle2" TargetType="{x:Type GroupBox}">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type GroupBox}">
|
||||
<Grid SnapsToDevicePixels="True">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="10" />
|
||||
<RowDefinition Height="20" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Border
|
||||
Grid.RowSpan="2"
|
||||
Background="#FF202020"
|
||||
CornerRadius="3,1,0,3" />
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Background="#FF202020"
|
||||
CornerRadius="0,1,0,3" />
|
||||
<Path
|
||||
Grid.Column="1"
|
||||
Data="M 0,0 L 10,10 H 0 Z"
|
||||
Fill="#FF202020"
|
||||
StrokeThickness="0" />
|
||||
<Border
|
||||
x:Name="Header"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="0,0,0,0"
|
||||
Padding="10,0,3,0"
|
||||
VerticalAlignment="Bottom"
|
||||
Background="{x:Null}">
|
||||
<ContentPresenter
|
||||
Margin="5,0,0,3"
|
||||
VerticalAlignment="Stretch"
|
||||
Content="{TemplateBinding Header}"
|
||||
ContentSource="Header"
|
||||
ContentStringFormat="{TemplateBinding HeaderStringFormat}"
|
||||
ContentTemplate="{TemplateBinding HeaderTemplate}"
|
||||
RecognizesAccessKey="True"
|
||||
RenderTransformOrigin="0,0.5"
|
||||
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
|
||||
TextElement.FontSize="16">
|
||||
<ContentPresenter.RenderTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="0" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</ContentPresenter.RenderTransform>
|
||||
</ContentPresenter>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.RowSpan="1"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="5,5,5,5">
|
||||
<ContentPresenter
|
||||
Margin="0,0,0,0"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentStringFormat="{TemplateBinding ContentStringFormat}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||||
</Border>
|
||||
<Path
|
||||
x:Name="isDirtyShape"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Width="18.21"
|
||||
Height="17.336"
|
||||
Margin="0,0,41.007,3"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Data="M8.0969173,7.7938912 L7.3260856,1.6313261E-55 10.960733,0.056791361 9.8816968,7.8372078 17.130865,4.505709 18.209901,7.969982 10.336028,9.4841573 16.015164,15.065028 13.005222,17.336183 9.0298264,10.44961 4.7503484,17.141891 1.9107803,14.614571 7.6195467,9.5947088 4.3790577E-47,7.8281079 1.0589099,4.5910004 z"
|
||||
RenderTransformOrigin="0.5,0.5"
|
||||
StrokeThickness="0">
|
||||
<Path.Fill>
|
||||
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
|
||||
<GradientStop Offset="0" Color="#FFFB6F0E" />
|
||||
<GradientStop Offset="1" Color="#FF8C400A" />
|
||||
</LinearGradientBrush>
|
||||
</Path.Fill>
|
||||
<Path.RenderTransform>
|
||||
<TransformGroup>
|
||||
<ScaleTransform ScaleX="0" ScaleY="0" />
|
||||
<SkewTransform AngleX="0" AngleY="0" />
|
||||
<RotateTransform Angle="0" />
|
||||
<TranslateTransform X="0" Y="0" />
|
||||
</TransformGroup>
|
||||
</Path.RenderTransform>
|
||||
</Path>
|
||||
<Button
|
||||
x:Name="button_close"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="1"
|
||||
Width="20"
|
||||
Height="20"
|
||||
Margin="3,3,3,3"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Center"
|
||||
Command="{Binding CloseCommand}"
|
||||
Style="{DynamicResource CloseButtonStyle}" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="Foreground" Value="{DynamicResource MainGroupBoxForegroundBrush}" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="FontFamily" Value="Microsoft Sans Serif" />
|
||||
<Setter Property="FontSize" Value="11" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
@@ -19,10 +19,19 @@ namespace BeWo.Validation
|
||||
{
|
||||
PropertyInfo lPropInfo = null;
|
||||
object lCurrentObject = this.ExpressionToValidate.DataItem;
|
||||
|
||||
// Claude: DataItem des Bindings und Eltern-Objekt des Ziel-Propertys festhalten,
|
||||
// damit kontextabhaengige Regeln den Klientenbezug auswerten koennen.
|
||||
// Bei "PrototypeVM.Notice" ist das DataItem die ServiceRecordListVM (kennt
|
||||
// WithoutClient), bei "Notice" in den EditViews die ServiceRecordVM selbst.
|
||||
object lDataItem = lCurrentObject;
|
||||
object lOwner = lCurrentObject;
|
||||
|
||||
if (lCurrentObject != null)
|
||||
{
|
||||
foreach (var iPropName in this.ExpressionToValidate.ParentBinding.Path.Path.Split("."))
|
||||
{
|
||||
lOwner = lCurrentObject; // Claude: vor dem GetValue merken
|
||||
lPropInfo = lCurrentObject.GetType().GetProperty(iPropName);
|
||||
lCurrentObject = lPropInfo.GetValue(lCurrentObject, null);
|
||||
}
|
||||
@@ -33,7 +42,12 @@ namespace BeWo.Validation
|
||||
var lAttributes = lPropInfo.GetCustomAttributes(typeof(ValidationAttribute), true);
|
||||
if (lAttributes.Length > 0)
|
||||
{
|
||||
lValid = ((ValidationAttribute) lAttributes[0]).Validate(pValue);
|
||||
// Claude: DataItem hat Vorrang, weil dort der View-Zustand liegt
|
||||
// (ServiceRecordListVM.WithoutClient); sonst greift das Eltern-Objekt.
|
||||
var lContext = (lDataItem as ICustomerRelatedContext)
|
||||
?? (lOwner as ICustomerRelatedContext);
|
||||
|
||||
lValid = ((ValidationAttribute) lAttributes[0]).Validate(pValue, lContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
BeWo/Validation/ICustomerRelatedContext.cs
Normal file
12
BeWo/Validation/ICustomerRelatedContext.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace BeWo.Validation
|
||||
{
|
||||
// Claude: Kontext fuer klientenabhaengige Validierungsregeln.
|
||||
// Wird von ValidationRules.EmptyNoticeInNewServiceRecordsAllowed ausgewertet: die
|
||||
// Dokumentationspflicht (Mandanten-Setting IsServiceRecordNoticeMandatory) gilt nur fuer
|
||||
// klientenbezogene Zeiterfassungen, also fuer Eintraege mit Customer/Hilfeplan.
|
||||
public interface ICustomerRelatedContext
|
||||
{
|
||||
// Claude: true, wenn der Eintrag zu einem Customer/SupportConcept gehoert.
|
||||
bool IsCustomerRelated { get; }
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,9 @@ namespace BeWo.Validation
|
||||
|
||||
public ValidationRules ValidationRule { get; set; }
|
||||
|
||||
public bool Validate(object pValue)
|
||||
// Claude: pContext liefert den Klientenbezug fuer EmptyNoticeInNewServiceRecordsAllowed.
|
||||
// null bedeutet "unbekannt" -> bisheriges Verhalten (Pflichtfeld bleibt).
|
||||
public bool Validate(object pValue, ICustomerRelatedContext pContext = null)
|
||||
{
|
||||
bool lResult = true;
|
||||
switch (ValidationRule)
|
||||
@@ -73,7 +75,12 @@ namespace BeWo.Validation
|
||||
|
||||
break;
|
||||
case ValidationRules.EmptyNoticeInNewServiceRecordsAllowed:
|
||||
if (BeWoApp.AppSettings.IsServiceRecordNoticeMandatory)
|
||||
// Claude: Dokumentationspflicht greift nur noch bei klientenbezogenen
|
||||
// Eintraegen (Customer/Hilfeplan). Ohne Klientenbezug - in
|
||||
// ServiceRecordView2 also bei abgewaehlter CheckBox "chkWithClient" -
|
||||
// ist die Dokumentation niemals Pflicht.
|
||||
if (BeWoApp.AppSettings.IsServiceRecordNoticeMandatory
|
||||
&& (pContext == null || pContext.IsCustomerRelated))
|
||||
{
|
||||
if (pValue is string)
|
||||
{
|
||||
|
||||
@@ -67,13 +67,12 @@ namespace BeWo.View.Controls.AI
|
||||
{
|
||||
var viewmodel = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm);
|
||||
viewmodel.ItemAccepted += ItemAccepted;
|
||||
viewmodel.Closed += (s, e) => viewmodel.ResetSelection();
|
||||
viewmodel.RequestCloseFinal += (s, e) => viewmodel.ResetSelection();
|
||||
ViewModel.AllPromptsViewModel = viewmodel;
|
||||
|
||||
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
|
||||
viewmodel2.ItemAccepted += ItemAccepted;
|
||||
popup_promptbaustein_favoriten.Closed += (s, e) => viewmodel2.CloseFinalCommand.Execute(null);
|
||||
viewmodel2.Closed += (s, e) => viewmodel2.ResetSelection();
|
||||
popup_promptbaustein_favoriten.Closed += (s, e) => viewmodel2.ResetSelection();
|
||||
var view2 = new AiPromptbausteinComplexSelectionFavoritenView(viewmodel2);
|
||||
viewmodel2.SelectedFolder = viewmodel2.Folders.VMList[0];
|
||||
view2.Padding = new Thickness(3);
|
||||
|
||||
@@ -92,13 +92,13 @@
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Path
|
||||
Data="{StaticResource Phosphor.PuzzlePiece}"
|
||||
Margin="2"
|
||||
Grid.RowSpan="2"
|
||||
Width="24"
|
||||
Height="24"
|
||||
Fill="Black"
|
||||
Stretch="Fill"/>
|
||||
Grid.RowSpan="2"
|
||||
Width="24"
|
||||
Height="24"
|
||||
Margin="2"
|
||||
Data="{StaticResource Phosphor.PuzzlePiece}"
|
||||
Fill="Black"
|
||||
Stretch="Fill" />
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal">
|
||||
<TextBox
|
||||
Height="21"
|
||||
@@ -189,8 +189,8 @@ Fill="Black"
|
||||
<DataTrigger Binding="{Binding IsValid}" Value="False">
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="BorderBrush" Value="Red" />
|
||||
<Setter Property="IsEnabled" Value="True" />
|
||||
<Setter Property="IsHitTestVisible" Value="True" />
|
||||
<Setter Property="IsEnabled" Value="False" />
|
||||
<Setter Property="IsHitTestVisible" Value="False" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
@@ -241,29 +241,28 @@ Fill="Black"
|
||||
Background="Transparent"
|
||||
ContextMenuOpening="ListBox_ContextMenuOpening"
|
||||
PreviewMouseDown="Grid_PreviewMouseDown_2">
|
||||
<Grid IsEnabled="{Binding IsValid}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="9" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Path
|
||||
Data="{StaticResource Phosphor.Stack}"
|
||||
Margin="2"
|
||||
Grid.RowSpan="2"
|
||||
Width="24"
|
||||
Height="24"
|
||||
Fill="Black"
|
||||
Stretch="Fill"/>
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal">
|
||||
<TextBox
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="9" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Path
|
||||
Grid.RowSpan="2"
|
||||
Width="24"
|
||||
Height="24"
|
||||
Margin="2"
|
||||
Data="{StaticResource Phosphor.Stack}"
|
||||
Fill="Black"
|
||||
Stretch="Fill" />
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal">
|
||||
<TextBox
|
||||
Height="21"
|
||||
Margin="0,0,0,0"
|
||||
Padding="0"
|
||||
@@ -276,10 +275,10 @@ Fill="Black"
|
||||
IsReadOnly="True"
|
||||
Text="{Binding Path=Title, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
|
||||
ToolTipService.ShowDuration="100000">
|
||||
<TextBox.ToolTip>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
|
||||
<TextBox
|
||||
<TextBox.ToolTip>
|
||||
<StackPanel Orientation="Vertical">
|
||||
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
|
||||
<TextBox
|
||||
MaxWidth="500"
|
||||
Padding="3,1,0,0"
|
||||
VerticalAlignment="Center"
|
||||
@@ -289,16 +288,16 @@ Fill="Black"
|
||||
IsReadOnly="True"
|
||||
Text="{Binding Path=Description}"
|
||||
TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</TextBox.ToolTip>
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
</StackPanel>
|
||||
</TextBox.ToolTip>
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Margin="0,-1,0,0"
|
||||
Orientation="Horizontal">
|
||||
<Border
|
||||
<Border
|
||||
x:Name="border1"
|
||||
Width="46"
|
||||
Margin="0,0,3,0"
|
||||
@@ -306,27 +305,27 @@ Fill="Black"
|
||||
HorizontalAlignment="Left"
|
||||
Background="#E1F5EE"
|
||||
CornerRadius="7">
|
||||
<TextBlock
|
||||
<TextBlock
|
||||
Margin="1,0,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="10"
|
||||
Text="Routine"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<TextBlock
|
||||
</Border>
|
||||
<TextBlock
|
||||
Margin="3,0,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="10">
|
||||
<TextBlock.Text>
|
||||
<MultiBinding StringFormat="{}{0} Schritte">
|
||||
<Binding Path="Steps.Count" />
|
||||
</MultiBinding>
|
||||
</TextBlock.Text>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
<ListBox
|
||||
<TextBlock.Text>
|
||||
<MultiBinding StringFormat="{}{0} Schritte">
|
||||
<Binding Path="Steps.Count" />
|
||||
</MultiBinding>
|
||||
</TextBlock.Text>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
<ListBox
|
||||
Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
Margin="3,9,3,3"
|
||||
@@ -337,20 +336,20 @@ Fill="Black"
|
||||
IsHitTestVisible="False"
|
||||
ItemsSource="{Binding Steps.VMList}"
|
||||
Visibility="{Binding Steps.VMList.Count, Converter={StaticResource CollectionCountToVisibilityConverter}}">
|
||||
<ListBox.ItemContainerStyle>
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Padding" Value="0" />
|
||||
</Style>
|
||||
</ListBox.ItemContainerStyle>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
<ListBox.ItemContainerStyle>
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Padding" Value="0" />
|
||||
</Style>
|
||||
</ListBox.ItemContainerStyle>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
x:Name="arrow"
|
||||
Margin="3"
|
||||
VerticalAlignment="Center"
|
||||
Text="➔" />
|
||||
<Border
|
||||
<Border
|
||||
x:Name="border1"
|
||||
Height="19"
|
||||
Margin="0"
|
||||
@@ -358,49 +357,48 @@ Fill="Black"
|
||||
HorizontalAlignment="Left"
|
||||
Background="DarkGray"
|
||||
CornerRadius="7">
|
||||
<TextBlock
|
||||
<TextBlock
|
||||
Margin="3,0,3,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="10"
|
||||
Text="{Binding PromptReference.Title, StringFormat={}✦ {0}}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
</StackPanel>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
|
||||
<Setter TargetName="arrow" Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding IsValid}" Value="false">
|
||||
<Setter TargetName="border1" Property="Background" Value="LightCoral" />
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
<ListBox.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<StackPanel Orientation="Horizontal" />
|
||||
</ItemsPanelTemplate>
|
||||
</ListBox.ItemsPanel>
|
||||
</ListBox>
|
||||
<StackPanel
|
||||
</Border>
|
||||
</StackPanel>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
|
||||
<Setter TargetName="arrow" Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding IsValid}" Value="false">
|
||||
<Setter TargetName="border1" Property="Background" Value="LightCoral" />
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
<ListBox.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<StackPanel Orientation="Horizontal" />
|
||||
</ItemsPanelTemplate>
|
||||
</ListBox.ItemsPanel>
|
||||
</ListBox>
|
||||
<StackPanel
|
||||
Grid.Row="3"
|
||||
Grid.Column="2"
|
||||
Orientation="Horizontal"
|
||||
Visibility="{Binding IsValid, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=reverse}">
|
||||
|
||||
<Image
|
||||
<Image
|
||||
x:Name="imgWarning"
|
||||
Grid.Column="2"
|
||||
Height="20"
|
||||
Margin="6,0"
|
||||
Source="{Binding Source={x:Static draw:SystemIcons.Warning}, Converter={StaticResource IconToImageSourceConverter}, Mode=OneWay}" />
|
||||
<!-- Visibility="{Binding ElementName=btnOpenAi4, Path=Visibility}" -->
|
||||
<Label Foreground="Red">
|
||||
Ungültig
|
||||
</Label>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<!-- Visibility="{Binding ElementName=btnOpenAi4, Path=Visibility}" -->
|
||||
<Label Foreground="Red">
|
||||
Ungültig
|
||||
</Label>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
@@ -422,16 +420,22 @@ Fill="Black"
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TreeView
|
||||
<GroupBox
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="0,7,0,0"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Stretch"
|
||||
Header="Bibliothek"
|
||||
Style="{StaticResource ObjectEditGroupBox}">
|
||||
<TreeView
|
||||
x:Name="treeView"
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
MinHeight="100"
|
||||
Padding="4,16,4,16"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch"
|
||||
AllowDrop="True"
|
||||
BorderThickness="1,1,0,1"
|
||||
BorderThickness="1,0,0,1"
|
||||
ContextMenuOpening="treeView_ContextMenuOpening"
|
||||
Focusable="True"
|
||||
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
|
||||
@@ -441,18 +445,18 @@ Fill="Black"
|
||||
PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
|
||||
SelectedItemChanged="treeView_SelectedItemChanged"
|
||||
TreeViewItem.Selected="treeView_Selected">
|
||||
<TreeView.Resources>
|
||||
<Style x:Key="igoal_treeitemstyle" TargetType="TreeViewItem">
|
||||
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
|
||||
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
|
||||
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
|
||||
</Style>
|
||||
</TreeView.Resources>
|
||||
<TreeView.InputBindings>
|
||||
<KeyBinding Key="Delete" Command="{Binding DeleteFolderCommand}" />
|
||||
<KeyBinding Key="Enter" Command="{Binding OpenEditFolderDialogCommand}" />
|
||||
<KeyBinding Key="N" Command="{Binding OpenAddFolderDialogCommand}" />
|
||||
<!--<KeyBinding
|
||||
<TreeView.Resources>
|
||||
<Style x:Key="igoal_treeitemstyle" TargetType="TreeViewItem">
|
||||
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
|
||||
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
|
||||
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
|
||||
</Style>
|
||||
</TreeView.Resources>
|
||||
<TreeView.InputBindings>
|
||||
<KeyBinding Key="Delete" Command="{Binding DeleteFolderCommand}" />
|
||||
<KeyBinding Key="Enter" Command="{Binding OpenEditFolderDialogCommand}" />
|
||||
<KeyBinding Key="N" Command="{Binding OpenAddFolderDialogCommand}" />
|
||||
<!--<KeyBinding
|
||||
Key="C"
|
||||
Command="{Binding CopyFolderCommand}"
|
||||
Modifiers="Ctrl" />
|
||||
@@ -460,33 +464,33 @@ Fill="Black"
|
||||
Key="V"
|
||||
Command="{Binding PasteFolderCommand}"
|
||||
Modifiers="Ctrl" />-->
|
||||
</TreeView.InputBindings>
|
||||
<TreeView.ContextMenu>
|
||||
<ContextMenu>
|
||||
<ContextMenu.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="{x:Type Image}">
|
||||
<Setter Property="Height" Value="24" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</ContextMenu.Resources>
|
||||
<MenuItem
|
||||
</TreeView.InputBindings>
|
||||
<TreeView.ContextMenu>
|
||||
<ContextMenu>
|
||||
<ContextMenu.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="{x:Type Image}">
|
||||
<Setter Property="Height" Value="24" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</ContextMenu.Resources>
|
||||
<MenuItem
|
||||
Command="{Binding OpenAddFolderDialogCommand}"
|
||||
Header="Neuer Ordner"
|
||||
ToolTip="Shortcut: N">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem
|
||||
Command="{Binding OpenEditFolderDialogCommand}"
|
||||
Header="Bearbeiten"
|
||||
ToolTip="Shortcut: Enter">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<!--<Separator />
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<!--<Separator />
|
||||
<MenuItem
|
||||
Command="{Binding CopyFolderCommand}"
|
||||
Header="Kopieren"
|
||||
@@ -503,18 +507,19 @@ Fill="Black"
|
||||
<Image Source="..\..\..\Ressources\Icons\Paste24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>-->
|
||||
<Separator />
|
||||
<MenuItem
|
||||
<Separator />
|
||||
<MenuItem
|
||||
Command="{Binding DeleteFolderCommand}"
|
||||
Header="Löschen"
|
||||
ToolTip="Shortcut: Entf">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</TreeView.ContextMenu>
|
||||
</TreeView>
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</TreeView.ContextMenu>
|
||||
</TreeView>
|
||||
</GroupBox>
|
||||
<GridSplitter
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
@@ -525,7 +530,7 @@ Fill="Black"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2">
|
||||
<!--<Grid.Resources>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="Grid">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=treeView, Path=SelectedItem}" Value="{x:Null}">
|
||||
@@ -533,7 +538,7 @@ Fill="Black"
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Resources>-->
|
||||
</Grid.Resources>
|
||||
<TabControl
|
||||
x:Name="tabcontrol_1"
|
||||
Padding="0"
|
||||
|
||||
@@ -142,6 +142,7 @@
|
||||
IsReadOnly="True"
|
||||
x:Name="popupedit_Auftraggeber"
|
||||
Height="23"
|
||||
MaxWidth="294"
|
||||
DeleteButtonVisibility="Visible"
|
||||
DeleteClick="popupedit_Auftraggeber_DeleteClick"
|
||||
PopUpClick="popupedit_Auftraggeber_PopUpClick"
|
||||
@@ -159,6 +160,7 @@
|
||||
IsReadOnly="True"
|
||||
x:Name="popupedit_AuftraggeberContactPersonSearch"
|
||||
Height="23"
|
||||
MaxWidth="294"
|
||||
DeleteButtonVisibility="Visible"
|
||||
DeleteClick="popupedit_AuftraggeberContactPersonSearch_DeleteClick"
|
||||
PopUpClick="popupedit_AuftraggeberContactPersonSearch_PopUpClick"
|
||||
@@ -175,6 +177,7 @@
|
||||
IsReadOnly="True"
|
||||
x:Name="popupedit_Einsatzstelle"
|
||||
Height="23"
|
||||
MaxWidth="294"
|
||||
DeleteButtonVisibility="Visible"
|
||||
DeleteClick="popupedit_Einsatzstelle_DeleteClick"
|
||||
PopUpClick="popupedit_Einsatzstelle_PopUpClick"
|
||||
@@ -192,6 +195,7 @@
|
||||
IsReadOnly="True"
|
||||
x:Name="popupedit_EinsatzstelleContactPersonSearch"
|
||||
Height="23"
|
||||
MaxWidth="294"
|
||||
DeleteButtonVisibility="Visible"
|
||||
DeleteClick="popupedit_EinsatzstelleContactPersonSearch_DeleteClick"
|
||||
PopUpClick="popupedit_EinsatzstelleContactPersonSearch_PopUpClick"
|
||||
@@ -449,13 +453,15 @@
|
||||
Grid.Column="3"
|
||||
Grid.RowSpan="9"
|
||||
Height="190"
|
||||
MaxWidth="294"
|
||||
VerticalAlignment="Top"
|
||||
VerticalContentAlignment="Stretch"
|
||||
AcceptsReturn="True"
|
||||
IsReadOnly="{Binding PermissionCustomerGemeinnutzigeArbeitManage, Mode=OneTime, Converter={StaticResource BoolReverseConverter}, ElementName=root}"
|
||||
Text="{Binding Path=Bemerkung, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextWrapping="Wrap"
|
||||
VerticalScrollBarVisibility="Auto" />
|
||||
TextWrapping="NoWrap"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Auto"/>
|
||||
|
||||
<Popup Margin="10" Name="popup_costbearer" StaysOpen="False"
|
||||
Placement="MousePoint"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
Grid.Column="2"
|
||||
IsEnabled="False"
|
||||
Style="{StaticResource TextEditNumber}"
|
||||
Text="{Binding Oid, Mode=OneWay}" />
|
||||
Text="{Binding Oid}" />
|
||||
<Label
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
@@ -154,7 +154,7 @@
|
||||
Grid.Column="2"
|
||||
MaxLength="1024"
|
||||
Style="{StaticResource TextBoxNoticeLarge}"
|
||||
Text="{Binding Notice, UpdateSourceTrigger=PropertyChanged}"
|
||||
Text="{Binding Notice}"
|
||||
TextWrapping="Wrap" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
@@ -7,6 +7,7 @@ using BeWo.Core.Commands;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.ViewModel;
|
||||
using BeWo.ViewModel.ListViewModel;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Translation;
|
||||
using DependencyObject = System.Windows.DependencyObject;
|
||||
@@ -139,9 +140,27 @@ namespace BeWo.View.Detail
|
||||
|
||||
private void RemoveAbsenceTime()
|
||||
{
|
||||
AbsenceTimes?.VMList.Remove(DataGridAbsenceTimes.GetCurrentValue<AbsenceTimeVM>());
|
||||
var absenceTime = DataGridAbsenceTimes.GetCurrentValue<AbsenceTimeVM>();
|
||||
if (absenceTime == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsAbsenceTimeInThePast(absenceTime) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry))
|
||||
{
|
||||
MessageBox.Show(Translator.Translate("Sie haben nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen."),
|
||||
"BeWo Planer", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
AbsenceTimes?.VMList.Remove(absenceTime);
|
||||
BeWoWpfUtils.RefreshDXGrid(DataGridAbsenceTimes);
|
||||
}
|
||||
|
||||
private static bool IsAbsenceTimeInThePast(AbsenceTimeVM absenceTime)
|
||||
{
|
||||
return absenceTime.End.HasValue && absenceTime.End.Value.Date < DateTime.Today;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,19 +230,24 @@ namespace BeWo.View.Detail.Accounting
|
||||
|
||||
var dialog = new GkvAbrechnungDialogViewModel(vm);
|
||||
|
||||
dialog.Closing += (s, ee) => Detail_Window_Closing(s, new CancelEventArgs());
|
||||
dialog.RequestCloseFinal += (s, ee) => Detail_Window_Closing(s, new CancelEventArgs());
|
||||
|
||||
BeWoApp.MainControl.WindowService.ShowGkvAbrechnungDetailWindow(dialog);
|
||||
}
|
||||
|
||||
private void Detail_Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
var dialog = sender as GkvAbrechnungDialogViewModel;
|
||||
var vm = dialog.Abrechnung;
|
||||
var bewo_window = sender as AnimatedBeWoWindow;
|
||||
var detail_control = bewo_window.GroupBoxContent as GkvAbrechnungDetailControl;
|
||||
|
||||
var vm = detail_control.DataContext as GkvAbrechnungLightVM;
|
||||
|
||||
vm.CheckAllInvoiceBases();
|
||||
|
||||
//vm.Notice = textbox_text;
|
||||
var checkbox_checked = detail_control.Checkbox_Bezahlt.IsChecked;
|
||||
var textbox_text = detail_control.txt_Notice.Text;
|
||||
|
||||
vm.Notice = textbox_text;
|
||||
|
||||
if (vm.IsDirty)
|
||||
{
|
||||
|
||||
@@ -338,7 +338,7 @@ namespace BeWo.View.Detail
|
||||
ApplicationCommands.Save,
|
||||
(s, e) =>
|
||||
{
|
||||
if (editView.IsValid() && editView.IsCustomerChangeAllowed())
|
||||
if (editView.IsValid() && editView.IsCustomerChangeAllowed() && editView.ConfirmExpiredHilfeplan())
|
||||
{
|
||||
editView.SaveData();
|
||||
CloseEditView();
|
||||
@@ -495,18 +495,62 @@ namespace BeWo.View.Detail
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!ConfirmExpiredHilfeplan())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var atvm = ViewModel.CreateFromPrototype();
|
||||
|
||||
ViewModel.AccountingTransactionVMList.Add(atvm);
|
||||
|
||||
|
||||
Save();
|
||||
ViewModel.RefreshAccountingTransactionsForSelectedTreeNode();
|
||||
}
|
||||
}
|
||||
|
||||
/// Warnung wenn der ausgewählte Hilfeplan zum Buchungsdatum bereits abgelaufen ist (Enddatum des Hilfeplans; Buchungsdatum).
|
||||
private bool ConfirmExpiredHilfeplan()
|
||||
{
|
||||
if (WithoutClient)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var selectedNode = ViewModel.SelectedCustomerNode;
|
||||
if (selectedNode == null || selectedNode.SupportConceptTreeNodeDC == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var relDC = selectedNode.SupportConceptTreeNodeDC.SupportConceptCostBearerRelDC;
|
||||
if (relDC == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return ConfirmHilfeplanNotExpired(relDC.EndDate, ViewModel.PrototypeVM.BookingDate);
|
||||
}
|
||||
|
||||
internal static bool ConfirmHilfeplanNotExpired(DateTime? hilfeplanEndDate, DateTime? bookingDate)
|
||||
{
|
||||
if (!hilfeplanEndDate.HasValue || !bookingDate.HasValue)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (hilfeplanEndDate.Value.Date < bookingDate.Value.Date)
|
||||
{
|
||||
var message = string.Format(
|
||||
"Bitte beachten Sie, dass dieser Hilfeplan ist am {0:dd.MM.yyyy} abgelaufen ist. Bitte prüfen ob die Buchung in neuen/aktuellen Hilfeplan gehört.\n\nMöchten Sie die Buchung trotzdem in diesm Hilfeplan speichern?",
|
||||
hilfeplanEndDate.Value, bookingDate.Value);
|
||||
|
||||
return MessageBox.Show(message, "Hilfeplan abgelaufen", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void chkWithClient_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (customerInfoGrid != null)
|
||||
@@ -662,6 +706,11 @@ namespace BeWo.View.Detail
|
||||
|
||||
if (lValid)
|
||||
{
|
||||
if (!ConfirmExpiredHilfeplan())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var atvm = ViewModel.CreateFromPrototype();
|
||||
|
||||
ViewModel.AccountingTransactionVMList.Add(atvm);
|
||||
|
||||
@@ -165,6 +165,24 @@ namespace BeWo.View.Detail
|
||||
return lAllowed;
|
||||
}
|
||||
|
||||
/// Warnung wenn der Hilfeplan der bearbeiteten Buchungsdatum bereits abgelaufen ist (Enddatum des Hilfeplans < Buchungsdatum)
|
||||
public bool ConfirmExpiredHilfeplan()
|
||||
{
|
||||
AccountingTransactionVM vm = this.ViewModel != null ? this.ViewModel.SelectedVM : null;
|
||||
if (vm == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
SupportConceptCostBearerRelDC relDC = vm.CostBearerRel;
|
||||
if (relDC == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return AccountingTransactionBookingView.ConfirmHilfeplanNotExpired(relDC.EndDate, vm.BookingDate);
|
||||
}
|
||||
|
||||
public bool IsValid()
|
||||
{
|
||||
FlatSupportConceptTreeNodeDC selectedNode = this.ViewModel.SelectedVM.SupportConceptTreeNode;
|
||||
@@ -197,6 +215,11 @@ namespace BeWo.View.Detail
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this.ConfirmExpiredHilfeplan())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
this.SaveData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="3,5,3,5"
|
||||
Content="{markup:Translate Dokumentationstext in der Zeiterfassung Pflichtfeld}"
|
||||
Content="{markup:Translate Klientenbezogener Dokumentationstext in der Zeiterfassung Pflichtfeld}"
|
||||
IsChecked="{Binding Path=IsServiceRecordNoticeMandatory}" />
|
||||
<CheckBox
|
||||
Grid.Row="1"
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
<dxg:GridControl
|
||||
Grid.Row="1"
|
||||
MaxHeight="300"
|
||||
MaxHeight="200"
|
||||
Margin="0,10,0,0"
|
||||
ItemsSource="{Binding GoalRatingList.VMList}">
|
||||
<dxg:GridControl.View>
|
||||
|
||||
@@ -94,14 +94,9 @@ namespace BeWo.View.Detail.Report
|
||||
|
||||
try
|
||||
{
|
||||
var filter = _SelectedFilter;
|
||||
UrlaubsplanerRootObj = await Task.Run(() =>
|
||||
ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(filter)));
|
||||
|
||||
var absenceOverview = await Task.Run(() =>
|
||||
ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(filter)));
|
||||
|
||||
UpdateScheduler(false, absenceOverview);
|
||||
ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter)));
|
||||
UpdateScheduler(false);
|
||||
ColorizeFeiertage();
|
||||
ApplyFeiertagCellStyle();
|
||||
}
|
||||
@@ -276,14 +271,19 @@ namespace BeWo.View.Detail.Report
|
||||
}
|
||||
|
||||
// Claude - optionaler Parameter absenceOverview: vorgeladene Daten aus Button_Click werden übergeben, um doppelten Serviceaufruf zu vermeiden
|
||||
public void UpdateScheduler(bool neuLaden, List<EmployeeDC> absenceOverview = null)
|
||||
public async void UpdateScheduler(bool neuLaden)
|
||||
{
|
||||
if (neuLaden || UrlaubsplanerRootObj == null)
|
||||
{
|
||||
UrlaubsplanerRootObj = await Task.Run(() =>
|
||||
ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
var absenceReasons = _AbsenceReasonDCs;
|
||||
|
||||
if (absenceOverview == null)
|
||||
absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
|
||||
|
||||
_ListOfEmployee = absenceOverview;
|
||||
_ListOfEmployee = UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs.Select(i => i.Employee).ToList();
|
||||
var start = new DateTime(_SelectedFilter.Year, _SelectedFilter.Month, 1);
|
||||
|
||||
try
|
||||
@@ -314,14 +314,14 @@ namespace BeWo.View.Detail.Report
|
||||
_AppointmentStorage.Clear();
|
||||
//UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs = new List<AbwesenheitsInformationDC>();
|
||||
int counter = 0;
|
||||
foreach (var employee in absenceOverview)
|
||||
foreach (var employee in _ListOfEmployee)
|
||||
{
|
||||
if (neuLaden == true)
|
||||
{
|
||||
var tageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.CountKrankheitstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
}
|
||||
//if (neuLaden == true)
|
||||
//{
|
||||
// var tageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
// UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageUrlaub = ServiceFacade.DoEmployeeServiceSync(s => s.CountUrlaubstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
// UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter].TageKrankheit = ServiceFacade.DoEmployeeServiceSync(s => s.CountKrankheitstage(UrlaubsplanerRootObj.AlleAbwesenheitsInformationDCs[counter]));
|
||||
//}
|
||||
|
||||
#region auskommentiert
|
||||
//AbwesenheitsInformationDC infoDC = new AbwesenheitsInformationDC
|
||||
|
||||
@@ -40,6 +40,7 @@ namespace BeWo.View.Detail.Report
|
||||
|
||||
private Dictionary<long, List<AbsenceTimeDC>> _AbsenceTimesDict;
|
||||
private Dictionary<long, List<OvertimeDC>> _OverTimesDict;
|
||||
private Dictionary<long, DienstInfoDC> _DienstProOidDict; // Claude: schneller Pausen-Lookup statt Listen-Suche pro Eintrag
|
||||
|
||||
private CompactWohnheimDC _AuswahlWohnheim;
|
||||
private DienstZeileDC _AuswahlDienstZeileDC;
|
||||
@@ -944,6 +945,11 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
_AuswahlDienstZeileDC.RemoveDienst(datum.Day);
|
||||
DeleteFromList(eintrag, null);
|
||||
|
||||
// Claude: Beim Bearbeiten (alter Eintrag wird durch neuen ersetzt) die alte Dauer vom Ist/Saldo abziehen,
|
||||
// sonst wird sie doppelt gezählt. Beim Löschen (dienst.Oid == -1) passiert der Abzug weiter unten.
|
||||
if (dienst.Oid != -1)
|
||||
CheckEintragAnAbwesenheitstagen(eintrag, null, employee, false);
|
||||
}
|
||||
}
|
||||
if (dienst.Oid == -1)
|
||||
@@ -1076,6 +1082,11 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
_AuswahlDienstZeileDC.RemoveDienst(datum.Day);
|
||||
DeleteFromList(null, vertretung);
|
||||
|
||||
// Claude: Beim Bearbeiten (alte Vertretung wird durch neue ersetzt) die alte Dauer vom Ist/Saldo abziehen,
|
||||
// sonst wird sie doppelt gezählt. Beim Löschen (dienst.Oid == -1) passiert der Abzug weiter unten.
|
||||
if (dienst.Oid != -1)
|
||||
CheckEintragAnAbwesenheitstagen(null, vertretung, employee, false);
|
||||
}
|
||||
}
|
||||
if (dienst.Oid == -1)
|
||||
@@ -1805,12 +1816,12 @@ namespace BeWo.View.Detail.Report
|
||||
if (eintraegeEinerWoche != null)
|
||||
{
|
||||
foreach (var eintrag in eintraegeEinerWoche)
|
||||
stundenWoche.Add(eintrag.DauerInStunden);
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstProOidDict)); // Claude: Pause abziehen
|
||||
}
|
||||
if (vertretungenEinerWoche != null)
|
||||
{
|
||||
foreach (var vertretung in vertretungenEinerWoche)
|
||||
stundenWoche.Add(vertretung.DauerInStunden);
|
||||
stundenWoche.Add(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstProOidDict)); // Claude: Pause abziehen
|
||||
}
|
||||
if (ueberstundenEinerWoche != null)
|
||||
{
|
||||
@@ -2120,7 +2131,7 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (tage.Contains(e.Datum))
|
||||
{
|
||||
res.Add(e.DauerInStunden * -1); // Abzug von Wochen-Ist
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(e.DauerInStunden, e.DienstOid, _DienstProOidDict) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
|
||||
// .First(z => z.Employee.EmployeeOid == e.EmployeeOid).Ist -= Convert.ToDecimal(e.DauerInStunden);
|
||||
}
|
||||
@@ -2132,7 +2143,7 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (tage.Contains(v.Datum))
|
||||
{
|
||||
res.Add(v.DauerInStunden * -1); // Abzug von Wochen-Ist
|
||||
res.Add(DienstInfoDC.DauerAbzueglichPause(v.DauerInStunden, v.DienstOid, _DienstProOidDict) * -1); // Abzug von Wochen-Ist // Claude: gleicher Pausenabzug wie beim Aufaddieren
|
||||
//_DienstplanerRootObj.MonatsZusammenfassung // Abzug von Monats-Ist
|
||||
// .First(z => z.Employee.EmployeeOid == v.EmployeeOid).Ist -= Convert.ToDecimal(v.DauerInStunden);
|
||||
}
|
||||
@@ -2237,6 +2248,9 @@ namespace BeWo.View.Detail.Report
|
||||
}
|
||||
_OverTimesDict = overtimeTemp;
|
||||
|
||||
// Claude: Lookup-Dictionary für den Pausenabzug einmalig aufbauen
|
||||
_DienstProOidDict = DienstInfoDC.BuildDienstProOidDictionary(_DienstplanerRootObj.AlleDienste);
|
||||
|
||||
_GridControl.ItemsSource = _DienstplanerRootObj.DienstZeilenListe;
|
||||
}
|
||||
|
||||
@@ -2572,6 +2586,10 @@ namespace BeWo.View.Detail.Report
|
||||
}
|
||||
private List<DienstplanerMonthlySummaryDC> CheckEintragAnAbwesenheitstagen(DienstEintragDC eintrag, DienstvertretungDC vertretung, EmployeeDC employee, bool plus)
|
||||
{
|
||||
// Claude: Pause des Dienstes von der Dauer abziehen, damit Ist/Saldo beim Eintragen/Löschen genauso berechnet werden wie beim Neuladen (BerechneSollSaldoUndIst)
|
||||
decimal dauerEintrag = eintrag != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(eintrag.DauerInStunden, eintrag.DienstOid, _DienstProOidDict)) : 0m;
|
||||
decimal dauerVertretung = vertretung != null ? Convert.ToDecimal(DienstInfoDC.DauerAbzueglichPause(vertretung.DauerInStunden, vertretung.DienstOid, _DienstProOidDict)) : 0m;
|
||||
|
||||
if (!_DienstplanerRootObj.EnableDiensteAnFeiertagen)
|
||||
{
|
||||
if (eintrag != null)
|
||||
@@ -2584,13 +2602,13 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (plus)
|
||||
{
|
||||
item.Ist += Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Saldo += Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Ist += dauerEintrag; // Claude: Dauer abzüglich Pause
|
||||
item.Saldo += dauerEintrag;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Ist -= Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Saldo -= Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Ist -= dauerEintrag;
|
||||
item.Saldo -= dauerEintrag;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2607,13 +2625,13 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (plus)
|
||||
{
|
||||
item.Ist += Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Saldo += Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Ist += dauerVertretung; // Claude: Dauer abzüglich Pause
|
||||
item.Saldo += dauerVertretung;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Ist -= Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Saldo -= Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Ist -= dauerVertretung;
|
||||
item.Saldo -= dauerVertretung;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2631,13 +2649,13 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (plus)
|
||||
{
|
||||
item.Ist += Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Saldo += Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Ist += dauerEintrag; // Claude: Dauer abzüglich Pause
|
||||
item.Saldo += dauerEintrag;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Ist -= Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Saldo -= Convert.ToDecimal(eintrag.DauerInStunden);
|
||||
item.Ist -= dauerEintrag;
|
||||
item.Saldo -= dauerEintrag;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2651,13 +2669,13 @@ namespace BeWo.View.Detail.Report
|
||||
{
|
||||
if (plus)
|
||||
{
|
||||
item.Ist += Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Saldo += Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Ist += dauerVertretung; // Claude: Dauer abzüglich Pause
|
||||
item.Saldo += dauerVertretung;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Ist -= Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Saldo -= Convert.ToDecimal(vertretung.DauerInStunden);
|
||||
item.Ist -= dauerVertretung;
|
||||
item.Saldo -= dauerVertretung;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1757,10 +1757,15 @@ namespace BeWo.View.Detail
|
||||
{
|
||||
var control = new RatingEditView();
|
||||
control.InitView(vm);
|
||||
var height = this.ActualHeight - 50;
|
||||
if (height < 600)
|
||||
{
|
||||
height = 600;
|
||||
}
|
||||
var beWoWindow = new BeWoWindow
|
||||
{
|
||||
rootGroupBox = { Header = "Bewertung bearbeiten" },
|
||||
Height = this.Height,
|
||||
Height = height,
|
||||
Width = 1000,
|
||||
MinWidth = 550,
|
||||
WindowStartupLocation = WindowStartupLocation.CenterOwner,
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace BeWo.View.Detail
|
||||
urlaubskonto = new List<UrlaubskontoDarstellungDC>();
|
||||
urlaubskonto.Add(new UrlaubskontoDarstellungDC()
|
||||
{
|
||||
Erlaeuterung = "Es existiert kein Vertrag für ausgewähltes Jahr",
|
||||
Erlaeuterung = "Es existiert kein Vertrag für das ausgewählte Jahr",
|
||||
});
|
||||
button_openLeaveDayDialogue.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
@@ -2655,7 +2655,7 @@
|
||||
Width="70"
|
||||
AllowEditing="False"
|
||||
FieldName="HatUnterschriftImage"
|
||||
Header="Unterschrift"
|
||||
Header="Einzelunterschrift"
|
||||
IsEnabled="False"
|
||||
Visible="False">
|
||||
<dxg:GridColumn.EditSettings>
|
||||
|
||||
@@ -2314,6 +2314,7 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
if (ViewModel != null)
|
||||
{
|
||||
ViewModel.IsGroupBooking = true;
|
||||
ViewModel.IsMultiBooking = false;
|
||||
}
|
||||
|
||||
supportConceptSelectionControl.Visibility = Visibility.Collapsed;
|
||||
@@ -2341,6 +2342,11 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
|
||||
SelectedItemChanged(
|
||||
SupportConceptService.CreateFlatSupportConceptItem(multiSupportConceptControl.SelectedItem, null));
|
||||
if (multiSupportConceptControl.SelectedSupportConcepts != null && multiSupportConceptControl.SelectedSupportConcepts.Count > 0)
|
||||
{
|
||||
ViewModel.UpdateGroupServiceAccountings(multiSupportConceptControl.SelectedSupportConcepts);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ChkGroupBooking_Unchecked(object sender, RoutedEventArgs e)
|
||||
@@ -2383,6 +2389,7 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
if (ViewModel != null)
|
||||
{
|
||||
ViewModel.IsMultiBooking = true;
|
||||
ViewModel.IsGroupBooking = false;
|
||||
}
|
||||
|
||||
supportConceptSelectionControl.Visibility = Visibility.Collapsed;
|
||||
@@ -2409,6 +2416,10 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
|
||||
SelectedItemChanged(
|
||||
SupportConceptService.CreateFlatSupportConceptItem(multiSupportConceptControl.SelectedItem, null));
|
||||
if (multiSupportConceptControl.SelectedSupportConcepts != null && multiSupportConceptControl.SelectedSupportConcepts.Count > 0)
|
||||
{
|
||||
ViewModel.UpdateGroupServiceAccountings(multiSupportConceptControl.SelectedSupportConcepts);
|
||||
}
|
||||
}
|
||||
|
||||
private void ChkMultiBooking_Unchecked(object sender, RoutedEventArgs e)
|
||||
@@ -2470,6 +2481,26 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
ButtonZeiterfassungErstellen.Visibility = BeWoApp.AppSettings.ShowKlientenBetreuungszeiten ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
SetRebookingButtonVisibility();
|
||||
|
||||
RevalidateNotice(); // Claude
|
||||
}
|
||||
|
||||
// Claude: Der Klientenbezug entscheidet, ob die Dokumentation Pflichtfeld ist
|
||||
// (ValidationRules.EmptyNoticeInNewServiceRecordsAllowed). Beim Umschalten der CheckBox
|
||||
// muss das Notice-Binding neu bewertet werden, sonst bleibt ein bereits angezeigter
|
||||
// Validierungsfehler stehen bzw. ein neu entstandener wird nicht angezeigt.
|
||||
private void RevalidateNotice()
|
||||
{
|
||||
if (dokumentationsTextBox == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var lExpression = dokumentationsTextBox.GetBindingExpression(TextBox.TextProperty);
|
||||
if (lExpression != null)
|
||||
{
|
||||
lExpression.UpdateSource();
|
||||
}
|
||||
}
|
||||
|
||||
private void ChkWithClient_Unchecked(object sender, RoutedEventArgs e)
|
||||
@@ -2498,6 +2529,8 @@ namespace BeWo.View.Detail.Zeiterfassung
|
||||
}
|
||||
|
||||
SetRebookingButtonVisibility();
|
||||
|
||||
RevalidateNotice(); // Claude
|
||||
}
|
||||
|
||||
//CB EINKOMMENTIEREN
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
x:FieldModifier="public"
|
||||
MouseDoubleClick="RootGroupBox_OnMouseDoubleClick"
|
||||
MouseLeftButtonDown="RootGroupBox_OnMouseLeftButtonDown"
|
||||
Style="{DynamicResource PopUpWindowStyle2}">
|
||||
Style="{DynamicResource PopUpWindowStyle}">
|
||||
<GroupBox.CommandBindings>
|
||||
<CommandBinding Command="ApplicationCommands.Close" Executed="CommandBinding_Close_Executed" />
|
||||
<CommandBinding Command="ApplicationCommands.Save" Executed="CommandBinding_Save_Executed" />
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace BeWo.View.Windows
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
//CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => Close()));
|
||||
CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => Close()));
|
||||
|
||||
if(ServiceFacade.IsWaiting())
|
||||
StartWaiting();
|
||||
@@ -169,7 +169,7 @@ namespace BeWo.View.Windows
|
||||
|
||||
public void Window_Closed(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void StartWaiting()
|
||||
|
||||
@@ -245,7 +245,7 @@ namespace BeWo.ViewModel
|
||||
|
||||
public AiPromptbausteinFolderVM Parent { get; set; }
|
||||
|
||||
public FontWeight FontWeight => !IsNew && (Parent is null || Parent.Parent is null) ? FontWeights.SemiBold : FontWeights.Medium;
|
||||
public FontWeight FontWeight => !IsNew && Parent is null ? FontWeights.SemiBold : FontWeights.Medium;
|
||||
public bool HasSubFolders => SubFolders is object && SubFolders.Count > 0;
|
||||
|
||||
public int TotalPromptCount
|
||||
|
||||
@@ -156,9 +156,11 @@ namespace BeWo.ViewModel
|
||||
liste.DoForEach(f => f.Transaktionskassenbestand = 0);
|
||||
|
||||
var vorherige = liste.FirstOrDefault();
|
||||
vorherige.Transaktionskassenbestand = Anfangsbestand ?? 0;
|
||||
|
||||
if (vorherige != null)
|
||||
{
|
||||
vorherige.Transaktionskassenbestand = Anfangsbestand ?? 0;
|
||||
|
||||
foreach (var transaktion in liste)
|
||||
{
|
||||
transaktion.Transaktionskassenbestand = vorherige.Transaktionskassenbestand + transaktion.Betrag*(transaktion.Zahlungstyp.Enum == Zahlungstyp.Auszahlung ? -1 : 1);
|
||||
|
||||
@@ -25,6 +25,8 @@ namespace BeWo.ViewModel.Light
|
||||
|
||||
public static string PropertyName_ErstelltAm = "ErstelltAm";
|
||||
|
||||
private long _Oid;
|
||||
private long _Version;
|
||||
private string _Notice;
|
||||
|
||||
private long _OrganisationOid;
|
||||
@@ -115,11 +117,31 @@ namespace BeWo.ViewModel.Light
|
||||
public DateTime ErstelltAmDate => ErstelltAm.Date;
|
||||
public long Oid
|
||||
{
|
||||
get => DataContract.Oid;
|
||||
get { return this._Oid; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Oid, value))
|
||||
{
|
||||
this._Oid = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Oid, value), nameof(Oid));
|
||||
this.FirePropertyChanged(nameof(Oid));
|
||||
}
|
||||
}
|
||||
}
|
||||
public long Version
|
||||
{
|
||||
get => DataContract.Version;
|
||||
get { return this._Version; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._Version, value))
|
||||
{
|
||||
this._Version = value;
|
||||
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Version, value), nameof(Version));
|
||||
this.FirePropertyChanged(nameof(Version));
|
||||
}
|
||||
}
|
||||
}
|
||||
public string Notice
|
||||
{
|
||||
@@ -329,7 +351,7 @@ namespace BeWo.ViewModel.Light
|
||||
|
||||
public override void UpdateByDataContract(GkvAbrechnungLightDC pDataContract)
|
||||
{
|
||||
DataContract = pDataContract;
|
||||
Version = pDataContract.Version;
|
||||
|
||||
Notice = pDataContract.Notice;
|
||||
|
||||
@@ -350,6 +372,9 @@ namespace BeWo.ViewModel.Light
|
||||
|
||||
_ErstelltAm = pDataContract.ErstelltAm;
|
||||
|
||||
_Oid = pDataContract.Oid;
|
||||
_Version = pDataContract.Version;
|
||||
|
||||
_Notice = pDataContract.Notice;
|
||||
|
||||
_Betrag = pDataContract.Betrag;
|
||||
@@ -376,6 +401,8 @@ namespace BeWo.ViewModel.Light
|
||||
}
|
||||
protected override GkvAbrechnungLightDC MapToDataContract(GkvAbrechnungLightDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.Version = _Version;
|
||||
|
||||
pDataContract.Notice = _Notice;
|
||||
pDataContract.Betrag = _Betrag;
|
||||
pDataContract.Bezahlt = _Bezahlt;
|
||||
@@ -393,6 +420,7 @@ namespace BeWo.ViewModel.Light
|
||||
return;
|
||||
}
|
||||
|
||||
Version = dc.Version;
|
||||
Protokolle = dc.Protokolle.ToList();
|
||||
|
||||
IsReady2Send = dc.IsReady2Send;
|
||||
|
||||
@@ -13,6 +13,7 @@ using BeWo.Core;
|
||||
using BeWo.Core.Commands;
|
||||
using BeWo.Core.Service;
|
||||
using BeWo.ServiceProxy;
|
||||
using BeWo.Validation; // Claude: ICustomerRelatedContext
|
||||
using BeWo.View.Controls.AI;
|
||||
using BeWo.ViewModel.Controls.AI;
|
||||
using BeWo.ViewModel.View.AI;
|
||||
@@ -34,7 +35,8 @@ using DispatcherObject = System.Windows.Threading.DispatcherObject;
|
||||
|
||||
namespace BeWo.ViewModel.ListViewModel
|
||||
{
|
||||
public class ServiceRecordListVM : AbstractDCListMapperVM<ServiceRecordDC, ServiceRecordVM>, ITextProvider
|
||||
// Claude: ICustomerRelatedContext -> steuert die Dokumentationspflicht bei der Neuerfassung
|
||||
public class ServiceRecordListVM : AbstractDCListMapperVM<ServiceRecordDC, ServiceRecordVM>, ITextProvider, ICustomerRelatedContext
|
||||
{
|
||||
public static string PropertyName_CustomerNodes = "CustomerNodes";
|
||||
public static string PropertyName_Information = "Information";
|
||||
@@ -666,6 +668,14 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
|
||||
public bool WithoutClient { get; set; }
|
||||
|
||||
// Claude: Klientenbezug fuer die Dokumentationspflicht. In ServiceRecordView2 steuert das
|
||||
// die CheckBox "chkWithClient" ueber WithoutClient. In Views ohne diese CheckBox
|
||||
// (z.B. AdditionalServiceView) bleibt WithoutClient false -> Verhalten wie bisher.
|
||||
public bool IsCustomerRelated
|
||||
{
|
||||
get { return !WithoutClient; }
|
||||
}
|
||||
|
||||
protected override Comparison<ServiceRecordVM> Comparison
|
||||
{
|
||||
get { return (x, y) => y.StartDate.CompareTo(x.StartDate); }
|
||||
@@ -1042,8 +1052,8 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
{
|
||||
if (_SelectedCustomerNode.SupportConceptTreeNodeDC == null)
|
||||
{
|
||||
//Gruppen- oder Mehrfachbuchung
|
||||
PrototypeVM.UpdateServiceAccountings(null, _Category2Services, true);
|
||||
//Gruppen- oder Mehrfachbuchung
|
||||
PrototypeVM.UpdateServiceAccountings(null, _Category2Services, true);
|
||||
|
||||
BuildServiceRecordsForTreeNode(_SelectedCustomerNode, true, OnlyWithThisType);
|
||||
}
|
||||
@@ -1844,13 +1854,18 @@ namespace BeWo.ViewModel.ListViewModel
|
||||
|
||||
UpdateGruppenZiele(allInfos);
|
||||
|
||||
if (BeWoApp.AppSettings.FilterGroupServiceCategories)
|
||||
if (BeWoApp.AppSettings.FilterGroupServiceCategories || oids.Count == 1)
|
||||
{
|
||||
var serviceAccountings = ErstelleServiceCategorySchnittmenge(allInfos);
|
||||
PrototypeVM.UpdateServiceAccountings(serviceAccountings, _Category2Services, true);
|
||||
}
|
||||
PrototypeVM.UpdateServiceAccountings(serviceAccountings, _Category2Services, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
PrototypeVM.UpdateServiceAccountings(null, _Category2Services, true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateGruppenZiele(List<SupportConceptTreeNodeDetailInfoDC> allInfos)
|
||||
|
||||
@@ -21,7 +21,8 @@ using Color = System.Windows.Media.Color;
|
||||
|
||||
namespace BeWo.ViewModel
|
||||
{
|
||||
public class ServiceRecordVM : AbstractDCMapperVM<ServiceRecordDC>
|
||||
// Claude: ICustomerRelatedContext -> steuert die Dokumentationspflicht beim Bearbeiten
|
||||
public class ServiceRecordVM : AbstractDCMapperVM<ServiceRecordDC>, ICustomerRelatedContext
|
||||
{
|
||||
public String ATEST { get; set; }
|
||||
#region Constants and Fields
|
||||
@@ -1339,6 +1340,18 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
// Claude: Klientenbezug fuer die Dokumentationspflicht beim Bearbeiten eines bestehenden
|
||||
// Eintrags (ServiceRecordEditView / ServiceRecordGroupEditView binden direkt an dieses VM).
|
||||
// Beim Laden aus dem DataContract ist Customer gesetzt, wenn der Eintrag zu einem
|
||||
// Klienten gehoert - kundenlose Eintraege haben Customer == null.
|
||||
// Achtung: Am PrototypeVM der Neuerfassung ist Customer immer null; dort liefert
|
||||
// ServiceRecordListVM.IsCustomerRelated den Kontext (DataItem hat im AttributeValidator
|
||||
// Vorrang), weil der Kunde erst nach der Validierung an den Klon geschrieben wird.
|
||||
public bool IsCustomerRelated
|
||||
{
|
||||
get { return Customer != null; }
|
||||
}
|
||||
|
||||
[Validation(ValidationRule = ValidationRules.EmptyNoticeInNewServiceRecordsAllowed)]
|
||||
public string Notice
|
||||
{
|
||||
|
||||
@@ -972,13 +972,11 @@ namespace BeWo.ViewModel
|
||||
Oid = -5,
|
||||
Title = "Favoriten",
|
||||
Description = "Eigene Favoriten",
|
||||
SubPrompts = new List<AiPromptbausteinPromptDC>(),
|
||||
SubRoutines = new List<AiPromptbausteinRoutineDC>()
|
||||
SubPrompts = new List<AiPromptbausteinPromptDC>()
|
||||
};
|
||||
var fav_vm = new AiPromptbausteinFolderVM(favoriten);
|
||||
|
||||
fav_vm.SubPrompts.VMList.Clear();
|
||||
fav_vm.SubRoutines.VMList.Clear();
|
||||
|
||||
folders.VMList.Insert(0, fav_vm);
|
||||
|
||||
|
||||
@@ -74,8 +74,6 @@ namespace BeWo.ViewModel.View.AI
|
||||
{
|
||||
Folders = new AiPromptbausteinFolderListVM();
|
||||
}
|
||||
|
||||
//Closing += (s, e) => ResetSelection();
|
||||
}
|
||||
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType) : this()
|
||||
{
|
||||
@@ -86,7 +84,7 @@ namespace BeWo.ViewModel.View.AI
|
||||
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType, AiPromptbausteinFolderListVM viewModel, bool isFavorite = false, bool canOpen = true) : this(aiActionType)
|
||||
{
|
||||
LoadedActionType = aiActionType;
|
||||
UpdateVMList(viewModel);
|
||||
Folders = viewModel;
|
||||
IsFavorite = isFavorite;
|
||||
CanOpenContextMenu = canOpen;
|
||||
}
|
||||
@@ -156,9 +154,6 @@ namespace BeWo.ViewModel.View.AI
|
||||
public AiPromptbausteinFolderListVM Folders { get; private set; }
|
||||
public AiActionType LoadedActionType { get; set; }
|
||||
|
||||
public AiPromptbausteinFolderVM FavoritenFolder => Folders.VMList[0];
|
||||
public AiPromptbausteinFolderVM RootFolders => Folders.VMList[1];
|
||||
|
||||
public bool HasFavoriten
|
||||
{
|
||||
get
|
||||
@@ -168,7 +163,7 @@ namespace BeWo.ViewModel.View.AI
|
||||
return true;
|
||||
#endif
|
||||
|
||||
return Folders.Count > 1 && (FavoritenFolder.Prompts.Count > 0 || FavoritenFolder.Routines.Count > 0);
|
||||
return Folders.Count > 3 && (Folders.VMList[0].Prompts.Count > 0 || Folders.VMList[0].Routines.Count > 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,8 +175,10 @@ namespace BeWo.ViewModel.View.AI
|
||||
|
||||
SelectedFolder = null;
|
||||
|
||||
// Favoriten-Popup:
|
||||
var target = IsFavorite ? FavoritenFolder : RootFolders;
|
||||
// Favoriten-Popup: Favoriten (VMList[0]), sonst "Eigene" (VMList[1]) vorauswählen.
|
||||
var target = IsFavorite
|
||||
? (Folders.VMList.Count > 0 ? Folders.VMList[0] : null)
|
||||
: (Folders.VMList.Count > 1 ? Folders.VMList[1] : null);
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
@@ -214,7 +211,7 @@ namespace BeWo.ViewModel.View.AI
|
||||
{
|
||||
VMFactory.CreateAiPromptbausteinFolderListVMAsync(AiActionType, UpdateVMList);
|
||||
|
||||
if (notify)
|
||||
if(notify)
|
||||
VMListReloaded?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
private void UpdateVMList(AiPromptbausteinFolderListVM new_list)
|
||||
@@ -223,23 +220,17 @@ namespace BeWo.ViewModel.View.AI
|
||||
|
||||
FirePropertyChanged(nameof(Folders));
|
||||
|
||||
if (Folders.VMList.Count > 0
|
||||
&& Folders.VMList[0].DataContract.Oid == -51
|
||||
&& Folders.VMList[0].SubFolders.Count > 0
|
||||
&& Folders.VMList[0].SubFolders.VMList[0].DataContract.Oid == -5)
|
||||
if (Folders.VMList.Count > 0 && Folders.VMList[0].DataContract.Oid == -5)
|
||||
{
|
||||
Favoriten = Folders.VMList[0].SubFolders.VMList[0];
|
||||
Favoriten = Folders.VMList[0];
|
||||
|
||||
if (IsFavorite)
|
||||
SelectedFolder = Favoriten;
|
||||
}
|
||||
|
||||
if (!IsFavorite &&
|
||||
Folders.VMList.Count > 0
|
||||
&& Folders.VMList[0].DataContract.Oid == -51
|
||||
&& Folders.VMList[0].SubFolders.Count > 1
|
||||
&& Folders.VMList[0].SubFolders.VMList[1].DataContract.Oid == -1)
|
||||
Folders.VMList[0].SubFolders.VMList[1].IsSelected = true;
|
||||
// "Eigene" (VMList[1]) im normalen Modus vorauswählen.
|
||||
if (!IsFavorite && Folders.VMList.Count > 1)
|
||||
Folders.VMList[1].IsSelected = true;
|
||||
|
||||
FirePropertyChanged(nameof(HasFavoriten));
|
||||
}
|
||||
|
||||
@@ -29,8 +29,7 @@ namespace BeWo.ViewModel.View.Administration
|
||||
private AiActionType AiActionType { get; set; }
|
||||
|
||||
public AiPromptbausteinFolderListVM Folders { get; set; }
|
||||
public AiPromptbausteinFolderVM Favoriten => Folders.VMList[0];
|
||||
public AiPromptbausteinFolderVM RootFolders => Folders.VMList[1];
|
||||
public AiPromptbausteinFolderVM Favoriten { get; set; }
|
||||
|
||||
public AiPromptbausteinFolderVM CopiedFolder { get; set; }
|
||||
public AiPromptbausteinPromptVM CopiedPrompt { get; set; }
|
||||
@@ -82,8 +81,7 @@ namespace BeWo.ViewModel.View.Administration
|
||||
public AbstractBaseVM SelectedItem
|
||||
{
|
||||
get => _SelectedItem;
|
||||
set
|
||||
{
|
||||
set {
|
||||
var success = SetProperty(ref _SelectedItem, value, nameof(SelectedItem));
|
||||
|
||||
if (!success)
|
||||
@@ -171,7 +169,7 @@ namespace BeWo.ViewModel.View.Administration
|
||||
OpenAddRoutineDialogCommand.RaiseCanExecuteChanged();
|
||||
OpenEditRoutineDialogCommand.RaiseCanExecuteChanged();
|
||||
DeleteRoutineCommand.RaiseCanExecuteChanged();
|
||||
ChangeFavoritenStateRoutineCommand.RaiseCanExecuteChanged();
|
||||
ChangeFavoritenStateRoutineCommand.RaiseCanExecuteChanged();
|
||||
}
|
||||
public void UpdateItemCommands()
|
||||
{
|
||||
@@ -187,12 +185,14 @@ namespace BeWo.ViewModel.View.Administration
|
||||
listvm =>
|
||||
{
|
||||
Folders = listvm;
|
||||
|
||||
if (RootFolders.SubFolders.VMList[0].DataContract.Oid == -1)
|
||||
if (Folders.VMList.Count > 0 && Folders.VMList[0].DataContract.Oid == -5)
|
||||
{
|
||||
RootFolders.SubFolders.VMList[0].IsSelected = true;
|
||||
Favoriten = Folders.VMList[0];
|
||||
}
|
||||
|
||||
if (Folders.VMList.Count > 1)
|
||||
Folders.VMList[1].IsSelected = true;
|
||||
|
||||
FirePropertyChanged(nameof(Folders));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,35 +1,25 @@
|
||||
using DevExpress.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace BeWo.ViewModel.View
|
||||
{
|
||||
public class DialogViewModel : WindowViewModel
|
||||
{
|
||||
public event EventHandler Closing;
|
||||
public event EventHandler Closed;
|
||||
public event EventHandler RequestCloseFinal;
|
||||
|
||||
public DelegateCommand CloseCommand { get; set; }
|
||||
public DelegateCommand CloseFinalCommand { get; set; }
|
||||
|
||||
protected DialogViewModel() : base()
|
||||
public DialogViewModel() : base()
|
||||
{
|
||||
CloseCommand = new DelegateCommand(Close, canClose, false);
|
||||
CloseFinalCommand = new DelegateCommand(CloseFinal, canClose, false);
|
||||
|
||||
}
|
||||
|
||||
protected virtual void Close()
|
||||
{
|
||||
Closing?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
protected virtual void CloseFinal()
|
||||
{
|
||||
Closed?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
protected virtual bool canClose()
|
||||
{
|
||||
return true;
|
||||
RequestCloseFinal?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
|
||||
<package id="CsvHelper" version="15.0.5" targetFramework="net45" requireReinstallation="true" />
|
||||
<package id="Microsoft.CSharp" version="4.5.0" targetFramework="net45" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net452" />
|
||||
<package id="RestSharp" version="106.15.0" targetFramework="net452" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net45" requireReinstallation="true" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net45" requireReinstallation="true" />
|
||||
<package id="System.ValueTuple" version="4.4.0" targetFramework="net45" requireReinstallation="true" />
|
||||
</packages>
|
||||
@@ -115,8 +115,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LebenshilfeEssenReports", "
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MuellestumpeReports", "ReportImp\MuellestumpeReports\MuellestumpeReports.csproj", "{9145848B-880B-495D-A528-61830A30AB4D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SchillingerReports", "ReportImp\SchillingerReports\SchillingerReports.csproj", "{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WigonetzReports", "ReportImp\WigonetzReports\WigonetzReports.csproj", "{2EDF987E-ABA8-4840-90FB-4B364BA8D19A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SigncomReports", "ReportImp\SigncomReports\SigncomReports.csproj", "{79D48DBF-DBD5-4CCB-B643-3DD3C5F4ADF0}"
|
||||
@@ -1004,6 +1002,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerspektiveAnitaNelles", "R
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FabiansDatenbank", "ReportImp\FabiansDatenbank\FabiansDatenbank.csproj", "{2B6F428D-8F97-4638-AF6B-907CB98D9869}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VereinZurIntegrationChemnitz", "ReportImp\VereinZurIntegrationChemnitz\VereinZurIntegrationChemnitz.csproj", "{EA969934-60A6-459F-A07C-1CF537ED775E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BEWODIREKTGmbH", "ReportImp\BEWODIREKTGmbH\BEWODIREKTGmbH.csproj", "{B549B705-DA0C-40A6-85D9-27D6852BC991}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|.NET = Debug|.NET
|
||||
@@ -2099,28 +2101,6 @@ Global
|
||||
{9145848B-880B-495D-A528-61830A30AB4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{9145848B-880B-495D-A528-61830A30AB4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{9145848B-880B-495D-A528-61830A30AB4D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|.NET.ActiveCfg = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|.NET.Build.0 = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|Any CPU.ActiveCfg = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|Any CPU.Build.0 = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|Mixed Platforms.ActiveCfg = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|Mixed Platforms.Build.0 = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|x86.ActiveCfg = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.DebugRemote|x86.Build.0 = DebugRemote|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2EDF987E-ABA8-4840-90FB-4B364BA8D19A}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{2EDF987E-ABA8-4840-90FB-4B364BA8D19A}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{2EDF987E-ABA8-4840-90FB-4B364BA8D19A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -12318,6 +12298,54 @@ Global
|
||||
{2B6F428D-8F97-4638-AF6B-907CB98D9869}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2B6F428D-8F97-4638-AF6B-907CB98D9869}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2B6F428D-8F97-4638-AF6B-907CB98D9869}.Release|x86.Build.0 = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|.NET.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.DebugRemote|x86.Build.0 = Debug|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|.NET.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.DebugRemote|x86.Build.0 = Debug|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -12371,7 +12399,6 @@ Global
|
||||
{F0F719F9-916F-4C22-AC0F-B3237AD5B5FC} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{48C4F2FB-0251-47B5-8CB8-268AD2020D76} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{9145848B-880B-495D-A528-61830A30AB4D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{5B55F33D-F348-4ABA-AC5E-0826BE1A6EC9} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{2EDF987E-ABA8-4840-90FB-4B364BA8D19A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{79D48DBF-DBD5-4CCB-B643-3DD3C5F4ADF0} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{F2CF1C5C-74F7-47D7-983F-30172B5C0BBC} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
@@ -12814,6 +12841,8 @@ Global
|
||||
{279D4AEA-239C-4A2C-91DE-735EB7A72F96} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{D80E7BBD-F017-4FBB-B3D3-5AD9F43C418D} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{2B6F428D-8F97-4638-AF6B-907CB98D9869} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{EA969934-60A6-459F-A07C-1CF537ED775E} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{B549B705-DA0C-40A6-85D9-27D6852BC991} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BeWoChatServer</RootNamespace>
|
||||
<AssemblyName>BeWoChatServer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
@@ -49,14 +49,6 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\BeWoPlaner\Lib\Castle.DynamicProxy2.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.6.0.5\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\NHibernate.dll</HintPath>
|
||||
@@ -88,7 +80,6 @@
|
||||
<Content Include="Multitenancy\demo.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Data\Data.csproj">
|
||||
@@ -116,4 +107,8 @@
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<PackageReference Include="log4net" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="6.0.5" targetFramework="net40" requireReinstallation="true" />
|
||||
</packages>
|
||||
@@ -16,12 +16,5 @@
|
||||
<add key="ChangesScriptName" value="Changes_alle_fuer_neue_db.sql" />
|
||||
<add key="LogFilePath" value="Logs\" />
|
||||
</appSettings>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<!-- Bindungsumleitungen werden per AutoGenerateBindingRedirects beim Build erzeugt. -->
|
||||
</configuration>
|
||||
|
||||
@@ -37,44 +37,11 @@
|
||||
<ApplicationIcon>bdt.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.8.0.2\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.2, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.8.0.2\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySqlConnector, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d33d3e53aa5f8c92, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySqlConnector.2.4.0\lib\net471\MySqlConnector.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=8.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.8.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -97,11 +64,23 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="bdt.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||
<PackageReference Include="MySqlConnector" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
<PackageReference Include="System.Buffers" />
|
||||
<PackageReference Include="System.Diagnostics.DiagnosticSource" />
|
||||
<PackageReference Include="System.Memory" />
|
||||
<PackageReference Include="System.Numerics.Vectors" />
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" />
|
||||
<PackageReference Include="System.Threading.Tasks.Extensions" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -118,7 +118,6 @@ namespace BeWoDatabaseTerminator.MySql
|
||||
{
|
||||
try
|
||||
{
|
||||
return;
|
||||
_Connection.Open();
|
||||
|
||||
var command = new MySqlCommand($"DROP SCHEMA IF EXISTS `{schemaName}`;", _Connection);
|
||||
|
||||
@@ -57,6 +57,8 @@ namespace BeWoDatabaseTerminator
|
||||
|
||||
private static String PUB_KEY_E8 = "04d165f25edc4bb40c029cd2b2faeee96cab3aae38a1f4d4393233c542d4cc330c34c7212090705ce8622f1c71b342d779be460dc1db47a113a0c7df8126633bd48d1df63d823332f6f42be7f5963ab41367187b6b3e8d48d9eadeedae6d3e874c";
|
||||
|
||||
private static String PUB_KEY_E9 = "04a05cdc459f3bace602a958495d0c153a22027ce9a68d594897db5c68e9ae3064c9d15b6017a4720ae52449ade7bf3b4783f582b6cfb60777a140657e83335878a1a635d69288ef95c78c99462abd56d0737f69083dd18988c30abed6a6e22a73";
|
||||
|
||||
private static String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private static String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
@@ -65,14 +67,20 @@ namespace BeWoDatabaseTerminator
|
||||
|
||||
private static String PUB_KEY_R13 = "00a567708dd0568164151761cdb906d4ad19908c2650379816639254dbd9cc840593ecd3ec081ba0605143487d2bc748969eb42dda9dc8273b57a19fabf0d60ed40e30ca6f9bb1d1d6a49d323e584e356f4558687117fc3ed85d82a02fb2516cb01a5db859ce3565c88ba1af1037ffe39c5dc2491734ff8c2b8b8df0bc712c930c1d05c4bac7cdaac95e7cd1c901f79c03f6fc0a5df4da7be6db764270ebf44d22da00776fd6c95f17fdda752ea5570cf6ea5cb6e073a568cfa174e275827e109fc1f5a2eb01e938b10a44ccd3c289f54935820a34b31ce988c2474e820e0a36f0474f8af1290475dacde19a5cff5e9d9895ba9a43d04aa21705010430d332b38f";
|
||||
|
||||
private static String PUB_KEY_R14 = "00cd68546c992fd4c4df145ee284bca5a798da8ad5d59e0eb211eaee13bd7f7344cbabf6d9e37f0f2e23cdaf7235aa9eba1daa8e00d6d0e844e0d128ee05b5a783b54b1c6e0cd6f427c78d04c976f8327a9e8b022e71bc9f12b6ac19f4ec4bb134ba50bbb89dc6f3439e006425efa46fabfa8e60e47c9fd5687d97db48a8909078d4138c8fd7c60ab9bec4cbc2f48bbf9689b65dece60bb5c183c59c20af9eabe62498495165e9ce22868a7623cd60d8190118f60bca00d292d556573d7f7278c71febbbb9bb79861970fc6c2c39a25f223ac5870dca69f409caf2716a7a5f0924934a1cd1f7084b4d2295947d80d7beb574769c79690146a715dc792e14818895";
|
||||
|
||||
private static String PUB_KEY_YE1 = "0407655075fe68a695ada17d2babca549c8cf31968e2572f3fcd9c0736b32966f160f2854f42729fb3012422e6f4b0186263486925903f5f74f47c1a9c8320e2230847eb9dbb7fbfe65210f2cb1066da33a11c7036cdee9f71b5e226d80bdffabc";
|
||||
|
||||
private static String PUB_KEY_YE2 = "04719ab43391d6c410bdcca97b7774942db58738edac647434c7b9de533ea336cf9b920f97269345ab1e5597be796fa812ea881df8925bb121b98cc808aadff603e9ef34fef576e7d2bc5d021d8c55e5a1839ad26214ef57fb1d0d3d3ef603970f";
|
||||
|
||||
private static String PUB_KEY_YE3 = "04bb1da0af0ccf58dda60f5be887eae5132b6285518c74bf27b9c4ad4a353599520968896d9bb9dab3bc241a6ab9894cdba3895f99ad6acea68c7e378913b2209e73ac9fc3b546984acb0b9652ab65f8776bc973583c5485377dbec2bb327f6c33";
|
||||
|
||||
private static String PUB_KEY_YR1 = "00a158bc5f6c42620317bc9c4d3caa7fa05d7750c8263c0041d3b5422cd0eda179adf65b8464d252055d745724f53f3e8b0fc66ad5dda0738dd6365d40751ae3e2c1276b36ce8b3d273e9986069da1ba2e3da19b43218eb074a799022e416cd536d021fa45204130b490f5c5eb1fc77176fe0f009e39b2c18c2faf14484dc1b230b66ba70037d2f90a05d52108b9b5f3624cfa05659dd2d0e957a8b9a6b5d57de6e75601be5be9efc5e3d0e20ac1f4634d0083bd815486f5873ca798a7be5f49844414edb1bdc1c26a55f62a5e06330ba11fc3f5c1f11d0096a22e654e65f0634d79279ac67a5cf59d98c9bb1736922a1a5f6f572419e13243f9df5ad2746e6e33";
|
||||
|
||||
private static String PUB_KEY_YR2 = "00d9d0bc70069a6a87ce25baa31ead5fde78bfdf5d0ee62d042fd4b9e958a65bcaf1a9c7ac21e807e7b2502717a7b04e470703e8123a806f9b70df9b4e80b86885f8a46eb787c0728c2a9c0410096f7cf903cffde3afff0ba0ec8ca4e0d90ec5fd88ea0d9fe794fa9c9a0e4cb15cba4791abcd091901186a7f9d3c5afd38652040ada118a80d916f3ba5aa69b0e02e50972ba18851b79b948ace2a6998ab7a2b1ebb7da0cc324d04088ab6cbdde875f8bf6e5ba6444d712fc1fc6b5cf6455b5290fed8f2cfc5d7a2dd38a6e79938b5f0045f00f6ab288f4f1ad336aea537e00caf983673574daa4393c23c5e57a2f99693f5ac6898bcb9d168f94eab26513d6fb9";
|
||||
|
||||
private static String PUB_KEY_YR3 = "00c94b4f90c9fad99bc5349d7ba024a83ede7ada1e8c4a37d34eb06bc74fd36d71d813856ba3ea08b30ccaa7f554229723c9faa28aeeb8e004cfd72b7a20c7ad443db81063c2e254d9f89ec991d5415475a95bfdc2ff998b57a3796edeaa29ee4e8e97ea4e2f3be504836197e32aee5f55c5408cef5ed4a58ba634ac463518c02c68391f5e82f77510956f0a811a56e7c7d8e417b770baafdb86db291162b1bed2fc73c0f7aee95baac03bf0c514a6e2df935f1ca106d23206ab1b6c6d86cafbfd2a7b6d78ee9f6850efd235cb9a4fda682c558a99c63dd144748572b2faa891e8abfbfdee6008afc11a48cb5ccd407d7d42443c0e8883cfb0af9124e223d348a5";
|
||||
|
||||
private static bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
|
||||
{
|
||||
try
|
||||
@@ -93,14 +101,18 @@ namespace BeWoDatabaseTerminator
|
||||
pk.Contains(PUB_KEY_E6.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E7.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E8.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E9.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R10.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R11.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R12.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R13.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R14.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE2.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YE3.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR2.ToLower()))
|
||||
pk.Contains(PUB_KEY_YR2.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_YR3.ToLower()))
|
||||
{
|
||||
chainContainsPk = true;
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.2" targetFramework="net472" />
|
||||
<package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.2" targetFramework="net472" />
|
||||
<package id="MySqlConnector" version="2.4.0" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net481" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="8.0.1" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
|
||||
</packages>
|
||||
@@ -13,7 +13,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BeWoPlanerAndroid</RootNamespace>
|
||||
<AssemblyName>BeWoPlanerAndroid</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
@@ -45,17 +45,7 @@
|
||||
<Reference Include="Antlr3.Runtime">
|
||||
<HintPath>..\Lib\Antlr3.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net">
|
||||
<HintPath>..\Lib\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="MySql.Data">
|
||||
<HintPath>..\Lib\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.6.0.5\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate">
|
||||
<HintPath>..\Lib\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -158,4 +148,9 @@
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<PackageReference Include="log4net" />
|
||||
<PackageReference Include="MySql.Data" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="6.0.5" targetFramework="net40" requireReinstallation="true" />
|
||||
</packages>
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.36908.2 d17.14
|
||||
VisualStudioVersion = 17.14.36908.2
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeWoPlanerMobil", "BeWoPlanerMobil\BeWoPlanerMobil.csproj", "{284B02ED-114A-426C-9162-31BB6CF05589}"
|
||||
EndProject
|
||||
@@ -19,12 +19,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dakota", "Dakota\Dakota.csp
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Kundenprojekte", "Kundenprojekte", "{30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SynpraxReports", "ReportImp\SynpraxReports\SynpraxReports.csproj", "{FC9F4E38-977B-4877-9E05-D04068D3C807}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HausDuelken", "ReportImp\HausDuelken\HausDuelken.csproj", "{ED3DBD24-B774-41E5-A856-99FF78D828A8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeidPartnerReports", "ReportImp\FeidPartnerReports\FeidPartnerReports.csproj", "{36E7D251-2F15-4589-81C2-6BDDC67F16AE}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ServerComponents", "ServerComponents", "{72E43F42-52F2-415E-8821-BB3604DF573D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
Server\Components\README.txt = Server\Components\README.txt
|
||||
@@ -34,10 +28,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AICore", "Server\Components
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerUtils", "Server\Components\ServerUtils\ServerUtils.csproj", "{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaSMoenchengladbach", "ReportImp\PaSMoenchengladbach\PaSMoenchengladbach.csproj", "{EA3C4BE1-6128-4FC9-8194-3C4202233371}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Host", "Host\Host.csproj", "{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akgg", "ReportImp\AKGG\Akgg.csproj", "{39876291-220B-412E-8ADE-B7A24621656D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -87,36 +81,6 @@ Global
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.DebugRemote|Any CPU.ActiveCfg = DebugRemote|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.DebugRemote|Any CPU.Build.0 = DebugRemote|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -129,17 +93,26 @@ Global
|
||||
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E1154C7B-BB77-4155-9854-DAD8FC5A8BC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{39876291-220B-412E-8ADE-B7A24621656D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{FC9F4E38-977B-4877-9E05-D04068D3C807} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
|
||||
{ED3DBD24-B774-41E5-A856-99FF78D828A8} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
|
||||
{36E7D251-2F15-4589-81C2-6BDDC67F16AE} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
|
||||
{EA3C4BE1-6128-4FC9-8194-3C4202233371} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
|
||||
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9} = {72E43F42-52F2-415E-8821-BB3604DF573D}
|
||||
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57} = {72E43F42-52F2-415E-8821-BB3604DF573D}
|
||||
{39876291-220B-412E-8ADE-B7A24621656D} = {30DD24EE-2ED9-4E31-BCB5-AD995E8541BD}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {75267284-7070-4045-9FC8-0FC3C56C1AD3}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\EntityFramework.6.5.1\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.5.1\build\EntityFramework.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
@@ -25,8 +24,6 @@
|
||||
<UseGlobalApplicationHostFile />
|
||||
<TargetFrameworkProfile />
|
||||
<Use64BitIISExpress>true</Use64BitIISExpress>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TypeScriptToolsVersion>4.3</TypeScriptToolsVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
@@ -77,12 +74,6 @@
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Bogus, Version=35.6.3.0, Culture=neutral, PublicKeyToken=fa1bb3f3f218129a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Bogus.35.6.3\lib\net40\Bogus.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.CodeParser.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
@@ -179,32 +170,8 @@
|
||||
<Reference Include="DevExpress.XtraScheduler.v23.2.Reporting, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.5.1\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=3.1.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebHelpers.3.3.0\lib\net45\Microsoft.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.Infrastructure, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json.Bson, Version=1.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.Bson.1.0.3\lib\net45\Newtonsoft.Json.Bson.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Extensions.FileSystemGlobbing, Version=9.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL" />
|
||||
<Reference Include="NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\NHibernate.dll</HintPath>
|
||||
@@ -213,40 +180,14 @@
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="RestSharp, Version=106.13.0.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\RestSharp.106.13.0\lib\net452\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data.Entity" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Web" />
|
||||
@@ -254,34 +195,7 @@
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.3.0\lib\net45\System.Web.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http.WebHost, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.3.0\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.3.0\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Razor.3.3.0\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Routing" />
|
||||
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml" />
|
||||
@@ -289,15 +203,6 @@
|
||||
<Reference Include="System.Web.Services" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WebMatrix.Data, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.Data.3.3.0\lib\net45\WebMatrix.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WebMatrix.WebData, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.WebData.3.3.0\lib\net45\WebMatrix.WebData.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -400,6 +305,7 @@
|
||||
<Compile Include="Util\JsonPerson.cs" />
|
||||
<Compile Include="Util\SchedulerUtils\CustomAppointmentTemplateContainer.cs" />
|
||||
<Compile Include="Util\SchedulerUtils\EmployeeAvailabilityObject.cs" />
|
||||
<Compile Include="Util\SchedulerUtils\OwnSoftSchedulerLocalizer.cs" />
|
||||
<Compile Include="Util\ServiceRecord2Validation.cs" />
|
||||
<Compile Include="Util\SignatureUtils.cs" />
|
||||
<Compile Include="Util\SupportConceptStatisticsData.cs" />
|
||||
@@ -736,6 +642,7 @@
|
||||
<Content Include="Views\DevExpressScheduler\CustomAppointmentToolTipPartial.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\CustomAppointmentDragToolTip.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\CustomSelectionToolTip.cshtml" />
|
||||
<Content Include="Views\DevExpressScheduler\CustomRecurrencePartial.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="packages.config" />
|
||||
@@ -832,22 +739,38 @@
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.5.1\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.5.1\build\EntityFramework.props'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.5.1\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.5.1\build\EntityFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
|
||||
<Import Project="..\packages\EntityFramework.6.5.1\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.5.1\build\EntityFramework.targets')" />
|
||||
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target> -->
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Antlr" />
|
||||
<PackageReference Include="Bogus" />
|
||||
<PackageReference Include="EntityFramework" />
|
||||
<PackageReference Include="log4net" />
|
||||
<PackageReference Include="Microsoft.AspNet.Mvc" />
|
||||
<PackageReference Include="Microsoft.AspNet.Razor" />
|
||||
<PackageReference Include="Microsoft.AspNet.Web.Optimization" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Core" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.WebHost" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebHelpers" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebPages" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebPages.Data" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebPages.WebData" />
|
||||
<PackageReference Include="Microsoft.Bcl.Build" />
|
||||
<PackageReference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" />
|
||||
<PackageReference Include="Microsoft.Net.Http" />
|
||||
<PackageReference Include="Microsoft.Web.Infrastructure" />
|
||||
<PackageReference Include="Newtonsoft.Json" />
|
||||
<PackageReference Include="Newtonsoft.Json.Bson" />
|
||||
<PackageReference Include="RestSharp" />
|
||||
<PackageReference Include="System.Buffers" />
|
||||
<PackageReference Include="System.Numerics.Vectors" />
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" />
|
||||
<PackageReference Include="System.Threading.Tasks.Extensions" />
|
||||
<PackageReference Include="WebGrease" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -246,6 +246,8 @@ textarea {
|
||||
--danger: #dc3545;
|
||||
--light: #f8f9fa;
|
||||
--dark: #343a40;
|
||||
--input-group-form-control-border: #CED4DA;
|
||||
--input-group-form-control: #E9ECEF;
|
||||
--bewo-apt-confirm: #48D44E;
|
||||
--bewo-apt-maybe: #B927D9;
|
||||
--bewo-apt-decline: #AB0030;
|
||||
@@ -1939,6 +1941,46 @@ pre code {
|
||||
background-color: rgb(185.0216751269, 187.09, 189.1583248731);
|
||||
}
|
||||
|
||||
.table-input-group-form-control-border,
|
||||
.table-input-group-form-control-border > th,
|
||||
.table-input-group-form-control-border > td {
|
||||
background-color: rgb(241.28, 242.96, 244.64);
|
||||
}
|
||||
.table-input-group-form-control-border th,
|
||||
.table-input-group-form-control-border td,
|
||||
.table-input-group-form-control-border thead th,
|
||||
.table-input-group-form-control-border tbody + tbody {
|
||||
border-color: rgb(229.52, 232.64, 235.76);
|
||||
}
|
||||
|
||||
.table-hover .table-input-group-form-control-border:hover {
|
||||
background-color: rgb(226.7509302326, 230.21, 233.6690697674);
|
||||
}
|
||||
.table-hover .table-input-group-form-control-border:hover > td,
|
||||
.table-hover .table-input-group-form-control-border:hover > th {
|
||||
background-color: rgb(226.7509302326, 230.21, 233.6690697674);
|
||||
}
|
||||
|
||||
.table-input-group-form-control,
|
||||
.table-input-group-form-control > th,
|
||||
.table-input-group-form-control > td {
|
||||
background-color: rgb(248.84, 249.68, 250.52);
|
||||
}
|
||||
.table-input-group-form-control th,
|
||||
.table-input-group-form-control td,
|
||||
.table-input-group-form-control thead th,
|
||||
.table-input-group-form-control tbody + tbody {
|
||||
border-color: rgb(243.56, 245.12, 246.68);
|
||||
}
|
||||
|
||||
.table-hover .table-input-group-form-control:hover {
|
||||
background-color: rgb(234.0768421053, 236.93, 239.7831578947);
|
||||
}
|
||||
.table-hover .table-input-group-form-control:hover > td,
|
||||
.table-hover .table-input-group-form-control:hover > th {
|
||||
background-color: rgb(234.0768421053, 236.93, 239.7831578947);
|
||||
}
|
||||
|
||||
.table-bewo-apt-confirm,
|
||||
.table-bewo-apt-confirm > th,
|
||||
.table-bewo-apt-confirm > td {
|
||||
@@ -3207,6 +3249,66 @@ fieldset:disabled a.btn {
|
||||
box-shadow: 0 0 0 0.2rem rgba(82.45, 87.55, 92.65, 0.5);
|
||||
}
|
||||
|
||||
.btn-input-group-form-control-border {
|
||||
color: #212529;
|
||||
background-color: #CED4DA;
|
||||
border-color: #CED4DA;
|
||||
}
|
||||
.btn-input-group-form-control-border:hover {
|
||||
color: #212529;
|
||||
background-color: rgb(184.2063953488, 192.875, 201.5436046512);
|
||||
border-color: rgb(176.9418604651, 186.5, 196.0581395349);
|
||||
}
|
||||
.btn-input-group-form-control-border:focus, .btn-input-group-form-control-border.focus {
|
||||
color: #212529;
|
||||
background-color: rgb(184.2063953488, 192.875, 201.5436046512);
|
||||
border-color: rgb(176.9418604651, 186.5, 196.0581395349);
|
||||
box-shadow: 0 0 0 0.2rem rgba(180.05, 185.75, 191.45, 0.5);
|
||||
}
|
||||
.btn-input-group-form-control-border.disabled, .btn-input-group-form-control-border:disabled {
|
||||
color: #212529;
|
||||
background-color: #CED4DA;
|
||||
border-color: #CED4DA;
|
||||
}
|
||||
.btn-input-group-form-control-border:not(:disabled):not(.disabled):active, .btn-input-group-form-control-border:not(:disabled):not(.disabled).active, .show > .btn-input-group-form-control-border.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: rgb(176.9418604651, 186.5, 196.0581395349);
|
||||
border-color: rgb(169.6773255814, 180.125, 190.5726744186);
|
||||
}
|
||||
.btn-input-group-form-control-border:not(:disabled):not(.disabled):active:focus, .btn-input-group-form-control-border:not(:disabled):not(.disabled).active:focus, .show > .btn-input-group-form-control-border.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(180.05, 185.75, 191.45, 0.5);
|
||||
}
|
||||
|
||||
.btn-input-group-form-control {
|
||||
color: #212529;
|
||||
background-color: #E9ECEF;
|
||||
border-color: #E9ECEF;
|
||||
}
|
||||
.btn-input-group-form-control:hover {
|
||||
color: #212529;
|
||||
background-color: rgb(210.8552631579, 216.875, 222.8947368421);
|
||||
border-color: rgb(203.4736842105, 210.5, 217.5263157895);
|
||||
}
|
||||
.btn-input-group-form-control:focus, .btn-input-group-form-control.focus {
|
||||
color: #212529;
|
||||
background-color: rgb(210.8552631579, 216.875, 222.8947368421);
|
||||
border-color: rgb(203.4736842105, 210.5, 217.5263157895);
|
||||
box-shadow: 0 0 0 0.2rem rgba(203, 206.15, 209.3, 0.5);
|
||||
}
|
||||
.btn-input-group-form-control.disabled, .btn-input-group-form-control:disabled {
|
||||
color: #212529;
|
||||
background-color: #E9ECEF;
|
||||
border-color: #E9ECEF;
|
||||
}
|
||||
.btn-input-group-form-control:not(:disabled):not(.disabled):active, .btn-input-group-form-control:not(:disabled):not(.disabled).active, .show > .btn-input-group-form-control.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: rgb(203.4736842105, 210.5, 217.5263157895);
|
||||
border-color: rgb(196.0921052632, 204.125, 212.1578947368);
|
||||
}
|
||||
.btn-input-group-form-control:not(:disabled):not(.disabled):active:focus, .btn-input-group-form-control:not(:disabled):not(.disabled).active:focus, .show > .btn-input-group-form-control.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(203, 206.15, 209.3, 0.5);
|
||||
}
|
||||
|
||||
.btn-bewo-apt-confirm {
|
||||
color: #212529;
|
||||
background-color: #48D44E;
|
||||
@@ -4127,6 +4229,56 @@ fieldset:disabled a.btn {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-input-group-form-control-border {
|
||||
color: #CED4DA;
|
||||
border-color: #CED4DA;
|
||||
}
|
||||
.btn-outline-input-group-form-control-border:hover {
|
||||
color: #212529;
|
||||
background-color: #CED4DA;
|
||||
border-color: #CED4DA;
|
||||
}
|
||||
.btn-outline-input-group-form-control-border:focus, .btn-outline-input-group-form-control-border.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(206, 212, 218, 0.5);
|
||||
}
|
||||
.btn-outline-input-group-form-control-border.disabled, .btn-outline-input-group-form-control-border:disabled {
|
||||
color: #CED4DA;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-input-group-form-control-border:not(:disabled):not(.disabled):active, .btn-outline-input-group-form-control-border:not(:disabled):not(.disabled).active, .show > .btn-outline-input-group-form-control-border.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #CED4DA;
|
||||
border-color: #CED4DA;
|
||||
}
|
||||
.btn-outline-input-group-form-control-border:not(:disabled):not(.disabled):active:focus, .btn-outline-input-group-form-control-border:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-input-group-form-control-border.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(206, 212, 218, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-input-group-form-control {
|
||||
color: #E9ECEF;
|
||||
border-color: #E9ECEF;
|
||||
}
|
||||
.btn-outline-input-group-form-control:hover {
|
||||
color: #212529;
|
||||
background-color: #E9ECEF;
|
||||
border-color: #E9ECEF;
|
||||
}
|
||||
.btn-outline-input-group-form-control:focus, .btn-outline-input-group-form-control.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5);
|
||||
}
|
||||
.btn-outline-input-group-form-control.disabled, .btn-outline-input-group-form-control:disabled {
|
||||
color: #E9ECEF;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-input-group-form-control:not(:disabled):not(.disabled):active, .btn-outline-input-group-form-control:not(:disabled):not(.disabled).active, .show > .btn-outline-input-group-form-control.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #E9ECEF;
|
||||
border-color: #E9ECEF;
|
||||
}
|
||||
.btn-outline-input-group-form-control:not(:disabled):not(.disabled):active:focus, .btn-outline-input-group-form-control:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-input-group-form-control.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-bewo-apt-confirm {
|
||||
color: #48D44E;
|
||||
border-color: #48D44E;
|
||||
@@ -6598,6 +6750,32 @@ a.badge-dark:focus, a.badge-dark.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.badge-input-group-form-control-border {
|
||||
color: #212529;
|
||||
background-color: #CED4DA;
|
||||
}
|
||||
a.badge-input-group-form-control-border:hover, a.badge-input-group-form-control-border:focus {
|
||||
color: #212529;
|
||||
background-color: rgb(176.9418604651, 186.5, 196.0581395349);
|
||||
}
|
||||
a.badge-input-group-form-control-border:focus, a.badge-input-group-form-control-border.focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem rgba(206, 212, 218, 0.5);
|
||||
}
|
||||
|
||||
.badge-input-group-form-control {
|
||||
color: #212529;
|
||||
background-color: #E9ECEF;
|
||||
}
|
||||
a.badge-input-group-form-control:hover, a.badge-input-group-form-control:focus {
|
||||
color: #212529;
|
||||
background-color: rgb(203.4736842105, 210.5, 217.5263157895);
|
||||
}
|
||||
a.badge-input-group-form-control:focus, a.badge-input-group-form-control.focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5);
|
||||
}
|
||||
|
||||
.badge-bewo-apt-confirm {
|
||||
color: #212529;
|
||||
background-color: #48D44E;
|
||||
@@ -7051,6 +7229,30 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus {
|
||||
color: rgb(4.1779310345, 4.66, 5.1420689655);
|
||||
}
|
||||
|
||||
.alert-input-group-form-control-border {
|
||||
color: rgb(107.12, 110.24, 113.36);
|
||||
background-color: rgb(245.2, 246.4, 247.6);
|
||||
border-color: rgb(241.28, 242.96, 244.64);
|
||||
}
|
||||
.alert-input-group-form-control-border hr {
|
||||
border-top-color: rgb(226.7509302326, 230.21, 233.6690697674);
|
||||
}
|
||||
.alert-input-group-form-control-border .alert-link {
|
||||
color: rgb(82.3416981132, 84.74, 87.1383018868);
|
||||
}
|
||||
|
||||
.alert-input-group-form-control {
|
||||
color: rgb(121.16, 122.72, 124.28);
|
||||
background-color: rgb(250.6, 251.2, 251.8);
|
||||
border-color: rgb(248.84, 249.68, 250.52);
|
||||
}
|
||||
.alert-input-group-form-control hr {
|
||||
border-top-color: rgb(234.0768421053, 236.93, 239.7831578947);
|
||||
}
|
||||
.alert-input-group-form-control .alert-link {
|
||||
color: rgb(95.9841525424, 97.22, 98.4558474576);
|
||||
}
|
||||
|
||||
.alert-bewo-apt-confirm {
|
||||
color: rgb(37.44, 110.24, 40.56);
|
||||
background-color: rgb(218.4, 246.4, 219.6);
|
||||
@@ -7696,6 +7898,34 @@ a.badge-bewo-report:focus, a.badge-bewo-report.focus {
|
||||
border-color: rgb(27.04, 30.16, 33.28);
|
||||
}
|
||||
|
||||
.list-group-item-input-group-form-control-border {
|
||||
color: rgb(107.12, 110.24, 113.36);
|
||||
background-color: rgb(241.28, 242.96, 244.64);
|
||||
}
|
||||
.list-group-item-input-group-form-control-border.list-group-item-action:hover, .list-group-item-input-group-form-control-border.list-group-item-action:focus {
|
||||
color: rgb(107.12, 110.24, 113.36);
|
||||
background-color: rgb(226.7509302326, 230.21, 233.6690697674);
|
||||
}
|
||||
.list-group-item-input-group-form-control-border.list-group-item-action.active {
|
||||
color: #fff;
|
||||
background-color: rgb(107.12, 110.24, 113.36);
|
||||
border-color: rgb(107.12, 110.24, 113.36);
|
||||
}
|
||||
|
||||
.list-group-item-input-group-form-control {
|
||||
color: rgb(121.16, 122.72, 124.28);
|
||||
background-color: rgb(248.84, 249.68, 250.52);
|
||||
}
|
||||
.list-group-item-input-group-form-control.list-group-item-action:hover, .list-group-item-input-group-form-control.list-group-item-action:focus {
|
||||
color: rgb(121.16, 122.72, 124.28);
|
||||
background-color: rgb(234.0768421053, 236.93, 239.7831578947);
|
||||
}
|
||||
.list-group-item-input-group-form-control.list-group-item-action.active {
|
||||
color: #fff;
|
||||
background-color: rgb(121.16, 122.72, 124.28);
|
||||
border-color: rgb(121.16, 122.72, 124.28);
|
||||
}
|
||||
|
||||
.list-group-item-bewo-apt-confirm {
|
||||
color: rgb(37.44, 110.24, 40.56);
|
||||
background-color: rgb(203.76, 242.96, 205.44);
|
||||
@@ -8861,6 +9091,26 @@ button.bg-dark:focus {
|
||||
background-color: rgb(29.1379310345, 32.5, 35.8620689655) !important;
|
||||
}
|
||||
|
||||
.bg-input-group-form-control-border {
|
||||
background-color: #CED4DA !important;
|
||||
}
|
||||
|
||||
a.bg-input-group-form-control-border:hover, a.bg-input-group-form-control-border:focus,
|
||||
button.bg-input-group-form-control-border:hover,
|
||||
button.bg-input-group-form-control-border:focus {
|
||||
background-color: rgb(176.9418604651, 186.5, 196.0581395349) !important;
|
||||
}
|
||||
|
||||
.bg-input-group-form-control {
|
||||
background-color: #E9ECEF !important;
|
||||
}
|
||||
|
||||
a.bg-input-group-form-control:hover, a.bg-input-group-form-control:focus,
|
||||
button.bg-input-group-form-control:hover,
|
||||
button.bg-input-group-form-control:focus {
|
||||
background-color: rgb(203.4736842105, 210.5, 217.5263157895) !important;
|
||||
}
|
||||
|
||||
.bg-bewo-apt-confirm {
|
||||
background-color: #48D44E !important;
|
||||
}
|
||||
@@ -9181,6 +9431,14 @@ button.bg-bewo-report:focus {
|
||||
border-color: #343a40 !important;
|
||||
}
|
||||
|
||||
.border-input-group-form-control-border {
|
||||
border-color: #CED4DA !important;
|
||||
}
|
||||
|
||||
.border-input-group-form-control {
|
||||
border-color: #E9ECEF !important;
|
||||
}
|
||||
|
||||
.border-bewo-apt-confirm {
|
||||
border-color: #48D44E !important;
|
||||
}
|
||||
@@ -12316,6 +12574,22 @@ a.text-dark:hover, a.text-dark:focus {
|
||||
color: rgb(17.7068965517, 19.75, 21.7931034483) !important;
|
||||
}
|
||||
|
||||
.text-input-group-form-control-border {
|
||||
color: #CED4DA !important;
|
||||
}
|
||||
|
||||
a.text-input-group-form-control-border:hover, a.text-input-group-form-control-border:focus {
|
||||
color: rgb(162.4127906977, 173.75, 185.0872093023) !important;
|
||||
}
|
||||
|
||||
.text-input-group-form-control {
|
||||
color: #E9ECEF !important;
|
||||
}
|
||||
|
||||
a.text-input-group-form-control:hover, a.text-input-group-form-control:focus {
|
||||
color: rgb(188.7105263158, 197.75, 206.7894736842) !important;
|
||||
}
|
||||
|
||||
.text-bewo-apt-confirm {
|
||||
color: #48D44E !important;
|
||||
}
|
||||
@@ -12641,4 +12915,13 @@ a.text-bewo-report:hover, a.text-bewo-report:focus {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 20 20'%3E%3Cg %3E%3Cpolygon fill='%23FFCA00' points='20 10 10 0 0 0 20 20'/%3E%3Cpolygon fill='%23FFCA00' points='0 10 0 20 10 20'/%3E%3C/g%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
@media (max-width: 575.98px) {
|
||||
.btn-sm-auto {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.5;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=style.css.map */
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
$theme-colors: ( "bewo-apt-confirm": #48D44E, "bewo-apt-maybe": #B927D9, "bewo-apt-decline": #AB0030, "bewo-archived-sc": #343A40, "bewo-deleted-sc": #F87F7C, "bewo-person": #B5662D, "bewo-organisation": #C8C000, "bewo-custom-goal": #4682B4, "service-record-marked": #c5e3ff, "bewo-teams": #565999, "bewo-goal-rating": #0000ff, "bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-person-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B );
|
||||
$theme-colors: ( "input-group-form-control-border": #CED4DA, "input-group-form-control": #E9ECEF, "bewo-apt-confirm": #48D44E, "bewo-apt-maybe": #B927D9, "bewo-apt-decline": #AB0030, "bewo-archived-sc": #343A40, "bewo-deleted-sc": #F87F7C, "bewo-person": #B5662D, "bewo-organisation": #C8C000, "bewo-custom-goal": #4682B4, "service-record-marked": #c5e3ff, "bewo-teams": #565999, "bewo-goal-rating": #0000ff, "bewo-dev": #00cf7c, "primary": #FF5A00, "bewo-customers": #3b7799, "bewo-service-records": #c80000, "bewo-calendar": #04b4d0, "bewo-is-about-to-expire": #FF0000, "bewo-expires-in-three-months": #FF9400, "bewo-group-booking": #f9e79f, "bewo-customer-card-header": #AB4A07, "bewo-person-card-header": #AB4A07, "bewo-employee": #45993B, "bewo-resource": #04B4D0, "bewo-task-red": #993B3B, "bewo-report": #995E3B );
|
||||
|
||||
a.disabled {
|
||||
pointer-events: none;
|
||||
@@ -255,4 +255,13 @@ $font-family-sans-serif: 'Signika Negative', sans-serif;
|
||||
.bewo-dev-bg {
|
||||
background-color: #000000;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 20 20'%3E%3Cg %3E%3Cpolygon fill='%23FFCA00' points='20 10 10 0 0 0 20 20'/%3E%3Cpolygon fill='%23FFCA00' points='0 10 0 20 10 20'/%3E%3C/g%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
@media(max-width: 575.98px) {
|
||||
.btn-sm-auto {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.5;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
}
|
||||
@@ -43,13 +43,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
#if DEBUG
|
||||
Debug.WriteLine($"+++>Logout aufrufende Methode: {new StackTrace().GetFrame(1).GetMethod().Name}");
|
||||
#endif
|
||||
|
||||
MobileSessionFacade.LogUserOut();
|
||||
FormsAuthentication.SignOut();
|
||||
|
||||
AbstractModel.TimeOfLastAction = null;
|
||||
|
||||
return RedirectToActionPermanent("Index", "Login", new {tenant = MobileSessionFacade.Tenant});
|
||||
return RedirectToActionPermanent("Index", "Login", new {tenant = MobileSessionFacade.Tenant, message = ViewData[LoginController.LoginErrorIndex]?.ToString() });
|
||||
}
|
||||
|
||||
protected virtual void InitModel(AbstractModel model)
|
||||
|
||||
@@ -121,6 +121,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.PossibleCustomers = CustomerService.GetAllAuthorizedCompactCustomers();
|
||||
Model.PossibleResources = KalenderService.GetAllResources();
|
||||
|
||||
// Ressourcen
|
||||
if(Model.HasRightToInsertRessourceAppointments || Model.HasRightToViewAllResourceAppointments)
|
||||
{
|
||||
var allResources = KalenderService.GetAllResources().OrderBy(r => r.Name).ToList();
|
||||
@@ -135,6 +136,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.ResourceCategories2Resources = categories2Resources.OrderBy(category2Resources => category2Resources.Key.DisplayName).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
}
|
||||
|
||||
// Teams
|
||||
Model.MyTeamEmployees = EmployeeService.GetAllTeamMember(compactEmployee).OrderBy(employee => employee.LastName).ToList();
|
||||
|
||||
if(Model.HasRightToViewTeams)
|
||||
@@ -143,6 +145,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
Model.TeamMemberCustomerOids = EmployeeService.LoadTeamsRelatedCustomerOids(employeeOid);
|
||||
// /Teams
|
||||
|
||||
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(possibleEmployee => Model.SelectedEmployeeOidsForFiltering?.Contains(possibleEmployee.EmployeeOid) ?? false).ToList();
|
||||
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(possibleCustomer => Model.SelectedCustomerOidsForFiltering?.Contains(possibleCustomer.CustomerOid) ?? false).ToList();
|
||||
@@ -171,7 +174,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var intervalStart = DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday);
|
||||
var intervalEnd = intervalStart.AddDays(7);
|
||||
|
||||
var allAppointments = KalenderService.LoadFilteredAppointmentsMitAufgaben
|
||||
var allAppointments = KalenderService.LoadFilteredAppointmentsMitAufgabenForMoK
|
||||
(
|
||||
Model.HasRightKalenderMitarbeitertermineAnsehen,
|
||||
employeeOid,
|
||||
@@ -190,6 +193,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
var appointments = allAppointments;
|
||||
|
||||
var changedOrDeletedOccurrences = KalenderService.FindAppointmentsByRecurrenceId(appointments.Select(apt => apt.RecurrenceId).ToList(), true);
|
||||
|
||||
Model.RecurrenceIdsWithOccurrences = new List<string>();
|
||||
|
||||
foreach(var occ in changedOrDeletedOccurrences)
|
||||
{
|
||||
Model.RecurrenceIdsWithOccurrences.AddIfNotIn(occ.RecurrenceIdReference);
|
||||
}
|
||||
|
||||
foreach(var appointment in appointments)
|
||||
{
|
||||
if(false == appointment.IsPrivate || appointment.Originator.EmployeeOid.Equals(employeeOid) || appointment.EmployeeList.Any(e => e.Employee.EmployeeOid.Equals(employeeOid)))
|
||||
@@ -278,24 +290,44 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(Model.HasRightKalenderRessourcenTermineAndererAendern is false)
|
||||
{
|
||||
appointments
|
||||
.Where(appointment => appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false && appointment.ResourceList.Any())
|
||||
.Where(appointment =>
|
||||
appointment.IsTask is false &&
|
||||
appointment.IsAbsenceTime is false &&
|
||||
appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false && appointment.ResourceList.Any())
|
||||
.DoForEach(appointment => appointment.CanBeEdited = false);
|
||||
}
|
||||
|
||||
if(Model.HasRightKalenderKlientenTermineAendern is false)
|
||||
{
|
||||
appointments
|
||||
.Where(appointment => appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false && appointment.CustomerList.Any(customer => relatedCustomerOids.Contains(customer.CustomerOid) is false))
|
||||
.Where(appointment =>
|
||||
appointment.IsTask is false &&
|
||||
appointment.IsAbsenceTime is false &&
|
||||
appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false && appointment.CustomerList.Any())
|
||||
.DoForEach(appointment => appointment.CanBeEdited = false);
|
||||
}
|
||||
|
||||
if(Model.HasRightKalenderMitarbeiterTermineAendern is false)
|
||||
{
|
||||
appointments
|
||||
.Where(appointment => appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false)
|
||||
.Where(appointment =>
|
||||
appointment.IsTask is false &&
|
||||
appointment.IsAbsenceTime is false &&
|
||||
appointment.Originator.Equals(Model.LoggedInCompactEmployee) is false)
|
||||
.DoForEach(appointment => appointment.CanBeEdited = false);
|
||||
}
|
||||
|
||||
foreach(var appointment in appointments.Where(apt => apt.IsTask is false && apt.IsAbsenceTime is false && apt.Originator.Equals(Model.LoggedInCompactEmployee) is false && apt.CustomerList.Any()))
|
||||
{
|
||||
var canEdit = appointment.CanBeEdited;
|
||||
var canView = appointment.CanBeViewed;
|
||||
var canDelete = appointment.CanBeDeleted;
|
||||
|
||||
var subject = appointment.Subject;
|
||||
}
|
||||
|
||||
var x = appointments.Where(w => w.SchedulerAppointmentOid is null).ToList();
|
||||
|
||||
Model.Appointments = appointments;
|
||||
|
||||
LoadNotificationCount();
|
||||
@@ -466,17 +498,23 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
foreach(var appointment in appointmentsToInsert)
|
||||
{
|
||||
appointment.CustomerList = AppointmentModel.SelectedCustomers;
|
||||
appointment.ResourceList = AppointmentModel.SelectedResources;
|
||||
|
||||
appointment.EmployeeList = new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
foreach(var selectedEmployee in AppointmentModel.SelectedEmployees ?? new List<CompactEmployeeDC>())
|
||||
if(appointment.Type != (int) AppointmentType.DeletedOccurrence && appointment.Type != (int) AppointmentType.ChangedOccurrence)
|
||||
{
|
||||
appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee });
|
||||
}
|
||||
appointment.CustomerList = AppointmentModel.SelectedCustomers;
|
||||
appointment.ResourceList = AppointmentModel.SelectedResources;
|
||||
appointment.EmployeeList = new List<Employee2SchedulerAppointmentDC>();
|
||||
|
||||
appointment.Originator = Model.LoggedInUser.Employee;
|
||||
foreach(var selectedEmployee in AppointmentModel.SelectedEmployees ?? new List<CompactEmployeeDC>())
|
||||
{
|
||||
appointment.EmployeeList.Add(new Employee2SchedulerAppointmentDC { Employee = selectedEmployee });
|
||||
}
|
||||
|
||||
appointment.Originator = Model.LoggedInUser.Employee;
|
||||
}
|
||||
else
|
||||
{
|
||||
appointment.NewSchedulerAppointmentVersion = null;
|
||||
}
|
||||
|
||||
KalenderService.InsertSchedulerAppointment(appointment);
|
||||
ViewData["EditableAppointmentModel"] = appointment;
|
||||
@@ -509,10 +547,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
KalenderService.UpdateSchedulerAppointments(new List<SchedulerAppointmentDC> { appointment });
|
||||
}
|
||||
|
||||
KalenderService.DeleteSchedulerAppointments(
|
||||
appointmentsToRemove
|
||||
.Where(appointment => appointment.SchedulerAppointmentOid.HasValue && appointment.NewSchedulerAppointmentVersion.HasValue)
|
||||
.ToDictionary(k => k.SchedulerAppointmentOid.Value, v => v.NewSchedulerAppointmentVersion.Value));
|
||||
var oid2Version = appointmentsToRemove
|
||||
.Where(appointment => appointment.SchedulerAppointmentOid.HasValue && appointment.NewSchedulerAppointmentVersion.HasValue)
|
||||
.ToDictionary(k => k.SchedulerAppointmentOid.Value, v => v.NewSchedulerAppointmentVersion.Value);
|
||||
|
||||
KalenderService.DeleteSchedulerAppointments(oid2Version);
|
||||
|
||||
ReloadAppointments();
|
||||
}
|
||||
@@ -549,14 +588,38 @@ namespace BeWoPlanerMobil.Controllers
|
||||
case "Reload":
|
||||
ReloadAppointments();
|
||||
break;
|
||||
case "debug_DummyAppointments":
|
||||
CreateDummyAppointments();
|
||||
case "DeleteSeries":
|
||||
DeleteAppointment(((List<SchedulerAppointmentDC>) Model.Appointments).FirstOrDefault(appointment => appointment.SchedulerAppointmentOid == long.Parse(apptID)));
|
||||
break;
|
||||
case "DeleteApt":
|
||||
DeleteAppointment(((List<SchedulerAppointmentDC>) Model.Appointments).FirstOrDefault(appointment => appointment.SchedulerAppointmentOid == long.Parse(apptID)));
|
||||
break;
|
||||
case "ResetSeries":
|
||||
var oid2Versions = KalenderService.LoadOccurrencesByRecurrenceId(apptID).Where(appointment => appointment.RecurrenceIndexReference != null).ToDictionary(x => x.SchedulerAppointmentOid.Value, y => y.NewSchedulerAppointmentVersion.Value);
|
||||
|
||||
KalenderService.DeleteSchedulerAppointments(oid2Versions);
|
||||
|
||||
ReloadAppointments();
|
||||
break;
|
||||
}
|
||||
|
||||
return PartialView("SchedulerPagePartial", Model);
|
||||
}
|
||||
|
||||
private void DeleteAppointment(SchedulerAppointmentDC appointment2Delete)
|
||||
{
|
||||
if(appointment2Delete is null || appointment2Delete.SchedulerAppointmentOid is null || appointment2Delete.NewSchedulerAppointmentVersion is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var oid2Version = new Dictionary<long, long> { { appointment2Delete.SchedulerAppointmentOid.Value, appointment2Delete.NewSchedulerAppointmentVersion.Value } };
|
||||
|
||||
KalenderService.DeleteSchedulerAppointments(oid2Version);
|
||||
|
||||
ReloadAppointments();
|
||||
}
|
||||
|
||||
private void CreateDummyAppointments()
|
||||
{
|
||||
var today = DateTime.Today;
|
||||
@@ -1116,9 +1179,13 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
Model.ResourceCategories2Resources.Values.DoForEach(l => l.DoForEach(s => list.AddIfNotIn(s)));
|
||||
|
||||
Model.SelectedEmployees = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOids.Contains(employee.EmployeeOid)).ToList();
|
||||
Model.SelectedCustomers = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
|
||||
Model.SelectedResources = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
|
||||
//Model.SelectedEmployees = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOids.Contains(employee.EmployeeOid)).ToList();
|
||||
//Model.SelectedCustomers = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
|
||||
//Model.SelectedResources = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
|
||||
|
||||
AppointmentModel.SelectedEmployees = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOids.Contains(employee.EmployeeOid)).ToList();
|
||||
AppointmentModel.SelectedCustomers = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOids.Contains(customer.CustomerOid)).ToList();
|
||||
AppointmentModel.SelectedResources = list.Where(resource => resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value)).ToList();
|
||||
|
||||
Model.SelectedEmployeesForFiltering = Model.PossibleEmployees.Where(employee => Model.SelectedEmployeeOidsForFiltering.Contains(employee.EmployeeOid)).ToList();
|
||||
Model.SelectedCustomersForFiltering = Model.PossibleCustomers.Where(customer => Model.SelectedCustomerOidsForFiltering.Contains(customer.CustomerOid)).ToList();
|
||||
@@ -1580,7 +1647,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
AppointmentModel.SelectedResourceOids = selectedOids.Length == 0 ? new List<long>() : selectedOids.Split(',').Select(long.Parse).ToList();
|
||||
|
||||
|
||||
return JsonConvert.SerializeObject(AppointmentModel.SelectedResourceOids?.Count ?? 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,6 +268,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!<br/><br/>Bitte wenden Sie sich an Ihren Administrator.";
|
||||
}
|
||||
|
||||
if(absenceTime2Delete != null && !Model.CanDeleteAbsenceTime(absenceTime2Delete))
|
||||
{
|
||||
ViewData["AbsenceTimeError"] = "Sie haben nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen.";
|
||||
return PartialView("AbsenceTimePartial", Model);
|
||||
}
|
||||
|
||||
var employee = Model.SelectedEmployee;
|
||||
|
||||
employee.AbsenceTimes.Remove(absenceTime2Delete);
|
||||
|
||||
@@ -10,7 +10,6 @@ using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using DevExpress.XtraPrinting;
|
||||
using HttpCookie = System.Web.HttpCookie;
|
||||
|
||||
|
||||
@@ -147,7 +146,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
|
||||
public ActionResult Index(string tenant, string returnUrl)
|
||||
public ActionResult Index(string tenant, string returnUrl, string message = null)
|
||||
{
|
||||
if(returnUrl != null)
|
||||
{
|
||||
@@ -185,6 +184,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return Redirect(url);
|
||||
}
|
||||
|
||||
ViewData[LoginErrorIndex] = message;
|
||||
MobileSessionFacade.Tenant = tenant;
|
||||
return View("Index");
|
||||
}
|
||||
|
||||
@@ -2469,7 +2469,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
result = GetAllServiceCategory2ServiceDescriptionDict();
|
||||
}
|
||||
|
||||
return result.OrderBy(kvp => kvp.Key.Position).ToDictionary(category2Descriptions => category2Descriptions.Key, category2Descriptions => category2Descriptions.Value.OrderBy(serviceDescription => serviceDescription.Position).ToList());
|
||||
var categories2Descriptions = result.OrderBy(kvp => kvp.Key.Position).ToDictionary(category2Descriptions => category2Descriptions.Key, category2Descriptions => category2Descriptions.Value.OrderBy(serviceDescription => serviceDescription.Position).ToList());
|
||||
|
||||
//var x = categories2Descriptions.Where(x => x.Key.OhneHilfeplan.)
|
||||
|
||||
return categories2Descriptions;
|
||||
}
|
||||
|
||||
|
||||
@@ -2477,7 +2481,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
var result = new Dictionary<ServiceCategoryDC, List<ServiceDescriptionDC>>();
|
||||
|
||||
var allServiceDescriptions = OperationsService.GetAllServiceDescriptions().Where(sd => sd.Category.ActivationType == ActivationTypeId.Active && sd.ActivationType == ActivationTypeId.Active && sd.Category.OhneHilfeplan != AccountingvisibilityType.NichtKlientenbezogen).ToList();
|
||||
var allServiceDescriptions = OperationsService.GetAllServiceDescriptions()
|
||||
.Where(sd => sd.Category.ActivationType == ActivationTypeId.Active &&
|
||||
sd.ActivationType == ActivationTypeId.Active &&
|
||||
sd.Category.OhneHilfeplan != AccountingvisibilityType.Never &&
|
||||
sd.Category.OhneHilfeplan != AccountingvisibilityType.NichtKlientenbezogen)
|
||||
.ToList();
|
||||
|
||||
foreach (var serviceDescription in allServiceDescriptions)
|
||||
{
|
||||
@@ -3600,11 +3609,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[Authorize]
|
||||
public ActionResult RedirectToDevExpressScheduler()
|
||||
{
|
||||
#if DEBUG
|
||||
//#if DEBUG
|
||||
return RedirectToActionPermanent("DevExpressScheduler", "DevExpressScheduler");
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
return RedirectToMain();
|
||||
//return RedirectToMain();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.Data.Entities;
|
||||
using BeWo.Report;
|
||||
using BeWo.Service.Plugins;
|
||||
using BeWo.View.Navigation.Filter;
|
||||
using BeWoPlanerMobil.Models;
|
||||
using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Util;
|
||||
using Bogus.DataSets;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
|
||||
// Controller des Auswertungsmoduls
|
||||
namespace BeWoPlanerMobil.Controllers
|
||||
@@ -275,7 +277,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
Model.SelectedCustomReport = Model.CustomReports.FirstOrDefault(cr => cr.QueryOid == selectedQuery.Oid);
|
||||
|
||||
Model.SelectedQueryOid = selectedQuery.Oid;
|
||||
Model.SelectedQuery = selectedQuery;
|
||||
|
||||
foreach(var parameter in selectedQuery?.Parameter ?? new List<QueryParamDC>())
|
||||
@@ -561,7 +563,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(parameterOid.HasValue)
|
||||
{
|
||||
var queryParameterType = (QueryParameterType)parameterType;
|
||||
var queryParameterType = (QueryParameterType) parameterType;
|
||||
|
||||
switch(queryParameterType)
|
||||
{
|
||||
@@ -571,29 +573,39 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryCustomerOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
var selectedCustomer = Model.AllCustomersForQueries.FirstOrDefault(customer => customer.CustomerOid.Equals(objectOid.Value));
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedCustomer));
|
||||
break;
|
||||
|
||||
if(selectedCustomer is object)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedCustomer));
|
||||
Model.QueryCustomerOids.AddOrUpdate(parameterOid.Value, selectedCustomer.CustomerOid);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryEmployeeOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
var selectedEmployee = Model.AllEmployeesForQueries.FirstOrDefault(employee => employee.EmployeeOid.Equals(objectOid.Value));
|
||||
|
||||
if(selectedEmployee != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedEmployee));
|
||||
Model.QueryEmployeeOids.AddOrUpdate(parameterOid.Value, selectedEmployee.EmployeeOid);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryOrganisationOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -602,27 +614,32 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(selectedOrganisation != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedOrganisation));
|
||||
Model.QueryOrganisationOids.AddOrUpdate(parameterOid.Value, selectedOrganisation.OrganisationOid);
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
if(false == string.IsNullOrEmpty(textValue))
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, textValue));
|
||||
Model.QueryTexts.AddOrUpdate(parameterOid.Value, textValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryTexts.Remove(parameterOid.Value);
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
if(textValue != null && DateTime.TryParse(textValue, out var selectedDate))
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedDate));
|
||||
Model.QueryDateTimes.AddOrUpdate(parameterOid.Value, selectedDate);
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryDateTimes.Remove(parameterOid.Value);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -634,11 +651,13 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
var dateRange = new DateTimeSpan(start, end);
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, dateRange));
|
||||
Model.QueryDateRanges.AddOrUpdate(parameterOid.Value, dateRange);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryDateRanges.Remove(parameterOid.Value);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
@@ -654,13 +673,14 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(int.TryParse(monthAsString, out var month) && month > 0 && month < 13 && int.TryParse(yearAsString, out var year) && Model.Years.Any(listItem => listItem.Value.Equals(yearAsString)))
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, new DateTime(year, month, 1)));
|
||||
Model.QueryMonths.AddOrUpdate(parameterOid.Value, new DateTime(year, month, 1));
|
||||
}
|
||||
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryServiceCategoryOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -669,6 +689,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(selectedServiceCategory != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedServiceCategory));
|
||||
Model.QueryServiceCategoryOids.AddOrUpdate(parameterOid.Value, selectedServiceCategory.ServiceCategoryOid.Value);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.SupportConcept:
|
||||
@@ -679,18 +700,21 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QuerySupportConceptOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
if(costBearer2SupportConceptRelListObj != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, costBearer2SupportConceptRelListObj));
|
||||
Model.QuerySupportConceptOids.AddOrUpdate(parameterOid.Value, costBearer2SupportConceptRelListObj.CostBearer2SupportConceptOid);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryTeamOids.Remove(parameterOid.Value);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -699,12 +723,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(selectedTeam != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedTeam));
|
||||
Model.QueryTeamOids.AddOrUpdate(parameterOid.Value, selectedTeam.TeamOid);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
if(objectOid is null || objectOid.Value.Equals(0))
|
||||
{
|
||||
Model.SelectedValues.Remove(parameterOid.Value);
|
||||
Model.QueryValueListEntryOids.Remove(parameterOid.Value);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -713,6 +740,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
if(selectedValueListEntry != null)
|
||||
{
|
||||
Model.SelectedValues.AddOrUpdate(parameterOid.Value, new SelectedValue(queryParameterType, selectedValueListEntry));
|
||||
Model.QueryValueListEntryOids.AddOrUpdate(parameterOid.Value, selectedValueListEntry.ValueListEntryOid.Value);
|
||||
}
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
@@ -733,6 +761,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("BeWoReportPartial");
|
||||
}
|
||||
|
||||
|
||||
|
||||
var query = Model.SelectedQuery;
|
||||
|
||||
var paramList = new List<QueryParamDC>();
|
||||
@@ -745,9 +775,79 @@ namespace BeWoPlanerMobil.Controllers
|
||||
param.Name = item.Name;
|
||||
param.ParamType = item.ParamType;
|
||||
|
||||
if(item.QueryParameterOid.HasValue && Model.SelectedValues.ContainsKey(item.QueryParameterOid.Value))
|
||||
if(item.QueryParameterOid.HasValue && IsParameterOidInQueryValues(item.ParamType, item.QueryParameterOid.Value))
|
||||
{
|
||||
param.Value = Model.SelectedValues[item.QueryParameterOid.Value].Parameter;
|
||||
switch(item.ParamType)
|
||||
{
|
||||
case QueryParameterType.Custom:
|
||||
// Nicht implementiert
|
||||
break;
|
||||
case QueryParameterType.Customer:
|
||||
var customerOid = Model.QueryCustomerOids[item.QueryParameterOid.Value];
|
||||
var queryCustomer = Model.AllCustomersForQueries.FirstOrDefault(customer => customer.CustomerOid.Equals(customerOid));
|
||||
|
||||
param.Value = queryCustomer;
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
var employeeOid = Model.QueryEmployeeOids[item.QueryParameterOid.Value];
|
||||
var queryEmployee = Model.AllEmployeesForQueries.FirstOrDefault(employee => employee.EmployeeOid.Equals(employeeOid));
|
||||
|
||||
param.Value = queryEmployee;
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
var organisationOid = Model.QueryOrganisationOids[item.QueryParameterOid.Value];
|
||||
var queryOrganisation = Model.AllOrganisationForQuery.FirstOrDefault(organisation => organisation.OrganisationOid.Equals(organisationOid));
|
||||
|
||||
param.Value = queryOrganisation;
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
param.Value = Model.QueryTexts[item.QueryParameterOid.Value];
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
param.Value = Model.QueryDateTimes[item.QueryParameterOid.Value];
|
||||
break;
|
||||
case QueryParameterType.DateRange:
|
||||
param.Value = Model.QueryDateRanges[item.QueryParameterOid.Value];
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
param.Value = Model.QueryMonths[item.QueryParameterOid.Value];
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
var serviceCategoryOid = Model.QueryServiceCategoryOids[item.QueryParameterOid.Value];
|
||||
var queryServiceCategory = Model.AllServiceCategoriesForQueries.FirstOrDefault(serviceCategory => serviceCategory.ServiceCategoryOid?.Equals(serviceCategoryOid) ?? false);
|
||||
|
||||
param.Value = queryServiceCategory;
|
||||
break;
|
||||
case QueryParameterType.SupportConcept:
|
||||
var cb2ScRelOid = Model.QuerySupportConceptOids[item.QueryParameterOid.Value];
|
||||
var querySupportConcept = Model.CostBearer2SupportConceptRelListObjects.FirstOrDefault(cb2ScRel => cb2ScRel.CostBearer2SupportConceptOid.Equals(cb2ScRelOid));
|
||||
|
||||
param.Value = querySupportConcept;
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
var teamOid = Model.QueryTeamOids[item.QueryParameterOid.Value];
|
||||
var queryTeam = Model.AllTeamsForQueries.FirstOrDefault(team => team.TeamOid.Equals(teamOid));
|
||||
|
||||
param.Value = queryTeam;
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
var valueListEntryOid = Model.QueryValueListEntryOids[item.QueryParameterOid.Value];
|
||||
var queryValueListEntry = Model.AllValueListEntriesForQuery.FirstOrDefault(valueListEntry => valueListEntry.ValueListEntryOid?.Equals(valueListEntryOid) ?? false);
|
||||
|
||||
param.Value = queryValueListEntry;
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
// Nicht implementiert
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(item.QueryParameterOid.HasValue && item.ParamType == QueryParameterType.Month && false == IsParameterOidInQueryValues(item.ParamType, item.QueryParameterOid.Value))
|
||||
{
|
||||
if(item.ParamType == QueryParameterType.Month)
|
||||
{
|
||||
var defaultDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
|
||||
param.Value = defaultDate.AddMonths(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -769,6 +869,55 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return PartialView("BeWoReportPartial", Model);
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
private bool IsParameterOidInQueryValues(QueryParameterType parameterType, long parameterOid)
|
||||
{
|
||||
switch(parameterType)
|
||||
{
|
||||
case QueryParameterType.Custom:
|
||||
// Nicht implementiert
|
||||
break;
|
||||
case QueryParameterType.Customer:
|
||||
return Model.QueryCustomerOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Employee:
|
||||
return Model.QueryEmployeeOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Organisation:
|
||||
return Model.QueryOrganisationOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Text:
|
||||
return Model.QueryTexts.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Date:
|
||||
return Model.QueryDateTimes.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.DateRange:
|
||||
return Model.QueryDateRanges.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Month:
|
||||
return Model.QueryMonths.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.ServiceCategory:
|
||||
return Model.QueryServiceCategoryOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.SupportConcept:
|
||||
return Model.QuerySupportConceptOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Team:
|
||||
return Model.QueryTeamOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.ValueListEntryType:
|
||||
return Model.QueryValueListEntryOids.ContainsKey(parameterOid);
|
||||
break;
|
||||
case QueryParameterType.Year:
|
||||
// Nicht implementiert
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
|
||||
{
|
||||
|
||||
63
BeWoPlanerMobil/DXLocalization.Designer.cs
generated
Normal file
63
BeWoPlanerMobil/DXLocalization.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace BeWoPlanerMobil {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class DXLocalization {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal DXLocalization() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if(object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BeWoPlanerMobil.DXLocalization", typeof(DXLocalization).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
141
BeWoPlanerMobil/DXLocalization.de.resx
Normal file
141
BeWoPlanerMobil/DXLocalization.de.resx
Normal file
@@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ASPxSchedulerStringId.FloatingActionButton_NewAppointment" xml:space="preserve">
|
||||
<value>Neuer Termin</value>
|
||||
</data>
|
||||
<data name="ASPxSchedulerStringId.ToolTip_DeleteAppointment" xml:space="preserve">
|
||||
<value>Löschen</value>
|
||||
</data>
|
||||
<data name="ASPxSchedulerStringId.FloatingActionButton_DeleteAppointment" xml:space="preserve">
|
||||
<value>Löschen</value>
|
||||
</data>
|
||||
<data name="SchedulerStringId.AppointmentLabel_Birthday" xml:space="preserve">
|
||||
<value>Geburtstag</value>
|
||||
</data>
|
||||
<data name="SchedulerStringId.ViewShortDisplayName_Day" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
<data name="ASPxEditorsStringId.Calendar_Today" xml:space="preserve">
|
||||
<value>Heute</value>
|
||||
</data>
|
||||
<data name="SchedulerStringId.ViewShortDisplayName_WorkDays" xml:space="preserve">
|
||||
<value>Arbeitswoche</value>
|
||||
</data>
|
||||
</root>
|
||||
120
BeWoPlanerMobil/DXLocalization.resx
Normal file
120
BeWoPlanerMobil/DXLocalization.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -9,6 +9,7 @@ using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
using BeWoPlanerMobil.Util.SchedulerUtils;
|
||||
|
||||
|
||||
namespace BeWoPlanerMobil
|
||||
@@ -33,6 +34,12 @@ namespace BeWoPlanerMobil
|
||||
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
||||
|
||||
XmlConfigurator.Configure();
|
||||
|
||||
OwnSoftSchedulerLocalizer.Activate();
|
||||
|
||||
// Für den Localizer. Für Release wieder entfernen und durch die Zeile darunter ersetzen
|
||||
//DevExpress.Utils.Localization.XtraLocalizer.EnableTraceSource("BeWoPlanerMobil");
|
||||
//RELEASE: DevExpress.Utils.Localization.XtraLocalizer.UserResourceManager = DXLocalization.ResourceManager;
|
||||
}
|
||||
|
||||
protected void Application_BeginRequest(object sender, EventArgs e)
|
||||
@@ -41,6 +48,9 @@ namespace BeWoPlanerMobil
|
||||
|
||||
// ToDo: Könnte Probleme beim Login machen, falls der den Header der Login-Anfrage benutzt.
|
||||
Response.Headers["Referrer-Policy"] = "no-referrer";
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = _CultureInfo;
|
||||
Thread.CurrentThread.CurrentUICulture = _CultureInfo;
|
||||
}
|
||||
|
||||
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
|
||||
|
||||
@@ -34,6 +34,10 @@ namespace BeWoPlanerMobil.Models
|
||||
public bool HasServiceRecordEntry { get; set; }
|
||||
public long? OriginatorOid { get; set; }
|
||||
|
||||
public int? RecurrenceIndex { get; set; }
|
||||
|
||||
public long? NewSchedulerAppointmentVersion { get; set; }
|
||||
|
||||
public bool ShowEmployeeColors { get; set; }
|
||||
public List<ServiceRecordDC> ServiceRecordList { get; set; }
|
||||
|
||||
@@ -212,6 +216,8 @@ namespace BeWoPlanerMobil.Models
|
||||
TaskDescription = appointment.TaskDescription;
|
||||
|
||||
OriginatorOid = appointment.Originator.EmployeeOid;
|
||||
|
||||
NewSchedulerAppointmentVersion = appointment.NewSchedulerAppointmentVersion;
|
||||
}
|
||||
|
||||
public virtual void Assign(AppointmentModel source)
|
||||
@@ -250,6 +256,7 @@ namespace BeWoPlanerMobil.Models
|
||||
TaskDescription = source.TaskDescription;
|
||||
|
||||
OriginatorOid = source.OriginatorOid;
|
||||
NewSchedulerAppointmentVersion = source.NewSchedulerAppointmentVersion;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@ namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public bool HasRightToEdit => HasRightToEditCustomers;
|
||||
public bool HasRightToDelete => HasRightToEditCustomers;
|
||||
|
||||
public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime) => HasRightToDelete;
|
||||
public long? ObjectOid => SelectedCustomerOid;
|
||||
public TableID ObjectTid => TableID.Customer;
|
||||
public string HtmlPrefix => "customer";
|
||||
|
||||
@@ -25,6 +25,8 @@ namespace BeWoPlanerMobil.Models
|
||||
set => DevExpressSchedulerSessionModel.CurrentSchedulerViewType = value;
|
||||
}
|
||||
|
||||
public List<string> RecurrenceIdsWithOccurrences { get; set; }
|
||||
|
||||
public DevExpressSchedulerSessionModel DevExpressSchedulerSessionModel => SessionModel as DevExpressSchedulerSessionModel;
|
||||
|
||||
public List<CompactCustomerDC> PossibleCustomers { get; set; }
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace BeWoPlanerMobil.Models
|
||||
public SchedulerViewType CurrentSchedulerViewType { get; set; }
|
||||
|
||||
public List<long> SelectedEmployeeOidsForFiltering { get; set; }
|
||||
|
||||
public List<long> SelectedCustomerOidsForFiltering { get; set; }
|
||||
public List<long> SelectedResourceOidsForFiltering { get; set; }
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Web.Mvc;
|
||||
@@ -9,6 +10,22 @@ namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public bool HasRightToEdit => HasRightToEditEmployeeAbsenceTimes;
|
||||
public bool HasRightToDelete => HasRightToEditEmployeeAbsenceTimes;
|
||||
|
||||
public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime)
|
||||
{
|
||||
if (!HasRightToDelete)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (absenceTime.IsInThePast)
|
||||
{
|
||||
return CheckRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public string HtmlPrefix => "employee";
|
||||
|
||||
public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel;
|
||||
|
||||
@@ -16,5 +16,6 @@ namespace BeWoPlanerMobil.Models
|
||||
long? AbsenteeOid { get; }
|
||||
bool HasRightToEdit { get; }
|
||||
bool HasRightToDelete { get; }
|
||||
bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
using System;
|
||||
using BeWo.Report;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.Report;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
@@ -15,15 +16,10 @@ namespace BeWoPlanerMobil.Models
|
||||
public ReportViewerModel()
|
||||
{
|
||||
SessionModel = new ReportViewerSessionModel();
|
||||
SessionModel.ResetValues();
|
||||
}
|
||||
|
||||
public ReportViewerSessionModel ReportViewerSessionModel
|
||||
{
|
||||
get
|
||||
{
|
||||
return SessionModel as ReportViewerSessionModel;
|
||||
}
|
||||
}
|
||||
public ReportViewerSessionModel ReportViewerSessionModel => SessionModel as ReportViewerSessionModel;
|
||||
|
||||
public List<CompactEmployeeDC> AllEmployees { get; set; }
|
||||
public List<CompactTeamDC> AllTeams { get; set; }
|
||||
@@ -31,7 +27,12 @@ namespace BeWoPlanerMobil.Models
|
||||
public AbstractReportCreator ReportCreator { get; set; }
|
||||
|
||||
[Display(Name = "Monat")]
|
||||
public int? SelectedMonth { get { return ReportViewerSessionModel.SelectedMonth; } set { ReportViewerSessionModel.SelectedMonth = value; } }
|
||||
public int? SelectedMonth
|
||||
{
|
||||
get => ReportViewerSessionModel.SelectedMonth;
|
||||
set => ReportViewerSessionModel.SelectedMonth = value;
|
||||
}
|
||||
|
||||
public List<SelectListItem> Months
|
||||
{
|
||||
get
|
||||
@@ -51,9 +52,13 @@ namespace BeWoPlanerMobil.Models
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Display(Name = "Jahr")]
|
||||
public int? SelectedYear { get { return ReportViewerSessionModel.SelectedYear; } set { ReportViewerSessionModel.SelectedYear = value; } }
|
||||
public int? SelectedYear
|
||||
{
|
||||
get => ReportViewerSessionModel.SelectedYear;
|
||||
set => ReportViewerSessionModel.SelectedYear = value;
|
||||
}
|
||||
|
||||
public List<SelectListItem> Years
|
||||
{
|
||||
get
|
||||
@@ -75,7 +80,12 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
|
||||
[Display(Name="Bericht")]
|
||||
public ReportType SelectedReportType { get { return ReportViewerSessionModel.SelectedReportType; } set { ReportViewerSessionModel.SelectedReportType = value; } }
|
||||
public ReportType SelectedReportType
|
||||
{
|
||||
get => ReportViewerSessionModel.SelectedReportType;
|
||||
set => ReportViewerSessionModel.SelectedReportType = value;
|
||||
}
|
||||
|
||||
public List<SelectListItem> ReportTypes { get; set; }
|
||||
|
||||
|
||||
@@ -107,7 +117,12 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
|
||||
[Display(Name = "Mitarbeiter")]
|
||||
public long? SelectedEmployeeOid { get { return ReportViewerSessionModel.SelectedEmployeeOid; } set { ReportViewerSessionModel.SelectedEmployeeOid = value; } }
|
||||
public long? SelectedEmployeeOid
|
||||
{
|
||||
get => ReportViewerSessionModel.SelectedEmployeeOid;
|
||||
set => ReportViewerSessionModel.SelectedEmployeeOid = value;
|
||||
}
|
||||
|
||||
public CompactEmployeeDC SelectedEmployee { get; set; }
|
||||
public List<SelectListItem> Employees
|
||||
{
|
||||
@@ -139,7 +154,12 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
|
||||
[Display(Name = "Team")]
|
||||
public long? SelectedTeamOid { get { return ReportViewerSessionModel.SelectedTeamOid; } set { ReportViewerSessionModel.SelectedTeamOid = value; } }
|
||||
public long? SelectedTeamOid
|
||||
{
|
||||
get => ReportViewerSessionModel.SelectedTeamOid;
|
||||
set => ReportViewerSessionModel.SelectedTeamOid = value;
|
||||
}
|
||||
|
||||
public CompactTeamDC SelectedTeam { get; set; }
|
||||
public List<SelectListItem> Teams
|
||||
{
|
||||
@@ -221,6 +241,79 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public Dictionary<long, SelectedValue> SelectedValues { get; set; } = new Dictionary<long, SelectedValue>();
|
||||
|
||||
public Dictionary<long, long> QueryEmployeeOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryEmployeeOids;
|
||||
set => ReportViewerSessionModel.QueryEmployeeOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QueryCustomerOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryCustomerOids;
|
||||
set => ReportViewerSessionModel.QueryCustomerOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QueryOrganisationOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryOrganisationOids;
|
||||
set => ReportViewerSessionModel.QueryOrganisationOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, DateTime> QueryDateTimes
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryDates;
|
||||
set => ReportViewerSessionModel.QueryDates = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, DateTimeSpan> QueryDateRanges
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryDateRanges;
|
||||
set => ReportViewerSessionModel.QueryDateRanges = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, string> QueryTexts
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryTexts;
|
||||
set => ReportViewerSessionModel.QueryTexts = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, DateTime> QueryMonths
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryMonths;
|
||||
set => ReportViewerSessionModel.QueryMonths = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QueryServiceCategoryOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryServiceCategoryOids;
|
||||
set => ReportViewerSessionModel.QueryServiceCategoryOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QuerySupportConceptOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QuerySupportConceptOids;
|
||||
set => ReportViewerSessionModel.QuerySupportConceptOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QueryTeamOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryTeamOids;
|
||||
set => ReportViewerSessionModel.QueryTeamOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, long> QueryValueListEntryOids
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryValueListEntryOids;
|
||||
set => ReportViewerSessionModel.QueryValueListEntryOids = value;
|
||||
}
|
||||
|
||||
public Dictionary<long, DateTime> QueryYears
|
||||
{
|
||||
get => ReportViewerSessionModel.QueryYears;
|
||||
set => ReportViewerSessionModel.QueryYears = value;
|
||||
}
|
||||
|
||||
|
||||
public Dictionary<ValueListEntryType, List<ValueListEntryDC>> ValueListEntryTypes2ValueListEntries { get; set; } = new Dictionary<ValueListEntryType, List<ValueListEntryDC>>();
|
||||
|
||||
public List<SupportConceptCostBearerRelDC> CostBearer2SupportConceptRels { get; set; } = new List<SupportConceptCostBearerRelDC>();
|
||||
|
||||
@@ -1,22 +1,27 @@
|
||||
using System;
|
||||
using BS.Shared.Core;
|
||||
using DevExpress.Xpo.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.View.Navigation.Filter;
|
||||
using BeWoPlanerMobil.Controllers;
|
||||
using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.XtraReports.UI;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
[Serializable]
|
||||
public class ReportViewerSessionModel : BaseSessionModel
|
||||
{
|
||||
public Dictionary<long, long> QueryEmployeeOids { get; set; }
|
||||
public Dictionary<long, long> QueryCustomerOids { get; set; }
|
||||
public Dictionary<long, long> QueryOrganisationOids { get; set; }
|
||||
public Dictionary<long, DateTime> QueryDates { get; set; }
|
||||
public Dictionary<long, DateTimeSpan> QueryDateRanges { get; set; }
|
||||
public Dictionary<long, string> QueryTexts { get; set; }
|
||||
public Dictionary<long, DateTime> QueryMonths { get; set; }
|
||||
public Dictionary<long, long> QueryServiceCategoryOids { get; set; }
|
||||
public Dictionary<long, long> QuerySupportConceptOids { get; set; }
|
||||
public Dictionary<long, long> QueryTeamOids { get; set; }
|
||||
public Dictionary<long, long> QueryValueListEntryOids { get; set; }
|
||||
public Dictionary<long, DateTime> QueryYears { get; set; }
|
||||
|
||||
|
||||
public long? SelectedEmployeeOid { get; set; }
|
||||
public long? SelectedTeamOid { get; set; }
|
||||
public int? SelectedMonth { get; internal set; }
|
||||
@@ -28,6 +33,20 @@ namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
base.ResetValues();
|
||||
|
||||
QueryEmployeeOids = new Dictionary<long, long>();
|
||||
QueryCustomerOids = new Dictionary<long, long>();
|
||||
QueryOrganisationOids = new Dictionary<long, long>();
|
||||
QueryDates = new Dictionary<long, DateTime>();
|
||||
QueryDateRanges = new Dictionary<long, DateTimeSpan>();
|
||||
QueryTexts = new Dictionary<long, string>();
|
||||
QueryMonths = new Dictionary<long, DateTime>();
|
||||
QueryServiceCategoryOids = new Dictionary<long, long>();
|
||||
QuerySupportConceptOids = new Dictionary<long, long>();
|
||||
QueryTeamOids = new Dictionary<long, long>();
|
||||
QueryValueListEntryOids = new Dictionary<long, long>();
|
||||
QueryYears = new Dictionary<long, DateTime>();
|
||||
|
||||
|
||||
SelectedEmployeeOid = null;
|
||||
SelectedTeamOid = null;
|
||||
SelectedMonth = null;
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
using System.Diagnostics;
|
||||
using DevExpress.Utils.Localization.Internal;
|
||||
using DevExpress.XtraScheduler.Localization;
|
||||
|
||||
namespace BeWoPlanerMobil.Util.SchedulerUtils
|
||||
{
|
||||
public class OwnSoftSchedulerLocalizer : SchedulerLocalizer
|
||||
{
|
||||
public override string GetLocalizedString(SchedulerStringId id)
|
||||
{
|
||||
switch(id)
|
||||
{
|
||||
case SchedulerStringId.ViewShortDisplayName_Day:
|
||||
return "Tag";
|
||||
case SchedulerStringId.ViewShortDisplayName_Week:
|
||||
return "Woche";
|
||||
case SchedulerStringId.TimeScaleDisplayName_Week:
|
||||
return "Woche";
|
||||
case SchedulerStringId.ViewShortDisplayName_WorkDays:
|
||||
return "Arbeitswoche";
|
||||
case SchedulerStringId.ViewDisplayName_WorkDays:
|
||||
return "Arbeitswoche";
|
||||
case SchedulerStringId.ViewShortDisplayName_Timeline:
|
||||
return "Zeitleiste";
|
||||
case SchedulerStringId.ViewDisplayName_Timeline:
|
||||
return "Zeitleiste";
|
||||
case SchedulerStringId.ViewDisplayName_Month:
|
||||
return "Monat";
|
||||
case SchedulerStringId.ViewShortDisplayName_Month:
|
||||
return "Monat";
|
||||
case SchedulerStringId.Caption_WeekOfMonthFirst:
|
||||
return "Ersten";
|
||||
case SchedulerStringId.Caption_WeekOfMonthSecond:
|
||||
return "Zweiten";
|
||||
case SchedulerStringId.Caption_WeekOfMonthThird:
|
||||
return "Dritten";
|
||||
case SchedulerStringId.Caption_WeekOfMonthFourth:
|
||||
return "Vierten";
|
||||
case SchedulerStringId.Caption_WeekOfMonthLast:
|
||||
return "Letzten";
|
||||
}
|
||||
|
||||
return base.GetLocalizedString(id);
|
||||
}
|
||||
|
||||
public static void Activate()
|
||||
{
|
||||
var localizer = new OwnSoftSchedulerLocalizer();
|
||||
var provider = new DefaultActiveLocalizerProvider<SchedulerStringId>(localizer);
|
||||
|
||||
SetActiveLocalizerProvider(provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,7 +116,7 @@
|
||||
</div>
|
||||
<input class="form-control w-100" type="text" placeholder="Suchen..." oninput="employeeListSearchOnChange()" id="employee-search-input" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button" onclick="resetEmployeeSearch()">
|
||||
<button class="btn btn-sm btn-outline-secondary" type="button" onclick="resetEmployeeSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -137,7 +137,7 @@
|
||||
<div class="card-body">
|
||||
@foreach(var team in Model.MyTeams)
|
||||
{
|
||||
<button type="button" class="btn btn-bewo-teams w-100 my-2" onclick="selectTeamForAppointment(@team.TeamOid)">@team.Name</button>
|
||||
<button type="button" class="btn btn-sm btn-bewo-teams w-100 my-2" onclick="selectTeamForAppointment(@team.TeamOid)">@team.Name</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@using BeWoPlanerMobil.Util
|
||||
<script type="text/javascript">
|
||||
<script type="text/javascript">
|
||||
function onAppointmentDragTipDisplaying(s, e) {
|
||||
const newIntervalText = e.toolTip.ConvertIntervalToString(e.data.GetInterval());
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
Html.EnableClientValidation();
|
||||
Html.EnableUnobtrusiveJavaScript();
|
||||
|
||||
var isNew = Model.Oid is null;
|
||||
// Ist bei Serientermininstanzen ebenfalls null!
|
||||
var isNew = Model.Oid is null && Model.RecurrenceIndex == 0 && Model.RecurrenceInfo is null;
|
||||
|
||||
var cancelButtonText = "Abbrechen";
|
||||
|
||||
@@ -84,6 +85,11 @@
|
||||
var showResourceButton = (Model.HasRightKalenderRessourcentermineAnsehen && Model.Oid.HasValue) ||
|
||||
(Model.Oid.HasValue && (Model.HasRightKalenderRessourcenTermineAendern && isOriginator || isOriginator is false && Model.HasRightKalenderRessourcenTermineAndererAendern)) ||
|
||||
(Model.Oid is null && Model.HasRightKalenderRessourcenTermineAnlegen);
|
||||
|
||||
if(areButtonsVisible != Model.CanBeEdited)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
<style type="text/css">
|
||||
@@ -95,168 +101,393 @@
|
||||
|
||||
@using(Html.BeginForm())
|
||||
{
|
||||
<table id="abc-table" class="w-100">
|
||||
@* Betreff *@
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Betreff</span>
|
||||
</div>
|
||||
<input class="form-control" type="text" @disabled id="Subject" name="Subject" value="@Model.Subject" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Ort *@
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Ort</span>
|
||||
</div>
|
||||
<input class="form-control" type="text" @disabled id="Location" name="Location" value="@Model.Location" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Start *@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Start</span>
|
||||
</div>
|
||||
<input class="form-control" type="@dateInputType" @disabled id="StartDate" name="StartDate" value="@start" />
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group pl-2 mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.AllDay);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.ReadOnly = disabled.Length > 0;
|
||||
}).Bind(Model.AllDay).GetHtml()
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Ganztägig</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Ende *@
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Ende</span>
|
||||
</div>
|
||||
<input class="form-control" type="@dateInputType" @disabled id="EndDate" name="EndDate" value="@end" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@* Privat *@
|
||||
<tr>
|
||||
|
||||
<td >
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.IsPrivate);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Properties.RootStyle.CssClass = "";
|
||||
settings.ReadOnly = disabled.Length > 0;
|
||||
}).Bind(Model.IsPrivate).GetHtml()
|
||||
<div class="row" id="abc-table">
|
||||
<div class="col">
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Betreff</span>
|
||||
</div>
|
||||
<input class="form-control" type="text" @disabled id="Subject" name="Subject" value="@Model.Subject" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Ort</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Privat</span>
|
||||
<input class="form-control" type="text" @disabled id="Location" name="Location" value="@Model.Location" />
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Start</span>
|
||||
</div>
|
||||
<input class="form-control" type="@dateInputType" @disabled id="StartDate" name="StartDate" value="@start" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">Ende</span>
|
||||
</div>
|
||||
<input class="form-control" type="@dateInputType" @disabled id="EndDate" name="EndDate" value="@end" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.IsPrivate);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.Properties.RootStyle.CssClass = "";
|
||||
settings.ReadOnly = disabled.Length > 0;
|
||||
}).Bind(Model.IsPrivate).GetHtml()
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Privat</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="input-group pl-2 mb-2 justify-content-end">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@Html.DevExpress().CheckBox(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = nameof(SchedulerAppointmentDC.AllDay);
|
||||
settings.Width = Unit.Percentage(100);
|
||||
settings.ReadOnly = disabled.Length > 0;
|
||||
}).Bind(Model.AllDay).GetHtml()
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Ganztägig</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(Model.HasRightKalenderMitarbeitertermineAnsehen || Model.HasRightKalenderKliententermineAnsehen || Model.HasRightKalenderRessourcentermineAnsehen)
|
||||
{
|
||||
<tr>
|
||||
@* colspan="4" *@
|
||||
<td colspan="2">
|
||||
<table class="w-100">
|
||||
<tr>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@if(showEmployeeButton)
|
||||
{
|
||||
@Html.Partial("CustomEmployeeSelectPartial", Model)
|
||||
}
|
||||
</td>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@if(showCustomerButton)
|
||||
{
|
||||
@Html.Partial("CustomCustomerSelectPartial", Model)
|
||||
}
|
||||
</td>
|
||||
<td style="width: 33%; padding: .25em;">
|
||||
@if(showResourceButton)
|
||||
{
|
||||
@Html.Partial("CustomResourceSelectPartial", Model)
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if(Model.HasRightKalenderMitarbeitertermineAnsehen || Model.HasRightKalenderKliententermineAnsehen || Model.HasRightKalenderRessourcentermineAnsehen)
|
||||
{
|
||||
<div class="form-row justify-content-center">
|
||||
@if(showEmployeeButton)
|
||||
{
|
||||
@Html.Partial("CustomEmployeeSelectPartial", Model)
|
||||
}
|
||||
|
||||
@* Notiz *@
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="form-group">
|
||||
<label for="Description">Notiz</label>
|
||||
<textarea class="form-control" @disabled id="Description" name="Description">@Model.Description</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@if(showCustomerButton)
|
||||
{
|
||||
@Html.Partial("CustomCustomerSelectPartial", Model)
|
||||
}
|
||||
|
||||
@Html.DevExpress().AppointmentRecurrenceForm(ViewBag.AppointmentRecurrenceFormSettings).GetHtml()
|
||||
@if(showResourceButton)
|
||||
{
|
||||
@Html.Partial("CustomResourceSelectPartial", Model)
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
@if(areButtonsVisible)
|
||||
{
|
||||
<button type="button" class="btn btn-primary mr-2" id="Apply" name="Apply" onclick="OnAppointmentFormSave()">OK</button>
|
||||
}
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<label for="Description">Notiz</label>
|
||||
<textarea class="form-control" @disabled id="Description" name="Description">@Model.Description</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="recurrence-container">
|
||||
@*@{
|
||||
var recurrenceSettings = (AppointmentRecurrenceFormSettings) ViewBag.AppointmentRecurrenceFormSettings;
|
||||
|
||||
<button type="button" class="btn btn-primary mr-2" id="Cancel" name="Cancel" onclick="OnAppointmentFormCancel()">@cancelButtonText</button>
|
||||
recurrenceSettings.Enabled = areButtonsVisible;
|
||||
}
|
||||
|
||||
@if(isDeleteButtonVisible)
|
||||
{
|
||||
<button type="button" class="btn btn-danger" id="Delete" name="Delete" onclick="OnAppointmentFormDelete()">Löschen</button>
|
||||
}
|
||||
</tr>
|
||||
</table>
|
||||
@Html.DevExpress().AppointmentRecurrenceForm(recurrenceSettings).GetHtml()*@
|
||||
|
||||
<table class="w-100">
|
||||
<tr>
|
||||
<td style="width: 100%;">
|
||||
|
||||
<div class="input-group input-group-sm">
|
||||
<div class="input-group-prepend">
|
||||
<label for="recurrence-type" class="input-group-text">Wiederholung</label>
|
||||
</div>
|
||||
<select name="recurrence-type" id="recurrence-type" class="custom-select" onclick="recurrenceSelectChange()">
|
||||
<option value="1">Einmalig</option>
|
||||
<option value="2">Täglich</option>
|
||||
<option value="3">Wöchentlich</option>
|
||||
<option value="4">Monatlich</option>
|
||||
<option value="5">Jährlich</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="recurrence-form-container">
|
||||
<div class="card mt-2">
|
||||
<div class="card-header p-1 pr-2">
|
||||
Serienmuster
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div id="daily-recurrence-form">
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="daily-x-pattern-radio" name="daily-pattern">
|
||||
<span>Jeden</span>
|
||||
</div>
|
||||
</div>
|
||||
<input id="daily-x-pattern-value" class="form-control" type="number" min="0" max="9999" value="1" />
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Tag</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" id="daily-every-weekday-radio" name="daily-pattern">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Jeden Wochentag</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="weekly-recurrence-form">
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
Jede
|
||||
</span>
|
||||
</div>
|
||||
<input id="weekly-x-pattern-value" name="weekly-x-pattern-value" class="form-control" type="number" min="1" value="1" />
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">
|
||||
Woche am:
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-mo-cb" name="weekly-mo-cb" class="form-check-input">
|
||||
<label for="weekly-mo-cb" class="form-check-label">Mo</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-di-cb" name="weekly-di-cb" class="form-check-input">
|
||||
<label for="weekly-di-cb" class="form-check-label">Di</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-mi-cb" name="weekly-mi-cb" class="form-check-input">
|
||||
<label for="weekly-mi-cb" class="form-check-label">Mi</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-do-cb" name="weekly-do-cb" class="form-check-input">
|
||||
<label for="weekly-do-cb" class="form-check-label">Do</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-fr-cb" name="weekly-fr-cb" class="form-check-input">
|
||||
<label for="weekly-fr-cb" class="form-check-label">Fr</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-sa-cb" name="weekly-sa-cb" class="form-check-input">
|
||||
<label for="weekly-sa-cb" class="form-check-label">Sa</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input type="checkbox" id="weekly-so-cb" name="weekly-so-cb" class="form-check-input">
|
||||
<label for="weekly-so-cb" class="form-check-label">So</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="monthly-recurrence-form">
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="monthly-day-pattern-radio" name="monthly-pattern">
|
||||
<span>Tag</span>
|
||||
</div>
|
||||
</div>
|
||||
<input id="monthly-day-pattern-day-value" name="monthly-day-pattern-day-value" class="form-control" type="number" min="1" max="31" value="1" />
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">jeden</span>
|
||||
<input id="monthly-day-pattern-month-value" name="monthly-day-pattern-month-value" class="border border-left-0 border-right-0 border-input-group-form-control-border text-dark" type="number" min="1" max="31" value="1" />
|
||||
<span class="input-group-text">Monats</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="monthly-weekday-pattern-radio" name="monthly-pattern">
|
||||
<span>Am</span>
|
||||
</div>
|
||||
</div>
|
||||
<select id="monthly-weekday-number-value" name="monthly-weekday-number-value" class="custom-select">
|
||||
<option value="1">Ersten</option>
|
||||
<option value="2">Zweiten</option>
|
||||
<option value="3">Dritten</option>
|
||||
<option value="4">Vierten</option>
|
||||
<option value="5">Letzten</option>
|
||||
</select>
|
||||
<select id="monthly-weekday-day-of-week-value" name="monthly-weekday-day-of-week-value" class="custom-select">
|
||||
<option value="1">Montag</option>
|
||||
<option value="2">Dienstag</option>
|
||||
<option value="3">Mittwoch</option>
|
||||
<option value="4">Donnerstag</option>
|
||||
<option value="5">Freitag</option>
|
||||
<option value="6">Samstag</option>
|
||||
<option value="7">Sonntag</option>
|
||||
</select>
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text border-left-0">jeden</span>
|
||||
<input id="monthly-weekday-pattern-value" name="monthly-weekday-pattern-value" class="border border-left-0 border-right-0 border-input-group-form-control-border text-dark" type="number" min="1" max="31" value="1" />
|
||||
<span class="input-group-text">Monats</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="yearly-recurrence-form">
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="yearly-day-pattern-radio" name="yearly-pattern">
|
||||
<span>Am</span>
|
||||
</div>
|
||||
</div>
|
||||
<input id="yearly-pattern-day-of-month-value" name="yearly-pattern-day-of-month-value" class="form-control" type="number" min="1" max="31" value="1">
|
||||
<select id="yearly-pattern-month-value" name="yearly-pattern-month-value" class="custom-select">
|
||||
<option value="1">Januar</option>
|
||||
<option value="2">Februar</option>
|
||||
<option value="3">März</option>
|
||||
<option value="4">April</option>
|
||||
<option value="5">Mai</option>
|
||||
<option value="6">Juni</option>
|
||||
<option value="7">Juli</option>
|
||||
<option value="8">August</option>
|
||||
<option value="9">September</option>
|
||||
<option value="10">Oktober</option>
|
||||
<option value="11">November</option>
|
||||
<option value="12">Dezember</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="yearly-weekday-pattern-radio" name="yearly-pattern">
|
||||
<span>Am</span>
|
||||
</div>
|
||||
</div>
|
||||
<select id="yearly-weekday-number-value" name="yearly-weekday-number-value" class="custom-select">
|
||||
<option value="1">Ersten</option>
|
||||
<option value="2">Zweiten</option>
|
||||
<option value="3">Dritten</option>
|
||||
<option value="4">Vierten</option>
|
||||
<option value="5">Letzten</option>
|
||||
</select>
|
||||
<select id="yearly-weekday-day-of-week-value" name="yearly-weekday-day-of-week-value" class="custom-select">
|
||||
<option value="1">Montag</option>
|
||||
<option value="2">Dienstag</option>
|
||||
<option value="3">Mittwoch</option>
|
||||
<option value="4">Donnerstag</option>
|
||||
<option value="5">Freitag</option>
|
||||
<option value="6">Samstag</option>
|
||||
<option value="7">Sonntag</option>
|
||||
</select>
|
||||
<span class="input-group-text rounded-0 border-left-0 border-right-0">im</span>
|
||||
<select id="yearly-weekday-month-value" name="yearly-weekday-month-value" class="custom-select">
|
||||
<option value="1">Januar</option>
|
||||
<option value="2">Februar</option>
|
||||
<option value="3">März</option>
|
||||
<option value="4">April</option>
|
||||
<option value="5">Mai</option>
|
||||
<option value="6">Juni</option>
|
||||
<option value="7">Juli</option>
|
||||
<option value="8">August</option>
|
||||
<option value="9">September</option>
|
||||
<option value="10">Oktober</option>
|
||||
<option value="11">November</option>
|
||||
<option value="12">Dezember</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="recurrence-duration-container">
|
||||
<div class="card mt-2">
|
||||
<div class="card-header p-1 pl-2">
|
||||
Seriendauer
|
||||
</div>
|
||||
<div class="card-body p-1">
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="duration-no-end" name="duration-radio-group">
|
||||
<span>Ohne Ende</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="duration-end-after" name="duration-radio-group">
|
||||
<span>Endet nach:</span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="number" class="form-control" />
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">Wiederholungen</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group input-group-sm mt-1">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<input type="radio" class="mr-2" id="duration-end-by" name="duration-radio-group">
|
||||
<span>Endet am:</span>
|
||||
</div>
|
||||
</div>
|
||||
<input type="date" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<div class="float-right">
|
||||
@if(areButtonsVisible)
|
||||
{
|
||||
<button type="button" class="btn btn-sm-auto btn-primary mr-2" id="Apply" name="Apply" onclick="OnAppointmentFormSave()">OK</button>
|
||||
}
|
||||
|
||||
<button type="button" class="btn btn-sm-auto btn-primary mr-2" id="Cancel" name="Cancel" onclick="OnAppointmentFormCancel()">@cancelButtonText</button>
|
||||
|
||||
@if(isDeleteButtonVisible)
|
||||
{
|
||||
<button type="button" class="btn btn-sm-auto btn-danger" id="Delete" name="Delete" onclick="OnAppointmentFormDelete()">Löschen</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@Html.DevExpress().SchedulerStatusInfo(
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "schedulerStatusInfo";
|
||||
settings.Priority = 1;
|
||||
settings.SchedulerName = "scheduler";
|
||||
}).GetHtml()
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
settings =>
|
||||
{
|
||||
settings.Name = "schedulerStatusInfo";
|
||||
settings.Priority = 1;
|
||||
settings.SchedulerName = "scheduler";
|
||||
}).GetHtml()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<script type="text/javascript">
|
||||
function onAppointmentTipDisplaying(s, e) {
|
||||
const currentApt = getCurrentApt();
|
||||
|
||||
console.log(currentApt);
|
||||
if(currentApt.updated === false) {
|
||||
scheduler.RefreshClientAppointmentProperties(currentApt, AppointmentPropertyNames.Normal, OnAppointmentRefresh);
|
||||
setAptToolTipSubject("Lade...");
|
||||
@@ -12,9 +12,7 @@
|
||||
const participationInfos = currentApt.ParticipationInfos;
|
||||
const resourceInfos = currentApt.ResourceInfos;
|
||||
const customerInfos = currentApt.CustomerInfos;
|
||||
|
||||
logInfo(`Mitarbeiter: ${participationInfos.length}\r\nKlienten: ${customerInfos.length}\r\nRessourcen: ${resourceInfos.length}`);
|
||||
|
||||
|
||||
let bgClass = "";
|
||||
|
||||
$("#tool-tip-info").empty();
|
||||
@@ -57,7 +55,6 @@
|
||||
$("#resources-container").append(`<span class="small pr-1">Ressourcen:</span>`);
|
||||
|
||||
resourceInfos.forEach((info) => {
|
||||
logInfo2(`Farbe der Ressource <<${info.ResourceName}>>: ${info.ResourceColor}`);
|
||||
$("#resources-container").append(`<span class="badge badge-light border"><div class="mr-1" style="display:inline-block;border-radius:3px;vertical-align:middle;width:10px;height:10px;border:1px slategray;background-color: ${info.ResourceColor};"></div>${info.ResourceName}</span>`);
|
||||
});
|
||||
}
|
||||
@@ -66,7 +63,7 @@
|
||||
|
||||
const textInterval = e.toolTip.ConvertIntervalToString(currentApt.interval);
|
||||
|
||||
$('#tool-tip-title').html(textInterval);
|
||||
$('#tool-tip-title').html(`${textInterval}: ${currentApt.GetSubject()}`);
|
||||
|
||||
if(currentApt.CanBeDeleted === false) {
|
||||
$("#aptToolTipDelete").hide();
|
||||
@@ -75,10 +72,23 @@
|
||||
if(currentApt.CanBeEdited === false) {
|
||||
if(currentApt.CanBeViewed) {
|
||||
$("#aptToolTipEdit").text("Ansehen");
|
||||
$("#aptToolTipEditSeries").text("Serie Ansehen");
|
||||
} else {
|
||||
$("#aptToolTipEdit").hide();
|
||||
$("#aptToolTipEdit, #aptToolTipEditSeries").hide();
|
||||
}
|
||||
}
|
||||
|
||||
if(currentApt.HasOccurrencies === false) {
|
||||
$("#reset-series-list-item").hide();
|
||||
} else {
|
||||
$("#reset-series-list-item").show();
|
||||
}
|
||||
|
||||
if(currentApt.RecurrenceId === null || currentApt.RecurrenceId === undefined) {
|
||||
$("#aptToolTipEditSeries").hide();
|
||||
} else {
|
||||
$("#aptToolTipEditSeries").show();
|
||||
}
|
||||
}
|
||||
|
||||
function setAptToolTipSubject(text) {
|
||||
@@ -95,15 +105,58 @@
|
||||
}
|
||||
|
||||
function onAptToolTipDeleteClick() {
|
||||
scheduler.DeleteAppointment(GetCurrentApt());
|
||||
const appointment = getCurrentApt();
|
||||
|
||||
if(appointment.appointmentType === "Occurrence") {
|
||||
$("#apt-del-ok-btn").on("click",
|
||||
function() {
|
||||
const radioOptionId = $("input[name='apt-del-radio-group']:checked").attr("id");
|
||||
|
||||
if(radioOptionId === "apt-del-radio-1") {
|
||||
const patternId = appointment.appointmentId.split("_")[0];
|
||||
|
||||
scheduler.PerformCallback({apptID: patternId, actionId: "DeleteSeries", args: null}, () => { hideSpinner(); });
|
||||
} else if(radioOptionId === "apt-del-radio-2") {
|
||||
scheduler.DeleteAppointment(appointment);
|
||||
}
|
||||
|
||||
$("#apt-del-ok-btn").off("click");
|
||||
$("#recurrence-delete-popup").modal("hide");
|
||||
});
|
||||
|
||||
$("#recurrence-delete-popup").modal("show");
|
||||
} else {
|
||||
showWarningMessageBox("Löschen bestätigen", "Sind Sie sicher, dass Sie den Termin löschen möchten?", () => {
|
||||
scheduler.DeleteAppointment(appointment);
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
function onAptToolTipEditClick() {
|
||||
function onAptToolTipEditClick() {
|
||||
scheduler.ShowAppointmentFormByClientId(getCurrentApt().GetId());
|
||||
}
|
||||
|
||||
function onAptToolTipEditSeriesClick() {
|
||||
scheduler.ShowAppointmentFormByClientId(getCurrentApt().GetId().split("_")[0]);
|
||||
}
|
||||
|
||||
function onAptToolTipShowMenuClick() {
|
||||
toolTipContext.toolTip.ShowAppointmentMenu();
|
||||
}
|
||||
|
||||
function onAptToolTipTransferClick() {
|
||||
scheduler.PerformCallback({apptID: getCurrentApt().appointmentId, actionId: "ToServiceRecord" });
|
||||
}
|
||||
|
||||
function onAptToolTipResetClick() {
|
||||
const appointment = getCurrentApt();
|
||||
const recurrenceId = appointment.RecurrenceId;
|
||||
|
||||
if(recurrenceId !== undefined && recurrenceId !== null && recurrenceId.length > 0) {
|
||||
showWarningMessageBox("Zurücksetzen der Serie bestätigen", "Sind Sie sicher, dass Sie die ausgewählte Terminserie zurücksetzen möchten?", () => {
|
||||
scheduler.PerformCallback({ apptID: recurrenceId, actionId: "ResetSeries", args: null }, () => { hideSpinner(); });
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -117,4 +170,33 @@
|
||||
<div id="originator-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer m-0 p-1">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item p-1">
|
||||
<button type="button" id="aptToolTipEdit" class="btn btn-sm btn-primary w-100" onclick="onAptToolTipEditClick()">
|
||||
Bearbeiten
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item p-1">
|
||||
<button type="button" id="aptToolTipEditSeries" class="btn btn-sm btn-primary w-100" onclick="onAptToolTipEditSeriesClick()">
|
||||
Serie Bearbeiten
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item p-1">
|
||||
<button type="button" id="aptToolTipDelete" class="btn btn-sm btn-danger w-100" onclick="onAptToolTipDeleteClick()">
|
||||
Löschen
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item p-1">
|
||||
<button type="button" id="aptToolTipTransfer" class="btn btn-sm btn-primary w-100" onclick="onAptToolTipTransferClick()">
|
||||
In die Zeiterfassung übertragen
|
||||
</button>
|
||||
</li>
|
||||
<li class="list-group-item p-1" id="reset-series-list-item">
|
||||
<button type="button" id="aptToolTipReset" class="btn btn-sm btn-primary w-100" onclick="onAptToolTipResetClick()">
|
||||
Serie zurücksetzen
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -7,15 +7,15 @@
|
||||
var allChecked = areAllSelected ? "checked" : string.Empty;
|
||||
|
||||
var canEdit = Model.Oid.HasValue && Model.HasRightKalenderKlientenTermineAendern;
|
||||
var canCreate = Model.Oid is null && Model.HasRightKalenderKlientenTermineAnlegen;
|
||||
var canCreate = Model.Oid is null && Model.RecurrenceIndex == 0 && Model.RecurrenceInfo is null && Model.HasRightKalenderKlientenTermineAnlegen;
|
||||
|
||||
var checkBoxEnabled = canEdit || canCreate;
|
||||
|
||||
var disabled = checkBoxEnabled ? string.Empty : "disabled";
|
||||
}
|
||||
|
||||
<div class="dropdown w-100" id="customers-dropdown">
|
||||
<button class="btn btn-bewo-customers dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
<div class="dropdown pr-1" id="customers-dropdown">
|
||||
<button class="btn btn-sm-auto btn-bewo-customers dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Klienten <span class="badge badge-light" id="apt-cus-badge">@Model.SelectedCustomerOids.Count</span>
|
||||
</button>
|
||||
<div class="dropdown-menu" onclick="event.stopPropagation();">
|
||||
@@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<input type="text" class="form-control" @disabled id="cus-drop-search-input" placeholder="Suchen ..." oninput="onNewSearchInput('cus')">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary" @disabled onclick="resetNewSearch('cus')">
|
||||
<button type="button" class="btn btn-sm-auto btn-outline-secondary" @disabled onclick="resetNewSearch('cus')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -37,15 +37,15 @@
|
||||
|
||||
var allChecked = areAllSelected ? "checked" : string.Empty;
|
||||
|
||||
var isNew = Model.Oid is null;
|
||||
var isNew = Model.Oid is null && Model.RecurrenceIndex == 0 && Model.RecurrenceInfo is null;
|
||||
var isEdit = isNew is false;
|
||||
|
||||
|
||||
var checkBoxEnabled = isEdit && Model.HasRightKalenderMitarbeiterTermineAendern || isNew && Model.HasRightKalenderMitarbeiterTermineAnlegen;
|
||||
var disabled = checkBoxEnabled is false || (Model.CanBeEdited is false && isNew is false) ? "disabled" : string.Empty;
|
||||
}
|
||||
|
||||
<div class="dropdown w-100" id="employees-dropdown">
|
||||
<button class="btn btn-bewo-employee dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
<div class="dropdown pr-1" id="employees-dropdown">
|
||||
<button class="btn btn-sm-auto btn-bewo-employee dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Mitarbeiter <span class="badge badge-light" id="apt-emp-badge">@Model.SelectedEmployee2SchedulerAppointments.Count</span>
|
||||
</button>
|
||||
<div class="dropdown-menu" onclick="event.stopPropagation();">
|
||||
@@ -58,7 +58,7 @@
|
||||
</div>
|
||||
<input type="text" class="form-control" @disabled id="emp-drop-search-input" placeholder="Suchen ..." oninput="onNewSearchInput('emp')">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary" @disabled onclick="resetNewSearch('emp')">
|
||||
<button type="button" class="btn btn-sm-auto btn-outline-secondary" @disabled onclick="resetNewSearch('emp')">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
@Html.DevExpress().FormLayout(settings => {
|
||||
settings.Name = "appointmentRecurrenceForm";
|
||||
|
||||
settings.SettingsAdaptivity.AdaptivityMode = FormLayoutAdaptivityMode.SingleColumnWindowLimit;
|
||||
settings.SettingsAdaptivity.SwitchToSingleColumnAtWindowInnerWidth = 700;
|
||||
|
||||
// Ein Item, das den eigentlichen Recurrence-Extension-Block aufnimmt
|
||||
settings.Items.Add(item => {
|
||||
item.SetNestedContent(() => {
|
||||
// hier die AppointmentRecurrenceForm-Extension rendern
|
||||
Html.DevExpress().AppointmentRecurrenceForm(
|
||||
Model.CreateAppointmentRecurrenceFormSettings()).Render();
|
||||
});
|
||||
});
|
||||
|
||||
// ... weitere Items (z. B. OK/Abbrechen-Buttons) als eigene Zeile
|
||||
}).GetHtml()
|
||||
@@ -21,7 +21,7 @@
|
||||
var checkedValue = areAllSelected ? "checked" : string.Empty;
|
||||
|
||||
var isOriginator = Model.OriginatorOid.HasValue && Model.OriginatorOid.Value == Model.LoggedInCompactEmployee.EmployeeOid;
|
||||
var isNew = Model.Oid is null;
|
||||
var isNew = Model.Oid is null && Model.RecurrenceIndex == 0 && Model.RecurrenceInfo is null;
|
||||
var canEditResApt = Model.HasRightKalenderRessourcenTermineAendern;
|
||||
var canEditOthersResApt = Model.HasRightKalenderRessourcenTermineAndererAendern;
|
||||
var canCreateResApt = Model.HasRightKalenderRessourcenTermineAnlegen;
|
||||
@@ -33,8 +33,8 @@
|
||||
var disabled = isDisabled ? "disabled" : string.Empty;
|
||||
}
|
||||
|
||||
<div class="dropdown w-100" id="resources-dropdown">
|
||||
<button class="btn btn-bewo-resource dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
<div class="dropdown pr-1" id="resources-dropdown">
|
||||
<button class="btn btn-sm-auto btn-bewo-resource dropdown-toggle w-100" type="button" data-toggle="dropdown">
|
||||
Ressourcen <span class="badge badge-light" id="apt-res-badge">@Model.SelectedResourceOids.Count</span>
|
||||
</button>
|
||||
<div class="dropdown-menu" onclick="event.stopPropagation();">
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
<input type="text" class="form-control" id="res-drop-search-input" placeholder="Suchen ..." oninput="onNewResourceSeachInput()">
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-outline-secondary" onclick="resetNewResourceSearch()">
|
||||
<button type="button" class="btn btn-sm-auto btn-outline-secondary" onclick="resetNewResourceSearch()">
|
||||
<span class="fas fa-times-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -110,31 +110,4 @@
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@* ToDo: Mit den Kategorien wie im alten Kalendermodul bauen!
|
||||
@for(var i = 0; i < Model.PossibleResources.Count; i++)
|
||||
{
|
||||
var resource = Model.PossibleResources[i];
|
||||
var isChecked = resource.ResourceOid.HasValue && Model.SelectedResourceOids.Contains(resource.ResourceOid.Value) ? "checked" : string.Empty;
|
||||
|
||||
var dNone = i / Model.ResourcePageLimit + 1 != 1 ? " d-none" : string.Empty;
|
||||
|
||||
<div class="dropdown-item w-100 @dNone" id="dropdown-item-@i">
|
||||
<form class="form-inline justify-content-between">
|
||||
<div class="form-group form-check">
|
||||
<input class="form-check-input" type="checkbox" id="apt-edit-res-@resource.ResourceOid.Value" @isChecked onclick="updateEmployeeCustomerResourceSelection('res')"/>
|
||||
<label for="apt-edit-res-@resource.ResourceOid.Value" class="form-check-label">
|
||||
@resource.DetailDescription
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@if(WebUtils.CheckColorString(resource.Color))
|
||||
{
|
||||
<div class="float-right" style="width: 10px; height: 10px; background-color: @resource.Color; border: 1px solid @resource.Color; border-radius: 3px;"></div>
|
||||
}
|
||||
</form>
|
||||
</div>
|
||||
}*@
|
||||
</div>
|
||||
@@ -6,6 +6,15 @@
|
||||
}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(() => {
|
||||
const newAptBtn = $("#scheduler_fab").children().find(".dx-fab-context-text");
|
||||
|
||||
if(newAptBtn.length) {
|
||||
newAptBtn.empty();
|
||||
newAptBtn.append("<span>Neuer Termin</span>");
|
||||
}
|
||||
});
|
||||
|
||||
function UpdateSchedulerHeight() {
|
||||
scheduler.SetHeight(1);
|
||||
|
||||
@@ -18,22 +27,109 @@
|
||||
scheduler.SetHeight(containerHeight);
|
||||
}
|
||||
|
||||
function recurrenceSelectChange() {
|
||||
const selected = $("#recurrence-type").find(":selected").val();
|
||||
|
||||
$("#daily-recurrence-form,#weekly-recurrence-form,#monthly-recurrence-form,#yearly-recurrence-form").hide();
|
||||
|
||||
if(selected !== "1") {
|
||||
$("#recurrence-form-container").show();
|
||||
}
|
||||
|
||||
switch(selected) {
|
||||
case "1":
|
||||
$("#recurrence-form-container").hide();
|
||||
break;
|
||||
case "2":
|
||||
$("#daily-recurrence-form").show();
|
||||
break;
|
||||
case "3":
|
||||
$("#weekly-recurrence-form").show();
|
||||
break;
|
||||
case "4":
|
||||
$("#monthly-recurrence-form").show();
|
||||
break;
|
||||
case "5":
|
||||
$("#yearly-recurrence-form").show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function getLabelByTextFromRecurrenceForm(labelText) {
|
||||
return $("#appointmentRecurrenceForm_AptRecCtl_mainDiv").filter(function() {
|
||||
return $(this).text().trim() === labelText;
|
||||
});
|
||||
}
|
||||
|
||||
function resizeSchedulerEditForm() {
|
||||
const editFormPopup = $("#abc-table").parent().parent().parent();
|
||||
|
||||
const vw = $(window).width();
|
||||
|
||||
if(editFormPopup.css("top") !== undefined) {
|
||||
editFormPopup.css("top", "50px");
|
||||
|
||||
// ToDo: Neuer Serienteil
|
||||
|
||||
// ToDo: Am 30.07.2026: Mach weiter mit der Stufe 3 vom MVCxScheduler-Recurrence-Formular von gestern
|
||||
if($("#recurrence-container").length) {
|
||||
recurrenceSelectChange();
|
||||
}
|
||||
// ToDo: /Neuer Serienteil
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const recurrence = $("#appointmentRecurrenceForm_ChkRecurrence label:contains('Recurrence')");
|
||||
const daily = $("#appointmentRecurrenceForm_AptRecCtl_mainDiv label:contains('Daily')");
|
||||
const weekly = $("#appointmentRecurrenceForm_AptRecCtl_mainDiv label:contains('Weekly')");
|
||||
const monthly = $("#appointmentRecurrenceForm_AptRecCtl_mainDiv label:contains('Monthly')");
|
||||
const yearly = $("#appointmentRecurrenceForm_AptRecCtl_mainDiv label:contains('Yearly')");
|
||||
|
||||
recurrence.text("Serie");
|
||||
daily.text("Täglich");
|
||||
weekly.text("Wöchentlich");
|
||||
monthly.text("Monatlich");
|
||||
yearly.text("Jährlich");
|
||||
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Daily_mainDiv label:contains('Every weekday')").text("Jeden Wochentag");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Daily_mainDiv label:contains('Every')").text("Alle");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Daily_mainDiv span:contains('day(s)')").text("Tage");
|
||||
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Weekly_mainDiv label:contains('Recur every')").text("Alle");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Weekly_mainDiv span:contains('week(s) on:')").text("Wochen am:");
|
||||
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_mainDiv label:contains('Day')").text("Tag");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_ctl02").text("im");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_mainDiv span:contains('month(s)')").text("Monat");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_mainDiv label:contains('The')").text("Am");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_ctl04").text("jeden");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_mainDiv span:contains('month(s)')").text("Monats");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Monthly_WmeWeekOfMnth_DDD_L_LBI1T0").text("zweiten");
|
||||
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Yearly_mainDiv label:contains('Every')").text("Jeden");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Yearly_mainDiv label:contains('The')").text("Am");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_Yearly_mainDiv label:contains('of')").text("im");
|
||||
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_RangeCtl_mainDiv label:contains('No end date')").text("Ohne Enddatum");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_RangeCtl_mainDiv label:contains('End after:')").text("Endet nach:");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_RangeCtl_mainDiv span:contains('occurrences')").text("Wiederholungen");
|
||||
$("#appointmentRecurrenceForm_AptRecCtl_RangeCtl_mainDiv label:contains('End by:')").text("Endet am:");
|
||||
}
|
||||
|
||||
if(editFormPopup.outerWidth() !== undefined) {
|
||||
$.get("@Url.Action("GetEmployeePageCount")", function(editFormInfo) {
|
||||
pageCountCallback(editFormInfo, "emp");
|
||||
pageCountCallback(editFormInfo, "emp");
|
||||
});
|
||||
|
||||
$.get("@Url.Action("GetCustomerPageCount")", function(editFormInfo) {
|
||||
pageCountCallback(editFormInfo, "cus");
|
||||
pageCountCallback(editFormInfo, "cus");
|
||||
});
|
||||
|
||||
$.get("@Url.Action("GetResourcePageCount")", function(editFormInfo) {
|
||||
pageCountCallback(editFormInfo, "res");
|
||||
pageCountCallback(editFormInfo, "res");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -66,11 +162,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
function pageCountCallback(editFormInfo, prefix) {
|
||||
function pageCountCallback(editFormInfo, prefix) {
|
||||
const info = JSON.parse(editFormInfo);
|
||||
const items = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
|
||||
const items = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
|
||||
|
||||
switch(prefix) {
|
||||
switch(prefix) {
|
||||
case "emp":
|
||||
aptEmpSelPageCount = info.PageCount;
|
||||
aptEmpSelPageLimit = info.PageLimit;
|
||||
@@ -88,7 +184,7 @@
|
||||
break;
|
||||
}
|
||||
|
||||
window.buildPagination(1, 5, 1, prefix);
|
||||
window.buildPagination(1, 5, 1, prefix);
|
||||
}
|
||||
|
||||
function OnAppointmentFormSave(s, e) {
|
||||
@@ -97,13 +193,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
function OnAppointmentFormCancel(s, e) {
|
||||
scheduler.AppointmentFormCancel();
|
||||
}
|
||||
function OnAppointmentFormCancel(s, e) {
|
||||
scheduler.AppointmentFormCancel();
|
||||
}
|
||||
|
||||
function OnAppointmentFormDelete(s, e) {
|
||||
scheduler.AppointmentFormDelete();
|
||||
}
|
||||
function OnAppointmentFormDelete(s, e) {
|
||||
scheduler.AppointmentFormDelete();
|
||||
}
|
||||
|
||||
function IsValidAppointment() {
|
||||
$.validator.unobtrusive.parse("form");
|
||||
@@ -125,6 +221,52 @@
|
||||
|
||||
function onMenuItemClicked(s, e) {
|
||||
try {
|
||||
if(e.itemName === "ResetRecurringApt") {
|
||||
e.handled = true;
|
||||
|
||||
const oid = scheduler.GetSelectedAppointmentIds()[0];
|
||||
const appointment = scheduler.GetAppointmentById(oid);
|
||||
|
||||
const recurrenceId = appointment.RecurrenceId;
|
||||
|
||||
if(recurrenceId !== undefined && recurrenceId !== null && recurrenceId.length > 0) {
|
||||
showWarningMessageBox("Zurücksetzen der Serie bestätigen", "Sind Sie sicher, dass Sie die ausgewählte Terminserie zurücksetzen möchten?", () => {
|
||||
scheduler.PerformCallback({ apptID: recurrenceId, actionId: "ResetSeries", args: null }, () => { hideSpinner(); });
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(e.itemName === "DeleteApt") {
|
||||
e.handled = true;
|
||||
|
||||
const oid = scheduler.GetSelectedAppointmentIds()[0];
|
||||
const appointment = scheduler.GetAppointmentById(oid);
|
||||
|
||||
if(appointment.appointmentType === "Occurrence") {
|
||||
$("#apt-del-ok-btn").on("click",
|
||||
function() {
|
||||
const radioOptionId = $("input[name='apt-del-radio-group']:checked").attr("id");
|
||||
|
||||
if(radioOptionId === "apt-del-radio-1") {
|
||||
const patternId = appointment.appointmentId.split("_")[0];
|
||||
|
||||
scheduler.PerformCallback({apptID: patternId, actionId: "DeleteSeries", args: null}, () => { hideSpinner(); });
|
||||
} else if(radioOptionId === "apt-del-radio-2") {
|
||||
scheduler.DeleteAppointment(appointment);
|
||||
}
|
||||
|
||||
$("#apt-del-ok-btn").off("click");
|
||||
$("#recurrence-delete-popup").modal("hide");
|
||||
});
|
||||
|
||||
$("#recurrence-delete-popup").modal("show");
|
||||
} else {
|
||||
showWarningMessageBox("Löschen bestätigen", "Sind Sie sicher, dass Sie den Termin löschen möchten?", () => {
|
||||
scheduler.PerformCallback({apptID: oid, actionID: e.itemName});
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(e.itemName === "ToServiceRecord") {
|
||||
e.handled = true;
|
||||
scheduler.PerformCallback({ apptID: scheduler.GetSelectedAppointmentIds()[0], actionId: e.itemName });
|
||||
@@ -152,11 +294,16 @@
|
||||
function OnAppointmentMenuPopup(s, e) {
|
||||
const id = scheduler.GetSelectedAppointmentIds()[0];
|
||||
const selectedAppointment = scheduler.GetAppointmentById(id);
|
||||
|
||||
|
||||
for(let i = 0; i < e.item.items.length; i++) {
|
||||
const currentItem = e.item.items[i];
|
||||
|
||||
switch(currentItem.name) {
|
||||
case "ResetRecurringApt":
|
||||
if(selectedAppointment.IsAbsenceTime || selectedAppointment.IsTask || selectedAppointment.HasOccurrencies === false) {
|
||||
currentItem.SetVisible(false);
|
||||
}
|
||||
break;
|
||||
case "ToServiceRecord":
|
||||
if(id === undefined || selectedAppointment.IsAbsenceTime || selectedAppointment.IsTask) {
|
||||
currentItem.SetVisible(false);
|
||||
@@ -249,25 +396,25 @@
|
||||
}
|
||||
|
||||
function performReload(shouldDoReloadNotifications) {
|
||||
if(shouldDoReloadNotifications === false) {
|
||||
return;
|
||||
}
|
||||
if(shouldDoReloadNotifications === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
$("#scheduler-notification-container").load("@Url.Action("GetNotifications")");
|
||||
}
|
||||
|
||||
function reloadScheduler(shouldDoReloadNotifications) {
|
||||
scheduler.PerformCallback({apptID: "", actionId: "Reload", args: null}, () => {performReload(shouldDoReloadNotifications); hideSpinner(); });
|
||||
scheduler.PerformCallback({apptID: "", actionId: "Reload", args: null}, () => {performReload(shouldDoReloadNotifications); hideSpinner(); });
|
||||
}
|
||||
|
||||
@* CustomECRSelectionPartial *@
|
||||
function onNewSearchInput(prefix) {
|
||||
var searchText = $(`#${prefix}-drop-search-input`).val();
|
||||
var searchText = $(`#${prefix}-drop-search-input`).val();
|
||||
|
||||
const menuItems = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
|
||||
const menuItems = $(`#dropdown-${prefix}-itm-container .dropdown-item`);
|
||||
|
||||
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||
menuItems.show();
|
||||
menuItems.show();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -285,7 +432,7 @@
|
||||
}
|
||||
|
||||
function resetNewSearch(prefix) {
|
||||
$(`#${prefix}-drop-search-input`).val("");
|
||||
$(`#${prefix}-drop-search-input`).val("");
|
||||
|
||||
buildPagination(1, 5, 1, prefix);
|
||||
showPage(1, prefix);
|
||||
@@ -314,7 +461,7 @@
|
||||
var aptResSelPageLimit = 0;
|
||||
|
||||
function buildPagination(firstShownButton, lastShownButton, activeButton, prefix) {
|
||||
const pagination = $(`#apt-${prefix}-pagination`);
|
||||
const pagination = $(`#apt-${prefix}-pagination`);
|
||||
pagination.empty();
|
||||
|
||||
var pageCount = 1;
|
||||
@@ -335,38 +482,34 @@
|
||||
break;
|
||||
}
|
||||
|
||||
if(prefix === "res") {
|
||||
logInfo2(`Es gibt ${pageCount} Seiten für die Ressourcen`);
|
||||
}
|
||||
|
||||
if(pageCount <= 1) {
|
||||
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).hide();
|
||||
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).hide();
|
||||
return;
|
||||
}
|
||||
|
||||
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).show();
|
||||
$(`#apt-${prefix}-pag-divider, #apt-${prefix}-pag-dropdow-item`).show();
|
||||
|
||||
var limit = lastShownButton;
|
||||
|
||||
if(pageCount < limit) {
|
||||
limit = pageCount;
|
||||
if(pageCount < limit) {
|
||||
limit = pageCount;
|
||||
}
|
||||
|
||||
const firstPageLiClass = firstShownButton === 1 ? "page-item disabled" : "page-igem";
|
||||
const lastPageLiClass = lastShownButton === pageCount ? "page-item disabled" : "page-igem";
|
||||
const lastPageLiClass = lastShownButton === pageCount ? "page-item disabled" : "page-igem";
|
||||
|
||||
const prevPageLiClass = activeButton === 1 ? "page-item disabled" : "page-item";
|
||||
const nextPageLiClass = activeButton === pageCount ? "page-item disabled" : "page-igem";
|
||||
const nextPageLiClass = activeButton === pageCount ? "page-item disabled" : "page-igem";
|
||||
|
||||
$(`<li class="${firstPageLiClass}" id="first-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${1}, '${prefix}')"><span class="fas fa-angle-double-left"></span></button></li>`).appendTo(pagination);
|
||||
$(`<li class="${prevPageLiClass}" id="prev-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage - 1}, '${prefix}')"><span class="fas fa-angle-left"></span></button></li>`).appendTo(pagination);
|
||||
$(`<li class="${prevPageLiClass}" id="prev-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage - 1}, '${prefix}')"><span class="fas fa-angle-left"></span></button></li>`).appendTo(pagination);
|
||||
|
||||
for(let i = firstShownButton; i <= limit; i++) {
|
||||
$(`<li class="page-item ${(i === activeButton ? "active" : "")}"><button class="page-link" tabindex="-1" type="button" onclick="showPage(${i}, '${prefix}')">${i}</button></li>`).appendTo(pagination);
|
||||
$(`<li class="page-item ${(i === activeButton ? "active" : "")}"><button class="page-link" tabindex="-1" type="button" onclick="showPage(${i}, '${prefix}')">${i}</button></li>`).appendTo(pagination);
|
||||
}
|
||||
|
||||
$(`<li class="${nextPageLiClass}" id="next-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage + 1}, '${prefix}')"><span class="fas fa-angle-right"></span></button></li>`).appendTo(pagination);
|
||||
$(`<li class="${lastPageLiClass}" id="last-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${pageCount}, '${prefix}')"><span class="fas fa-angle-double-right"></span></button></li>`).appendTo(pagination);
|
||||
$(`<li class="${nextPageLiClass}" id="next-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${currentPage + 1}, '${prefix}')"><span class="fas fa-angle-right"></span></button></li>`).appendTo(pagination);
|
||||
$(`<li class="${lastPageLiClass}" id="last-page-li"><button type="button" class="page-link" tabeindex="-1" onclick="showPage(${pageCount}, '${prefix}')"><span class="fas fa-angle-double-right"></span></button></li>`).appendTo(pagination);
|
||||
}
|
||||
|
||||
function showPage(page, prefix) {
|
||||
@@ -388,8 +531,8 @@
|
||||
break;
|
||||
}
|
||||
|
||||
const total = (items.length / 10) | 0;
|
||||
const currentPage = Math.max(1, Math.min(page, total));
|
||||
const total = (items.length / 10) | 0;
|
||||
const currentPage = Math.max(1, Math.min(page, total));
|
||||
|
||||
switch(prefix) {
|
||||
case "emp":
|
||||
@@ -403,28 +546,28 @@
|
||||
break;
|
||||
}
|
||||
|
||||
const start = (currentPage - 1) * 10;
|
||||
const end = currentPage * 10;
|
||||
const start = (currentPage - 1) * 10;
|
||||
const end = currentPage * 10;
|
||||
|
||||
items.hide();
|
||||
items.hide();
|
||||
|
||||
$.each(items.slice(start, end), function(index, item) {
|
||||
$.each(items.slice(start, end), function(index, item) {
|
||||
$(item).removeClass("d-none");
|
||||
$(item).show();
|
||||
});
|
||||
|
||||
const last = Math.min(pageCount, currentPage + 2);
|
||||
const last = Math.min(pageCount, currentPage + 2);
|
||||
const first = Math.max(1, last - 4);
|
||||
|
||||
buildPagination(first, last, currentPage, prefix);
|
||||
buildPagination(first, last, currentPage, prefix);
|
||||
}
|
||||
|
||||
function updateEmployeeCustomerResourceSelection(prefix) {
|
||||
const checkedBoxes = $(`#dropdown-${prefix}-itm-container input[type=checkbox]:checked`);
|
||||
const checkedBoxes = $(`#dropdown-${prefix}-itm-container input[type=checkbox]:checked`);
|
||||
|
||||
var url = "";
|
||||
var url = "";
|
||||
|
||||
switch(prefix) {
|
||||
switch(prefix) {
|
||||
case "emp":
|
||||
url = "@Url.Action("UpdateAppointmentEmployeeSelection")";
|
||||
break;
|
||||
@@ -434,7 +577,7 @@
|
||||
case "res":
|
||||
url = "@Url.Action("UpdateAppointmentResourceSelection")";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var selectedOids = [];
|
||||
|
||||
@@ -449,7 +592,7 @@
|
||||
showSpinner();
|
||||
$.get(
|
||||
url,
|
||||
{ selectedOids: selectedOids.join(", ") },
|
||||
{ selectedOids: selectedOids.join(", ") },
|
||||
function(elementCount) {
|
||||
$(`#apt-${prefix}-badge`).text(elementCount);
|
||||
|
||||
@@ -459,28 +602,28 @@
|
||||
|
||||
|
||||
function selectAllEmployeeCustomerResource(prefix) {
|
||||
const isChecked = $(`#apt-${prefix}-select-all`).prop("checked");
|
||||
const isChecked = $(`#apt-${prefix}-select-all`).prop("checked");
|
||||
|
||||
$(`#dropdown-${prefix}-itm-container input[type=checkbox]`).prop("checked", isChecked);
|
||||
$(`#dropdown-${prefix}-itm-container input[type=checkbox]`).prop("checked", isChecked);
|
||||
|
||||
updateEmployeeCustomerResourceSelection(prefix);
|
||||
}
|
||||
|
||||
function categoryCardHeaderClick(collapsibleId) {
|
||||
const collapsible = $(`#${collapsibleId}`);
|
||||
function categoryCardHeaderClick(collapsibleId) {
|
||||
const collapsible = $(`#${collapsibleId}`);
|
||||
|
||||
if(collapsible.length === false) {
|
||||
return;
|
||||
if(collapsible.length === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
collapsible.collapse("toggle");
|
||||
collapsible.collapse("toggle");
|
||||
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
function onNewResourceSeachInput() {
|
||||
@@ -490,7 +633,7 @@
|
||||
const collapse = $(`#dropdown-res-itm-container .dropdown-item .collapse`);
|
||||
|
||||
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||
showAllResources();
|
||||
showAllResources();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -498,7 +641,7 @@
|
||||
|
||||
$.each(category2Resources,
|
||||
function(index, item) {
|
||||
const categoryName = $(item).find("h6").text().toLowerCase();
|
||||
const categoryName = $(item).find("h6").text().toLowerCase();
|
||||
|
||||
if(categoryName.includes(searchText)) {
|
||||
$(item).show();
|
||||
@@ -521,20 +664,20 @@
|
||||
);
|
||||
}
|
||||
|
||||
function resetNewResourceSearch() {
|
||||
$(`#res-drop-search-input`).val("");
|
||||
function resetNewResourceSearch() {
|
||||
$(`#res-drop-search-input`).val("");
|
||||
|
||||
showAllResources();
|
||||
showAllResources();
|
||||
|
||||
buildPagination(1, 5, 1, "res");
|
||||
showPage(1, "res");
|
||||
buildPagination(1, 5, 1, "res");
|
||||
showPage(1, "res");
|
||||
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
function showAllResources() {
|
||||
@@ -551,7 +694,7 @@
|
||||
});
|
||||
});
|
||||
|
||||
collapse.collapse("show");
|
||||
collapse.collapse("show");
|
||||
}
|
||||
@* /CustomECRSelectionPartial *@
|
||||
|
||||
@@ -562,9 +705,9 @@
|
||||
|
||||
|
||||
@* ToolTip *@
|
||||
var toolTipContext;
|
||||
function onToolTipDisplaying(s, e) {
|
||||
toolTipContext = e;
|
||||
var toolTipContext;
|
||||
function onToolTipDisplaying(s, e) {
|
||||
toolTipContext = e;
|
||||
|
||||
switch(e.toolTip.type) {
|
||||
case MVCxSchedulerToolTipType.Appointment:
|
||||
@@ -573,7 +716,7 @@
|
||||
onAppointmentDragTipDisplaying(s, e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="dropdown">
|
||||
@@ -589,12 +732,13 @@
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-center align-items-center">
|
||||
@*@if(Html.IsInDebugMode())
|
||||
@*@if(Html.IsInDebugMode())
|
||||
{
|
||||
<button type="button" class="btn btn-bewo-dev m-1" onclick='scheduler.PerformCallback({ apptID: "", actionId: "debug_DummyAppointments", args: null }, () => { performReload(true);hideSpinner(); });'>
|
||||
Testtermine
|
||||
</button>
|
||||
}*@
|
||||
<h4 id="scheduler-log"></h4>
|
||||
<button class="btn btn-sm btn-primary dropdown-toggle m-1" type="button" data-toggle="dropdown">
|
||||
Filtern
|
||||
</button>
|
||||
@@ -722,4 +866,32 @@
|
||||
|
||||
@Html.Partial("AptFltCustomersPartial", Model)
|
||||
|
||||
@Html.Partial("AptFltResourcesPartial", Model)
|
||||
@Html.Partial("AptFltResourcesPartial", Model)
|
||||
|
||||
<div class="modal" tabindex="-1" role="dialog" id="recurrence-delete-popup">
|
||||
<div class="modal-dialog modal-sm" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header py-1 px-2">
|
||||
Löschen bestätigen
|
||||
<button type="button" class="close" data-dismiss="modal">
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body p-2">
|
||||
Möchten Sie die ganze Serie oder nur diesen Termin löschen?
|
||||
<div class="form-check">
|
||||
<input type="radio" class="form-check-input" name="apt-del-radio-group" id="apt-del-radio-1">
|
||||
<label for="apt-del-radio-1" class="form-check-label">Die Serie</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input type="radio" class="form-check-input" name="apt-del-radio-group" id="apt-del-radio-2" checked>
|
||||
<label for="apt-del-radio-2" class="form-check-label">Diesen Termin</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer py-1 px-2">
|
||||
<button type="button" class="btn btn-primary" id="apt-del-ok-btn">OK</button>
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal">Abbrechen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,6 +58,8 @@ namespace BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CanBeViewed", "CanBeViewed"));
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("CanBeDeleted", "CanBeDeleted"));
|
||||
|
||||
appointmentStorage.CustomFieldMappings.Add(new ASPxAppointmentCustomFieldMapping("NewSchedulerAppointmentVersion", "NewSchedulerAppointmentVersion"));
|
||||
|
||||
return appointmentStorage;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using System.Diagnostics
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Util.SchedulerUtils
|
||||
@using BeWoPlanerMobil.Views.DevExpressScheduler
|
||||
@using BS.Shared.DataContracts
|
||||
@@ -10,7 +11,7 @@
|
||||
|
||||
@functions
|
||||
{
|
||||
//ToDo: So das EditForm verändern!
|
||||
//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)
|
||||
@@ -45,13 +46,15 @@
|
||||
"StatusSubMenu",
|
||||
"LabelSubMenu",
|
||||
"NewAllDayEvent",
|
||||
"NewRecurringEvent"
|
||||
"NewRecurringEvent",
|
||||
"DeleteAppointment"
|
||||
};
|
||||
|
||||
if(menuId == SchedulerMenuItemId.AppointmentMenu)
|
||||
{
|
||||
e.Menu.Items.Add(new MenuItem("Löschen", "DeleteApt"));
|
||||
e.Menu.Items.Add(new MenuItem("In die Zeiterfassung übertragen", "ToServiceRecord"));
|
||||
|
||||
e.Menu.Items.Add(new MenuItem("Serie zurücksetzen", "ResetRecurringApt"));
|
||||
e.Menu.Items.Add(new MenuItem("Zusagen", "ConfirmApt"));
|
||||
e.Menu.Items.Add(new MenuItem("Mit Vorbehalt zusagen", "MaybeApt"));
|
||||
e.Menu.Items.Add(new MenuItem("Absagen", "CancelApt"));
|
||||
@@ -193,16 +196,10 @@
|
||||
settings.CustomActionRouteValues = new { Controller = "DevExpressScheduler", Action = "CustomCallBackAction" };
|
||||
|
||||
settings.ClientSideEvents.ToolTipDisplaying = "onToolTipDisplaying";
|
||||
settings.OptionsToolTips.SetAppointmentToolTipTemplateContent(() =>
|
||||
{
|
||||
Html.RenderPartial("CustomAppointmentToolTipPartial");
|
||||
});
|
||||
settings.OptionsToolTips.SetAppointmentToolTipTemplateContent(() => { Html.RenderPartial("CustomAppointmentToolTipPartial"); });
|
||||
settings.OptionsToolTips.SetAppointmentMobileToolTipTemplateContent(() => { Html.RenderPartial("CustomAppointmentToolTipPartial"); });
|
||||
settings.OptionsToolTips.SetAppointmentDragToolTipTemplateContent(() =>
|
||||
{
|
||||
Html.RenderPartial("CustomAppointmentDragToolTip");
|
||||
});
|
||||
|
||||
settings.OptionsToolTips.SetAppointmentDragToolTipTemplateContent(() => { Html.RenderPartial("CustomAppointmentDragToolTip"); });
|
||||
|
||||
settings.OptionsCustomization.AllowInplaceEditor = UsedAppointmentType.None;
|
||||
settings.OptionsCustomization.AllowDisplayAppointmentFlyout = false;
|
||||
|
||||
@@ -211,7 +208,7 @@
|
||||
settings.OptionsToolTips.ShowSelectionToolTip = false;
|
||||
settings.ClientSideEvents.ActiveViewChanging = "onActiveViewChanged";
|
||||
settings.ClientSideEvents.MenuItemClicked = "onMenuItemClicked";
|
||||
|
||||
settings.OptionsForms.RecurrenceFormName = "appointmentRecurrenceForm";
|
||||
settings.OptionsCustomization.AllowAppointmentEdit = UsedAppointmentType.Custom;
|
||||
settings.OptionsCustomization.AllowAppointmentCopy = UsedAppointmentType.Custom;
|
||||
settings.OptionsCustomization.AllowAppointmentCreate = UsedAppointmentType.Custom;
|
||||
@@ -227,6 +224,13 @@
|
||||
|
||||
settings.InitClientAppointment = (send, evargs) =>
|
||||
{
|
||||
var recurrenceId = evargs.Appointment.RecurrenceInfo?.Id?.ToString();
|
||||
var index = evargs.Appointment.RecurrenceIndex;
|
||||
|
||||
evargs.Properties.Add("RecurrenceId", recurrenceId);
|
||||
|
||||
evargs.Properties.Add("HasOccurrencies", recurrenceId is string ? Model.RecurrenceIdsWithOccurrences.Contains(recurrenceId) : false);
|
||||
|
||||
var isTask = evargs.Appointment.CustomFields["IsTask"] is true;
|
||||
var isAbsenceTime = evargs.Appointment.CustomFields["IsAbsenceTime"] is true;
|
||||
var canBeEdited = evargs.Appointment.CustomFields["CanBeEdited"] is true;
|
||||
@@ -259,40 +263,40 @@
|
||||
|
||||
foreach(var employee2Appointment in employeeList)
|
||||
{
|
||||
if(employee2Appointment.SchedulerAppointmentOid is null || employee2Appointment.Employee2SchedulerAppointmentOid is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if(employee2Appointment.SchedulerAppointmentOid is null || employee2Appointment.Employee2SchedulerAppointmentOid is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var parcitipationInfoObject =
|
||||
new ParticipationInfoObject(
|
||||
employee2Appointment.Employee.DetailDescription,
|
||||
employee2Appointment.Employee2SchedulerAppointmentOid.Value,
|
||||
(int) employee2Appointment.ParticipationAnswer,
|
||||
employee2Appointment.SchedulerAppointmentOid.Value);
|
||||
var parcitipationInfoObject =
|
||||
new ParticipationInfoObject(
|
||||
employee2Appointment.Employee.DetailDescription,
|
||||
employee2Appointment.Employee2SchedulerAppointmentOid.Value,
|
||||
(int) employee2Appointment.ParticipationAnswer,
|
||||
employee2Appointment.SchedulerAppointmentOid.Value);
|
||||
|
||||
participationInfos.Add(parcitipationInfoObject);
|
||||
participationInfos.Add(parcitipationInfoObject);
|
||||
}
|
||||
|
||||
foreach(var resource in resourceList)
|
||||
{
|
||||
var resourceInfoObject =
|
||||
new ResourceInfoObject(
|
||||
oid,
|
||||
resource.Name,
|
||||
resource.Color
|
||||
);
|
||||
var resourceInfoObject =
|
||||
new ResourceInfoObject(
|
||||
oid,
|
||||
resource.Name,
|
||||
resource.Color
|
||||
);
|
||||
|
||||
resourceInfos.Add(resourceInfoObject);
|
||||
}
|
||||
|
||||
foreach(var customer in customerList)
|
||||
{
|
||||
var customerInfoObject =
|
||||
new CustomerInfoObject(
|
||||
oid,
|
||||
customer.DetailDescription
|
||||
);
|
||||
var customerInfoObject =
|
||||
new CustomerInfoObject(
|
||||
oid,
|
||||
customer.DetailDescription
|
||||
);
|
||||
|
||||
customerInfos.Add(customerInfoObject);
|
||||
}
|
||||
@@ -301,6 +305,7 @@
|
||||
evargs.Properties.Add("ResourceInfos", resourceInfos);
|
||||
evargs.Properties.Add("CustomerInfos", customerInfos);
|
||||
|
||||
|
||||
// originator ist bei einer Aufgabe null
|
||||
var canConfirm = (false == isTask || false == isAbsenceTime) && end > DateTime.Now &&
|
||||
false == (originator?.EmployeeOid.Equals(Model.LoggedInUserOid) ?? false) &&
|
||||
@@ -314,6 +319,7 @@
|
||||
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);
|
||||
|
||||
@@ -321,8 +327,6 @@
|
||||
|
||||
settings.Start = BS.Shared.Extensions.DateTimeExtensions.GetDayOfWeek(DayOfWeek.Monday);
|
||||
|
||||
settings.OptionsForms.RecurrenceFormName = "appointmentRecurrenceForm";
|
||||
|
||||
settings.ClientSideEvents.EndCallback = "resizeSchedulerEditForm";
|
||||
settings.ClientSideEvents.Init = "resizeSchedulerEditForm";
|
||||
|
||||
@@ -354,6 +358,11 @@
|
||||
settings.Views.TimelineView.SetHorizontalSameDayAppointmentTemplateContent(appointmentTemplateContainer => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", appointmentTemplateContainer.AppointmentViewInfo); });
|
||||
settings.Views.TimelineView.SetHorizontalAppointmentTemplateContent(appointmentTemplateContainer => { Html.RenderPartial("HorizontalAppointmentTemplatePartial", appointmentTemplateContainer.AppointmentViewInfo.Appointment); });
|
||||
|
||||
settings.OptionsForms.SetRecurrentAppointmentEditFormTemplateContent(c =>
|
||||
{
|
||||
Html.RenderPartial("CustomRecurrencePartial");
|
||||
});
|
||||
|
||||
settings.OptionsForms.SetAppointmentFormTemplateContent(appointmentFormTemplateContainer =>
|
||||
{
|
||||
var container = (CustomAppointmentTemplateContainer) appointmentFormTemplateContainer;
|
||||
@@ -374,7 +383,7 @@
|
||||
EndTime = container.Appointment.End,
|
||||
AllDay = container.Appointment.AllDay,
|
||||
Description = container.Appointment.Description,
|
||||
EventType = (int?)container.Appointment.Type,
|
||||
EventType = (int?) container.Appointment.Type,
|
||||
CompletedNotice = container.Appointment.CustomFields["CompletedNotice"]?.ToString(),
|
||||
CompletedUser = container.Appointment.CustomFields["CompletedUser"]?.ToString(),
|
||||
TaskDescription = container.Appointment.CustomFields["TaskDescription"]?.ToString(),
|
||||
@@ -384,7 +393,10 @@
|
||||
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,
|
||||
OriginatorOid = (container.Appointment.CustomFields["Originator"] as CompactEmployeeDC)?.EmployeeOid
|
||||
OriginatorOid = (container.Appointment.CustomFields["Originator"] as CompactEmployeeDC)?.EmployeeOid,
|
||||
RecurrenceInfo = container.Appointment.RecurrenceInfo?.ToXml(),
|
||||
RecurrenceIndex = container.Appointment.RecurrenceIndex,
|
||||
NewSchedulerAppointmentVersion = container.Appointment.CustomFields["NewSchedulerAppointmentVersion"] as long?
|
||||
};
|
||||
|
||||
var appointmentModel = ViewData["EditableAppointmentModel"] != null ? (AppointmentModel)ViewData["EditableAppointmentModel"] : newModel;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<div class="modal-dialog col-sm-8">
|
||||
<div class="modal-content border-0">
|
||||
@if(ViewData[LoginController.LoginErrorIndex] != null || ViewData[AbstractBaseController.IsSessionTimedOut] != null)
|
||||
@if(ViewData[LoginController.LoginErrorIndex] != null || TempData[LoginController.LoginErrorIndex] != null || ViewData[AbstractBaseController.IsSessionTimedOut] != null)
|
||||
{
|
||||
<div class="alert alert-danger mx-3" role="alert">
|
||||
@ViewData[LoginController.LoginErrorIndex]
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
var $target;
|
||||
var targetIndex;
|
||||
|
||||
// Prüfen ob die Tab-Ansicht sichtbar ist (mehrere Dokutypes vorhanden)
|
||||
// Prüfen, ob die Tab-Ansicht sichtbar ist (mehrere Dokutypes vorhanden)
|
||||
var $activeTabTextarea = $('#dokufelderTab .tab-pane.active textarea');
|
||||
if ($activeTabTextarea.length > 0) {
|
||||
// Das aktive Tab-Textarea verwenden; Index aus der ID auslesen (sb-doku-textarea-{i})
|
||||
|
||||
@@ -5,150 +5,237 @@
|
||||
@model BeWoPlanerMobil.Models.ReportViewerModel
|
||||
|
||||
@{
|
||||
if(TempData[TempDataConstants.DoLogoutKey] is bool doLogout && doLogout)
|
||||
if(TempData[TempDataConstants.DoLogoutKey] is true)
|
||||
{
|
||||
<text>
|
||||
<script type="text/javascript">
|
||||
$("#second-logout-form").submit();
|
||||
$("#second-logout-form").submit();
|
||||
</script>
|
||||
</text>
|
||||
}
|
||||
}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
window.calcPrependWidth();
|
||||
});
|
||||
$(document).ready(function() {
|
||||
window.calcPrependWidth();
|
||||
});
|
||||
|
||||
function selectCostBearer2SupportConceptRel(relOid, parameterType, parameterOid) {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: relOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
function selectCostBearer2SupportConceptRel(relOid, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
function selectMonth(parameterType, parameterOid) {
|
||||
const selectedMonth = $("#month-select").find(":selected").val().toString();
|
||||
const selectedYear = $("#month-year-select").find(":selected").val().toString();
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: relOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${selectedMonth}_${selectedYear}`});
|
||||
}
|
||||
function selectMonth(parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
function selectYear(parameterType, parameterOid) {
|
||||
const selectedYear = $("#month-year-select").find(":selected").val();
|
||||
const selectedMonth = $("#month-select").find(":selected").val().toString();
|
||||
const selectedYear = $("#month-year-select").find(":selected").val().toString();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedYear.toString()});
|
||||
}
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${selectedMonth}_${selectedYear}` },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function onDropdownParameterInput(element) {
|
||||
var searchText = $(element).val();
|
||||
function selectYear(parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
const id = $(element).attr("id");
|
||||
const selectedYear = $("#month-year-select").find(":selected").val();
|
||||
|
||||
let prefix = "";
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: selectedYear.toString() },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
if (id !== undefined && id !== null && id.includes("-")) {
|
||||
const splitId = id.split("-");
|
||||
function onDropdownParameterInput(element) {
|
||||
var searchText = $(element).val();
|
||||
|
||||
if(splitId.length > 1) {
|
||||
prefix = splitId[1];
|
||||
}
|
||||
}
|
||||
const id = $(element).attr("id");
|
||||
|
||||
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
return;
|
||||
}
|
||||
let prefix = "";
|
||||
|
||||
const menuItems = $(`#query-${prefix}-dropdown-menu .dropdown-item`);
|
||||
if (id !== undefined && id !== null && id.includes("-")) {
|
||||
const splitId = id.split("-");
|
||||
|
||||
menuItems.hide();
|
||||
if(splitId.length > 1) {
|
||||
prefix = splitId[1];
|
||||
}
|
||||
}
|
||||
|
||||
$.each(menuItems,
|
||||
function(index, item) {
|
||||
const itemText = $(item).text().toLowerCase();
|
||||
if(searchText === null || searchText === undefined || searchText.length === 0) {
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if(itemText.includes(searchText.toLowerCase())) {
|
||||
$(item).show();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
const menuItems = $(`#query-${prefix}-dropdown-menu .dropdown-item`);
|
||||
|
||||
function resetDropdownParameterSearch(prefix) {
|
||||
$(`#query-${prefix}-search-input`).val("");
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
menuItems.hide();
|
||||
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
$.each(menuItems,
|
||||
function(index, item) {
|
||||
const itemText = $(item).text().toLowerCase();
|
||||
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
if(itemText.includes(searchText.toLowerCase())) {
|
||||
$(item).show();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function selectEmployeeParameter(element, employeeOid, parameterType, parameterOid) {
|
||||
$("#query-employee-popup").modal("hide");
|
||||
function resetDropdownParameterSearch(prefix) {
|
||||
$(`#query-${prefix}-search-input`).val("");
|
||||
$(`#query-${prefix}-dropdown-menu .dropdown-item`).show();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: employeeOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
const e = window.event;
|
||||
e.cancelBubble = true;
|
||||
|
||||
function selectCustomerParameter(element, customerOid, parameterType, parameterOid) {
|
||||
$("#query-customer-popup").modal("hide");
|
||||
if(e.stopPropagation) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: customerOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
function selectEmployeeParameter(element, employeeOid, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
function selectOrganizationParameter(element, organizationOid, parameterType, parameterOid) {
|
||||
$("#query-organization-popup").modal("hide");
|
||||
$("#query-employee-popup").modal("hide");
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: organizationOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: employeeOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function selectServiceCategoryParameter(element, parameterType, parameterOid) {
|
||||
const serviceCategoryOid = $(element).find(":selected").val();
|
||||
function selectCustomerParameter(element, customerOid, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: serviceCategoryOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
$("#query-customer-popup").modal("hide");
|
||||
|
||||
function selectTeamParameter(element, teamOid, parameterType, parameterOid) {
|
||||
$("#query-team-popup").modal("hide");
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: customerOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: teamOid, parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
function selectOrganizationParameter(element, organizationOid, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
function selectValueListEntry(element, parameterType, parameterOid) {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: $(element).find(":selected").val(), parameterType: parameterType, parameterOid: parameterOid});
|
||||
}
|
||||
$("#query-organization-popup").modal("hide");
|
||||
|
||||
function selectQueryText(element, parameterType, parameterOid) {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: $(element).val()});
|
||||
}
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: organizationOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function selectQueryDate(element, parameterType, parameterOid) {
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: $(element).val().toString()});
|
||||
}
|
||||
function selectServiceCategoryParameter(element, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
function selectQueryDateRange(parameterType, parameterOid) {
|
||||
const start = $("#query-date-range-start").val().toString();
|
||||
const end = $("#query-date-range-end").val().toString();
|
||||
const serviceCategoryOid = $(element).find(":selected").val();
|
||||
|
||||
if(!start || !end) {
|
||||
return;
|
||||
}
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: serviceCategoryOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
$("#berichte-form-container").load("@Url.Action("SelectQueryParameter")", {objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${start}_${end}`});
|
||||
}
|
||||
function selectTeamParameter(element, teamOid, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
$("#query-team-popup").modal("hide");
|
||||
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: teamOid, parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function selectValueListEntry(element, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: $(element).find(":selected").val(), parameterType: parameterType, parameterOid: parameterOid },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function selectQueryText(element, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: $(element).val() },
|
||||
function() {
|
||||
hideSpinner();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function selectQueryDate(element, parameterType, parameterOid) {
|
||||
showSpinner();
|
||||
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: $(element).val().toString() },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function selectQueryDateRange(parameterType, parameterOid) {
|
||||
const start = $("#query-date-range-start").val().toString();
|
||||
const end = $("#query-date-range-end").val().toString();
|
||||
|
||||
if(!start || !end) {
|
||||
return;
|
||||
}
|
||||
|
||||
showSpinner();
|
||||
|
||||
$("#berichte-form-container").load(
|
||||
"@Url.Action("SelectQueryParameter")",
|
||||
{ objectOid: null, parameterType: parameterType, parameterOid: parameterOid, textValue: `${start}_${end}` },
|
||||
function() {
|
||||
hideSpinner();
|
||||
});
|
||||
}
|
||||
|
||||
function executeQueryButtonClick() {
|
||||
showSpinner();
|
||||
$("#msk-report-container").load("@Url.Action("ExecuteQuery")",
|
||||
function () {
|
||||
hideSpinner();
|
||||
$("#bewo-report-popup").modal("show");
|
||||
}
|
||||
);
|
||||
}
|
||||
showSpinner();
|
||||
|
||||
$("#msk-report-container").load(
|
||||
"@Url.Action("ExecuteQuery")",
|
||||
function () {
|
||||
hideSpinner();
|
||||
$("#bewo-report-popup").modal("show");
|
||||
}
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
@if(Model.SelectedQuery != null && Model.SelectedQuery.Parameter != null && Model.SelectedQuery.Parameter.Count > 0)
|
||||
@if(Model?.SelectedQuery != null && Model?.SelectedQuery.Parameter != null && Model?.SelectedQuery.Parameter.Count > 0)
|
||||
{
|
||||
<div>
|
||||
<hr />
|
||||
@@ -283,9 +370,9 @@
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(Model.SelectedValues.ContainsKey(parameterOid))
|
||||
if(Model.QueryMonths.ContainsKey(parameterOid))
|
||||
{
|
||||
if(Model.SelectedValues[parameterOid].Parameter is DateTime monthDate && month.Value.Equals(monthDate.Month.ToString()))
|
||||
if(Model.QueryMonths[parameterOid].Month.ToString().Equals(month.Value))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
@@ -295,7 +382,7 @@
|
||||
var lastMonth = DateTime.Today.AddMonths(-1);
|
||||
var selectedMonth = lastMonth.Month.ToString();
|
||||
|
||||
if(selectedMonth.Equals(month.Text))
|
||||
if(selectedMonth.Equals(month.Value))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
@@ -309,9 +396,9 @@
|
||||
{
|
||||
var selected = string.Empty;
|
||||
|
||||
if(Model.SelectedValues.ContainsKey(parameterOid) && Model.SelectedValues[parameterOid].Parameter is DateTime selectedYear)
|
||||
if(Model.QueryYears.ContainsKey(parameterOid))
|
||||
{
|
||||
if(year.Equals(selectedYear.Year))
|
||||
if(year.Equals(Model.QueryYears[parameterOid].Year))
|
||||
{
|
||||
selected = "selected";
|
||||
}
|
||||
@@ -456,11 +543,13 @@
|
||||
<div class="col-md">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Jahr
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text prepend-input-group-text">
|
||||
Jahr
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="year-parameter-type" value="@parameterType" />
|
||||
<input type="hidden" id="year-parameter-oid" value="@parameterOid" />
|
||||
<select class="custom-select" id="year-select" onchange="selectYear(@parameterType, @parameterOid)">
|
||||
@foreach(var year in MobileUtils.Years)
|
||||
{
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
const selectedReportOid = oid2HasParams[0];
|
||||
|
||||
if(hasParameters) {
|
||||
showSpinner();
|
||||
$("#berichte-form-container").load("@Url.Action("LoadBerichteForm")", {reportOid: selectedReportOid}, function() {
|
||||
hideSpinner();
|
||||
window.toggleMitarbeiterstundenForm();
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
oidString: selectedEmployeeOids.toString()
|
||||
},
|
||||
() => {
|
||||
$("#one-day-scheduler-partial-container").load('@Url.Action("FetchAppointments", "Scheduler")');
|
||||
@*$("#one-day-scheduler-partial-container").load('@Url.Action("FetchAppointments", "Scheduler")');*@
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@if(Model.HasRightToEdit || Model.HasRightToDelete)
|
||||
@if(Model.HasRightToEdit || Model.CanDeleteAbsenceTime(absenceTime))
|
||||
{
|
||||
<div class="col-sm-auto">
|
||||
<div class="btn-toolbar justify-content-between">
|
||||
@@ -97,8 +97,8 @@
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if(Model.HasRightToDelete)
|
||||
|
||||
@if(Model.CanDeleteAbsenceTime(absenceTime))
|
||||
{
|
||||
<div class="btn-group" role="group">
|
||||
<button class="btn btn-danger" type="button" onclick="deleteAbsenceTime(@absenceTime.AbsenceTimeOid, '@absenceTime.Start.Value.GetIntervalDescription(absenceTime.End)')">
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
}
|
||||
|
||||
$(document).on("shown.bs.modal", "#bewo-report-popup", function() {
|
||||
if(bewoReportViewer === undefined || bewoReportViewer === null || $("#bewoReportViewer").length === false) {
|
||||
if(typeof bewoReportViewer === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,6 +81,10 @@
|
||||
<link type="text/css" rel="stylesheet" href="@Url.Content("~/Content/dx.common.css")" />
|
||||
<link type="text/css" rel="stylesheet" href="@Url.Content("~/Content/dx.light.css")" />
|
||||
|
||||
<script>
|
||||
DevExpress.localization.locale("de");
|
||||
</script>
|
||||
|
||||
@* CSS für den neuen Kalender-Tooltip *@
|
||||
<style type="text/css">
|
||||
.toolTipPanel {
|
||||
@@ -406,16 +410,6 @@
|
||||
<ul class="navbar-nav ml-auto">
|
||||
@if (Html.IsInDebugMode())
|
||||
{
|
||||
using (Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
|
||||
{
|
||||
<li class="nav-item">
|
||||
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
|
||||
<i class="far fa-calendar-alt text-bewo-calendar"></i>
|
||||
DX Kalender
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
|
||||
<li class="nav-item">
|
||||
<button class="btn btn-link text-light no-underline" type="button" onclick="printLocalStorage()">
|
||||
<i class="fab fa-firefox-browser text-bewo-dev"></i>
|
||||
@@ -433,6 +427,19 @@
|
||||
</li>
|
||||
}
|
||||
}
|
||||
|
||||
@if(Model.IsAllowedToSeeScheduler)
|
||||
{
|
||||
using (Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
|
||||
{
|
||||
<li class="nav-item">
|
||||
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
|
||||
<i class="far fa-calendar-alt text-bewo-calendar"></i>
|
||||
DX Kalender
|
||||
</button>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
|
||||
@if (Model.IsAllowedToSeePersons)
|
||||
{
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Antlr" version="3.5.0.2" targetFramework="net472" />
|
||||
<package id="Bogus" version="35.6.3" targetFramework="net472" />
|
||||
<package id="cldrjs" version="0.5.1" targetFramework="net472" />
|
||||
<package id="DevExtreme.AspNet.Data" version="2.8.2" targetFramework="net472" />
|
||||
<package id="EntityFramework" version="6.5.1" targetFramework="net472" />
|
||||
<package id="jQuery" version="3.7.1" targetFramework="net472" />
|
||||
<package id="jQuery.UI.Combined" version="1.14.1" targetFramework="net472" />
|
||||
<package id="jQuery.Validation" version="1.21.0" targetFramework="net472" />
|
||||
<package id="log4net" version="3.1.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Providers.Core" version="2.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Razor" version="3.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi" version="5.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.Core" version="5.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebHelpers" version="3.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebPages" version="3.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebPages.Data" version="3.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.AspNet.WebPages.WebData" version="3.3.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="net472" />
|
||||
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net472" />
|
||||
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="4.1.0" targetFramework="net472" />
|
||||
<package id="Microsoft.jQuery.Unobtrusive.Ajax" version="3.2.6" targetFramework="net472" />
|
||||
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="4.0.0" targetFramework="net472" />
|
||||
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net472" />
|
||||
<package id="Microsoft.NETCore.Portable.Compatibility" version="1.0.1" targetFramework="net472" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="2.0.0" targetFramework="net472" />
|
||||
<package id="Moment.js" version="2.30.1" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net472" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.3" targetFramework="net472" />
|
||||
<package id="RestSharp" version="106.13.0" targetFramework="net472" />
|
||||
<package id="System.Buffers" version="4.6.1" targetFramework="net472" />
|
||||
<package id="System.Memory" version="4.6.3" targetFramework="net472" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net472" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net472" />
|
||||
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net472" />
|
||||
<package id="WebGrease" version="1.6.0" targetFramework="net472" />
|
||||
</packages>
|
||||
@@ -316,7 +316,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SPZLeverkusen", "ReportImp\
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Weitblick-ambulantBeWo", "ReportImp\Weitblick-ambulantBeWo\Weitblick-ambulantBeWo.csproj", "{2E99BA67-61A2-47BD-8412-6ECBC126D83E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KomMitBewo", "ReportImp\KomMitBewo\KomMitBewo.csproj", "{1A585E99-09AB-4924-8FB9-9C9D1FE48044}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KommMitBewo", "ReportImp\KomMitBewo\KommMitBewo.csproj", "{1A585E99-09AB-4924-8FB9-9C9D1FE48044}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skmRheydt", "ReportImp\skmRheydt\skmRheydt.csproj", "{B9C896DD-8C7D-4F37-B826-203D2E83D650}"
|
||||
EndProject
|
||||
@@ -750,8 +750,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SKFMMonheim", "ReportImp\SK
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZanderBeWo", "ReportImp\ZanderBeWo\ZanderBeWo.csproj", "{8725A58B-AB80-4906-9B13-2D4144FF09EA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestLWV", "ReportImp\TestLWV\TestLWV.csproj", "{BA124454-FE85-4909-8271-62544E13CAA8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dakota", "Dakota\Dakota.csproj", "{47331732-DD96-4075-869F-83AA9F3F9937}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Components", "Components", "{3B6BAB50-8447-4CC3-90B8-E4F6FBB55F0E}"
|
||||
@@ -9169,30 +9167,6 @@ Global
|
||||
{8725A58B-AB80-4906-9B13-2D4144FF09EA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{8725A58B-AB80-4906-9B13-2D4144FF09EA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8725A58B-AB80-4906-9B13-2D4144FF09EA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|.NET.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|.NET.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|x86.ActiveCfg = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.DebugRemote|x86.Build.0 = Debug|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|.NET.ActiveCfg = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|.NET.Build.0 = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8}.Release|x86.Build.0 = Release|Any CPU
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.Debug|.NET.ActiveCfg = Debug|Any CPU
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.Debug|.NET.Build.0 = Debug|Any CPU
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
@@ -9638,7 +9612,6 @@ Global
|
||||
{A2EFCD9D-F8BC-44FB-8FA0-708F4785808B} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{45389304-8557-440E-8B9B-102F34958E8A} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{8725A58B-AB80-4906-9B13-2D4144FF09EA} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{BA124454-FE85-4909-8271-62544E13CAA8} = {D8A691C5-146D-4613-86CC-438F02FE9106}
|
||||
{47331732-DD96-4075-869F-83AA9F3F9937} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
|
||||
{3B6BAB50-8447-4CC3-90B8-E4F6FBB55F0E} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
|
||||
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9} = {3B6BAB50-8447-4CC3-90B8-E4F6FBB55F0E}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<RootNamespace>BeWo.Controls</RootNamespace>
|
||||
<AssemblyName>BeWo.Controls</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -149,7 +150,6 @@
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -47,20 +47,7 @@
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Lib\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=9.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.9.0.7\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -181,7 +168,6 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="KTDatei\AO.txt">
|
||||
@@ -210,4 +196,10 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.Memory" />
|
||||
<PackageReference Include="System.Numerics.Vectors" />
|
||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" />
|
||||
<PackageReference Include="System.Text.Json" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user