Kleines Mergechen

Merge branch 'feature_rene_18_ai'

# Conflicts:
#	BeWo/BeWo.csproj
#	BeWo/BeWoApp.xaml.cs
#	BeWo/ServiceProxy/GeneratedCustomerService.cs
#	BeWo/ServiceProxy/GeneratedEmployeeService.cs
#	BeWo/ServiceProxy/GeneratedOperationsService.cs
#	BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs
#	BeWo/View/Detail/EmployeeView.xaml
#	BeWo/app.config
#	BeWoAllReports.sln
#	BeWoPlanerMobil.sln
#	Data/Access/SearchDAO.cs
#	Data/Data.csproj
#	Data/Security/UserRightHelper.cs
#	Server/Components/AICore/Prompt/SystemPrompts/Examples/TranscriptionService.cs
#	Service/DCEntityMapper/GkvAbrechnungDC_GkvAbrechnung.cs
#	Service/ServiceImplementations/EmployeeServiceImp.cs
#	Shared/BeWoEntityEnums.cs
#	Shared/Core/EnumTranslations.cs
#	Shared/Core/GkvValidator.cs
#	Shared/Core/ValidatorExtended.cs
#	Shared/Shared.csproj
This commit is contained in:
2026-02-20 16:36:41 +01:00
566 changed files with 37369 additions and 21474 deletions

View File

@@ -0,0 +1,89 @@
<?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>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{68C1F8EA-7828-4E46-8F04-91105C55860E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AiCoreUnitTest</RootNamespace>
<AssemblyName>AiCoreUnitTest</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<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>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<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>
<ItemGroup>
<Compile Include="Ollama2FacadeTest.cs" />
<Compile Include="OllamaFacadeTest.cs" />
<Compile Include="OpenWebUIFacadeTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\Server\Components\AICore\AICore.csproj">
<Project>{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}</Project>
<Name>AICore</Name>
</ProjectReference>
<ProjectReference Include="..\Service\Service.csproj">
<Project>{094331C3-ECEE-4C89-BBFD-4C9DED89F0EF}</Project>
<Name>Service</Name>
</ProjectReference>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>
</ProjectReference>
</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')" />
</Project>

View File

@@ -0,0 +1,54 @@
using AICore.Facade.LLM;
using BeWo.Service.Core;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
using System;
using System.Net;
using System.Runtime.InteropServices;
namespace AiCoreUnitTest
{
[TestClass]
public class Ollama2FacadeTest
{
public OllamaApiClient Client { get; set; }
[TestInitialize]
public void TestInitialize()
{
var url = "https://ai3.ownsoft.de";
var key = "mu9ZPuUXJ4aVGLU1WL2RfPCeSMRmJREwyjVJBP7bHfSz8quZRqN7e7UwnwCDi8GZ";
Client = new OllamaApiClient(url, key, BS.Shared.AiModelSource.ollama2);
}
[TestMethod]
public void GetModels()
{
var response = Client.GetAiModelle();
Assert.IsTrue(response?.Success);
}
[TestMethod]
public void SendMessage()
{
// Build Payload
var payload = new
{
model = "gemma3:12b",
messages = new[] {
new {
role = "user",
message = "why is the sky blue?"
}
}
};
var logger = ServiceLogger.GetRequestLogger();
var response = Client.SendAiMessageRequest(payload, out string message, out string model, out int? duration, logger);
Assert.IsTrue(response?.Success);
}
}
}

View File

@@ -0,0 +1,62 @@
using AICore.Facade.LLM;
using BeWo.Data.Security;
using BeWo.Service.Core;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
using System;
using System.Net;
using System.Runtime.InteropServices;
namespace AiCoreUnitTest
{
[TestClass]
public class OllamaFacadeTest
{
public string OllamaUrl { get; set; }
public string OllamaKey { get; set; }
[TestInitialize]
public void TestInitialize()
{
OllamaUrl = "https://w2.ownchat.de";
OllamaKey = "mu9ZPuUXJ4aVGLU1WL2RfPCeSMRmJREwyjVJBP7bHfSz8quZRqN7e7UwnwCDi8GZ";
}
public OllamaApiClient GetClient()
=> new OllamaApiClient(OllamaUrl, OllamaKey);
[TestMethod]
public void GetModels()
{
var client = GetClient();
var response = client.GetAiModelle();
Assert.IsTrue(response?.Success);
}
[TestMethod]
public void SendMessage()
{
var client = GetClient();
// Build Payload
var payload = new
{
model = "llama3:latest",
messages = new[] {
new {
role = "user",
message = "Say 'Hi'!"
}
},
customerid = UserRightHelper.GetTenant()
};
var logger = ServiceLogger.GetRequestLogger();
var response = client.SendAiMessageRequest(payload, out string message, out string model, out int? duration, logger);
Assert.IsTrue(response?.Success);
}
}
}

View File

@@ -0,0 +1,56 @@
using AICore.Facade.LLM;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Net;
namespace AiCoreUnitTest
{
//[TestClass]
//public class OpenWebUIFacadeTest
//{
// public string OpenWebUIUrl { get; set; }
// public string OpenWebUIKey { get; set; }
// [TestInitialize]
// public void TestInitialize()
// {
// OpenWebUIUrl = "https://owui1.ownsoft.de";
// OpenWebUIKey = "sk-7f5d8c418630448dbe31ab1c7e8b100a";
// }
// public OpenWebApiClient GetClient()
// => new OpenWebApiClient(OpenWebUIUrl, OpenWebUIKey);
// [TestMethod]
// public void GetModels()
// {
// var client = GetClient();
// var models = client.GetAiModelle();
// Assert.IsNotNull(models);
// }
// [TestMethod]
// public void SendMessage()
// {
// var client = GetClient();
// // Build Payload
// var payload = new
// {
// model = "llama3.2:latest",
// messages = new[] {
// new {
// role = "user",
// content = "Say Hi!"
// }
// }
// };
// var response = client.SendAiMessageRequest(payload, out string message, out string model, out int? duration);
// Assert.IsTrue(response?.Success);
// }
//}
}

View File

@@ -0,0 +1,20 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("AiCoreUnitTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AiCoreUnitTest")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("68c1f8ea-7828-4e46-8f04-91105c55860e")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

63
AiCoreUnitTest/app.config Normal file
View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.AttributedModel" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.TypedParts" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Composition.Hosting" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.6.0" newVersion="4.1.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.1.0" newVersion="2.5.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -0,0 +1,5 @@
<?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>

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30523.141
# Visual Studio Version 17
VisualStudioVersion = 17.12.35707.178
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
EndProject
@@ -601,6 +601,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MalteserJohanniterJohannesh
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", "{7C7F1E62-B72D-419B-98A5-26A307456638}"
ProjectSection(SolutionItems) = preProject
Server\Components\README.txt = Server\Components\README.txt
EndProjectSection
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}") = "AICore", "Server\Components\AICore\AICore.csproj", "{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET
@@ -4796,6 +4805,38 @@ Global
{47331732-DD96-4075-869F-83AA9F3F9937}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{47331732-DD96-4075-869F-83AA9F3F9937}.Release|x86.ActiveCfg = Release|Any CPU
{47331732-DD96-4075-869F-83AA9F3F9937}.Release|x86.Build.0 = Release|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|.NET.ActiveCfg = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|.NET.Build.0 = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|x86.ActiveCfg = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Debug|x86.Build.0 = Debug|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|.NET.ActiveCfg = Release|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|.NET.Build.0 = Release|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
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|x86.ActiveCfg = Release|Any CPU
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57}.Release|x86.Build.0 = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|.NET.ActiveCfg = Debug|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|.NET.Build.0 = Debug|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}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|x86.ActiveCfg = Debug|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Debug|x86.Build.0 = Debug|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|.NET.ActiveCfg = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|.NET.Build.0 = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Any CPU.Build.0 = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|x86.ActiveCfg = Release|Any CPU
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -5092,6 +5133,9 @@ Global
{AD3876F3-40C0-47CF-BA36-687139903F87} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{28331CB1-17FD-4B58-A837-E0249CAAC535} = {D8A691C5-146D-4613-86CC-438F02FE9106}
{47331732-DD96-4075-869F-83AA9F3F9937} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
{7C7F1E62-B72D-419B-98A5-26A307456638} = {FEB0336B-F053-40B6-92DD-7DE56AB9408A}
{EC2349FB-7FE0-4AD1-B28B-A7A27AF80A57} = {7C7F1E62-B72D-419B-98A5-26A307456638}
{69D70CA9-0DF9-419E-BFAF-F4539F129BD9} = {7C7F1E62-B72D-419B-98A5-26A307456638}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FBE985BB-9F0F-4DBB-8F94-ABC37A803FF9}

View File

@@ -1,46 +0,0 @@
using BeWo.AI.View;
using BeWo.View;
using BeWo.View.Windows;
using BS.Shared;
using BS.Shared.Translation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.AI
{
class AiChatController
{
private static void CreateAiChatWindow(AiChatView view, double height, double width)
{
var beWoWindow = BeWoWindowBuilder.GetBeWoWindow(Translator.Translate("Frage unsere KI"), view, height, width);
view.CloseButtonClicked += () => beWoWindow.Close();
beWoWindow.ShowDialog();
}
public static void ShowAiChatViewForServiceRecords(long c2sOid, DateTime start, DateTime end, double height, double width)
{
var ctrl = new AiChatView();
ctrl.InitServiceRecordQuery(c2sOid, start, end);
CreateAiChatWindow(ctrl, height, width);
}
public static void ShowAiChatViewForSingleCustomer(long customerOid, double height, double width)
{
var ctrl = new AiChatView();
ctrl.InitSingleCustomerQuery(customerOid);
CreateAiChatWindow(ctrl, height, width);
}
public static void ShowAiChatViewForObjects(TableID tableId, double height, double width)
{
var ctrl = new AiChatView();
ctrl.InitObjectQuery(tableId);
CreateAiChatWindow(ctrl, height, width);
}
}
}

View File

@@ -1,149 +0,0 @@
<view:BeWoView
x:Class="BeWo.AI.View.AiChatView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:validation="clr-namespace:BeWo.Validation"
xmlns:view="clr-namespace:BeWo.View"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True"
mc:Ignorable="d">
<view:BeWoView.Resources>
<!--<Expander x:Name="ExpanderTemplate" IsExpanded="True">
<Expander.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14" Margin="0" />
</Grid>
</Expander.Header>
</Expander>-->
</view:BeWoView.Resources>
<Grid Margin="0" Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxlc:LayoutControl Padding="0" Orientation="Vertical">
<dxlc:LayoutGroup Height="200" dxlc:LayoutControl.AllowVerticalSizing="True">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button
Grid.Row="0"
HorizontalAlignment="Left"
Click="btnSettings_Click"
Content="Einstellungen" />
<Popup
x:Name="PopupTemplate"
Grid.Row="0"
Grid.RowSpan="3"
Width="400"
Height="300"
Placement="MousePoint"
StaysOpen="True">
<Grid Margin="2,2,2,2" Background="{DynamicResource ObjectEditBackgroundBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="{t:Translate Datensatz Template}" />
<TextBox
x:Name="TextBoxTemplate"
Grid.Row="1"
MinHeight="60"
AcceptsReturn="True"
AcceptsTab="True"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" />
<StackPanel
Grid.Row="2"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Grid.Row="2"
Margin="3"
Click="btnSaveSettings_Click"
Content="Übernehmen" />
<Button
Grid.Row="2"
Margin="3"
Click="btnCancelSettings_Click"
Content="Abbrechen" />
</StackPanel>
</Grid>
</Popup>
<Label Grid.Row="1" Content="{t:Translate Formulieren Sie hier Ihre Anfrage}" />
<TextBox
x:Name="TextBoxAnfrage"
Grid.Row="2"
MinHeight="60"
AcceptsReturn="True"
AcceptsTab="True"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" />
</Grid>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup dxlc:LayoutControl.AllowVerticalSizing="True">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Content="{t:Translate Ergebnis}" />
<TextBox
x:Name="TextBoxErgebnis"
Grid.Row="1"
MinHeight="60"
AcceptsReturn="True"
AcceptsTab="True"
HorizontalScrollBarVisibility="Disabled"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</Grid>
</dxlc:LayoutGroup>
</dxlc:LayoutControl>
<StackPanel
Grid.Row="1"
Height="Auto"
Margin="5,10,10,10"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
x:Name="btnSend"
Height="25"
Margin="0,0,3,0"
Click="btnSend_Click"
Content="{t:Translate Absenden}" />
<Button
x:Name="btnClose"
Height="25"
Margin="0,0,3,0"
Click="btnClose_Click"
Content=" Schließen " />
</StackPanel>
</Grid>
</view:BeWoView>

View File

@@ -1,161 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using BeWo.Annotations;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View;
using BeWo.View.Controls;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.Utils;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using MessageBox = System.Windows.MessageBox;
namespace BeWo.AI.View
{
public partial class AiChatView : BeWoView
{
public event Action CloseButtonClicked;
int type = 0; //0 = ServiceRecordQuery, 1 = SingleCustomerQuery, 2 = AllCustomerQuery
private long cb2scOid;
private long customerOid;
private TableID tableID;
private DateTime startDate;
private DateTime endDate;
private AiSettingsDC aiSettings;
public AiChatView()
{
InitializeComponent();
}
public void InitServiceRecordQuery(long c2sOid, DateTime start, DateTime end)
{
type = 0;
this.cb2scOid = c2sOid;
this.startDate = start;
this.endDate = end;
LoadAiSettings(1);
}
public void InitSingleCustomerQuery(long customerOid)
{
type = 1;
this.customerOid = customerOid;
}
public void InitObjectQuery(TableID tableId)
{
type = 2;
tableID = tableId;
}
private void LoadAiSettings(int settingsType)
{
aiSettings = ServiceFacade.DoOperationsServiceSync(s => s.GetAiSettings(settingsType));
}
private void ReloadViewModel(AiChatDC dc)
{
TextBoxErgebnis.Text = dc.Result;
}
private void btnSend_Click(object sender, RoutedEventArgs e)
{
var acdc = new AiChatDC();
acdc.Prompt = TextBoxAnfrage.Text;
if (type == 1)
{
ServiceFacade.DoOperationsServiceAsync(s => s.CreateAiQueryForSingleCustomer(acdc, customerOid),
dc =>
{
this.Dispatch(delegate
{
ReloadViewModel(dc);
});
});
}
else if (type == 2)
{
ServiceFacade.DoOperationsServiceAsync(s => s.CreateAiQueryForObjects(acdc, (int)tableID),
dc =>
{
this.Dispatch(delegate
{
ReloadViewModel(dc);
});
});
}
else
{
ServiceFacade.DoOperationsServiceAsync(s => s.CreateAiQueryForServiceRecords(acdc, cb2scOid, startDate, endDate),
dc =>
{
this.Dispatch(delegate
{
ReloadViewModel(dc);
});
});
}
}
private void btnClose_Click(object sender, RoutedEventArgs e)
{
CloseButtonClicked?.Invoke();
}
private void btnSettings_Click(object sender, RoutedEventArgs e)
{
if (aiSettings != null)
{
TextBoxTemplate.Text = aiSettings.Settings;
}
PopupTemplate.IsOpen = true;
}
private void btnSaveSettings_Click(object sender, RoutedEventArgs e)
{
PopupTemplate.IsOpen = false;
if (aiSettings != null)
{
aiSettings.Settings = TextBoxTemplate.Text;
ServiceFacade.DoOperationsServiceAsync(s => s.UpdateAiSettings(aiSettings),
dc =>
{
this.Dispatch(delegate
{
aiSettings = dc;
});
});
}
}
private void btnCancelSettings_Click(object sender, RoutedEventArgs e)
{
PopupTemplate.IsOpen = false;
}
}
}

View File

@@ -20,7 +20,7 @@
<ManifestKeyFile>
</ManifestKeyFile>
<ManifestCertificateThumbprint>8E3A8E81F1C6F67A1C6D239593544EA33D8AC6A7</ManifestCertificateThumbprint>
<IsWebBootstrapper>true</IsWebBootstrapper>
<IsWebBootstrapper>false</IsWebBootstrapper>
<SignAssembly>false</SignAssembly>
<ExpressionBlendVersion>3.0.1927.0</ExpressionBlendVersion>
<TargetFrameworkProfile>
@@ -29,17 +29,16 @@
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<PublishUrl>D:\Projects\beyondsoft\BeWoPlaner\Publish\</PublishUrl>
<PublishUrl>C:\publish\bewoplaner\</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>true</UpdateRequired>
<MapFileExtensions>false</MapFileExtensions>
<InstallUrl>https://app.ownsoft.de/</InstallUrl>
<TargetCulture>de-DE</TargetCulture>
<ProductName>BeWoPlaner</ProductName>
<PublisherName>ownSoft GmbH</PublisherName>
@@ -101,8 +100,12 @@
<Compile Include="AI\View\AiTranskriptionView.xaml.cs">
<DependentUpon>AiTranskriptionView.xaml</DependentUpon>
</Compile>
<Compile Include="BeWoAppInfo.cs" />
<Compile Include="Converter\AddressToStringConverter.cs" />
<Compile Include="Converter\ComparisonConverter.cs" />
<Compile Include="Converter\IconToImageSourceConverter.cs" />
<Compile Include="Converter\NewlineConverter.cs" />
<Compile Include="Core\BeWoAppVersion.cs" />
<Compile Include="Core\Commands\CommandFactory.cs" />
<Compile Include="Scheduling\View\AbsenceTimesCreationView.xaml.cs">
<DependentUpon>AbsenceTimesCreationView.xaml</DependentUpon>
@@ -123,14 +126,52 @@
<Compile Include="ServiceProxy\GeneratedStreamingService.cs" />
<Compile Include="ServiceProxy\GeneratedUserService.cs" />
<Compile Include="ServiceProxy\GeneratedValueListService.cs" />
<Compile Include="Services\AiWindowService.cs" />
<Compile Include="Services\BeWoControlFactory.cs" />
<Compile Include="Services\BeWoWindowFactory.cs" />
<Compile Include="Services\BeWoWindowService.cs" />
<Compile Include="Services\IControlFactory.cs" />
<Compile Include="Services\IWindowFactory.cs" />
<Compile Include="Services\IWindowService.cs" />
<Compile Include="Services\IBeWoWindowService.cs" />
<Compile Include="Styles\DataTemplates\DataTemplates.xaml.cs">
<DependentUpon>DataTemplates.xaml</DependentUpon>
</Compile>
<Compile Include="ViewModel\AddressVM.cs" />
<Compile Include="ViewModel\AiConfigVM.cs" />
<Compile Include="ViewModel\AiPromptbausteinFolderVM.cs" />
<Compile Include="ViewModel\AiPromptbausteinPromptVM.cs" />
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinPromptListVM.cs" />
<Compile Include="ViewModel\ListViewModel\AiPromptbausteinFolderListVM.cs" />
<Compile Include="ViewModel\ListViewModel\TextModuleListVM.cs" />
<Compile Include="ViewModel\View\AcceptCancelDialogViewModel.cs" />
<Compile Include="ViewModel\View\Administration\AiPromptbausteinComplexTreeViewModel.cs" />
<Compile Include="ViewModel\View\Administration\AiPromptbausteinFolderViewModel.cs" />
<Compile Include="ViewModel\View\Administration\AiPromptbausteinPromptViewModel.cs" />
<Compile Include="ViewModel\View\AI\AiConversationChatViewModel.cs" />
<Compile Include="ViewModel\View\AI\AiPromptbausteinActionResultViewModel.cs" />
<Compile Include="ViewModel\View\AI\AiPromptbausteinComplexSelectionViewModel.cs" />
<Compile Include="ViewModel\View\DialogViewModel.cs" />
<Compile Include="ViewModel\View\Gkv\GkvAbrechnungDialogViewModel.cs" />
<Compile Include="ViewModel\View\WindowViewModel.cs" />
<Compile Include="View\Controls\AI\AiConversationButton.xaml.cs">
<DependentUpon>AiConversationButton.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinActionResultView.xaml.cs">
<DependentUpon>AiPromptbausteinActionResultView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinComplexSelectionView.xaml.cs">
<DependentUpon>AiPromptbausteinComplexSelectionView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinPromptView.xaml.cs">
<DependentUpon>AiPromptbausteinPromptView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinFolderView.xaml.cs">
<DependentUpon>AiPromptbausteinFolderView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Core\WaitLayer3.xaml.cs">
<DependentUpon>WaitLayer3.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiPromptbausteinComplexTreeView.xaml.cs">
<DependentUpon>AiPromptbausteinComplexTreeView.xaml</DependentUpon>
</Compile>
<Compile Include="ViewModel\StoredFileVM.cs" />
<Compile Include="View\Detail\AI\AiConfigView.xaml.cs">
<DependentUpon>AiConfigView.xaml</DependentUpon>
@@ -142,6 +183,70 @@
<Compile Include="View\Windows\AnimatedBeWoWindow.xaml.cs">
<DependentUpon>AnimatedBeWoWindow.xaml</DependentUpon>
</Compile>
<Page Include="Styles\ControlStyles\PopupStyles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIChatSchwarz.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIChatSchwarzOrange.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIChatWeiss.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIChatWeissOrange.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIFunktionSchwarz.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIFunktionSchwarzGruen.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIFunktionWeiss.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\Designs\AI\IconKIFunktionWeissGruen.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Controls\AI\AiConversationButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinActionResultView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinComplexSelectionView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinPromptView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinFolderView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Core\WaitLayer3.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiPromptbausteinComplexTreeView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="AI\Controls\VoiceToTextButtonControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -267,10 +372,6 @@
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Page Include="AI\View\AiChatView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="BSLogoControl.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@@ -1066,10 +1167,6 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="AI\AiChatController.cs" />
<Compile Include="AI\View\AiChatView.xaml.cs">
<DependentUpon>AiChatView.xaml</DependentUpon>
</Compile>
<Compile Include="BSLogoControl.xaml.cs">
<DependentUpon>BSLogoControl.xaml</DependentUpon>
</Compile>
@@ -1394,7 +1491,6 @@
<Compile Include="ViewModel\ListViewModel\BargeldtransaktionsListVM.cs" />
<Compile Include="ViewModel\ListViewModel\GenericValueListEntryListVM.cs" />
<Compile Include="ViewModel\ListViewModel\MedikamentenverordnungslisteListVM.cs" />
<Compile Include="ViewModel\ListViewModel\TextModuleListVM.cs" />
<Compile Include="ViewModel\TeamNewsItemVM.cs" />
<Compile Include="ViewModel\ListViewModel\AdditionalServiceBookingListVM.cs" />
<Compile Include="ViewModel\ListViewModel\AdditionalServiceGroupOfPeopleListVM.cs" />
@@ -3590,7 +3686,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Converter\Features\" />
<Folder Include="Scripts\log\" />
<Folder Include="ViewModel\Window\" />
<Folder Include="View\Controls\Popup\" />
</ItemGroup>
<ItemGroup>
@@ -3601,6 +3697,14 @@
</ItemGroup>
<ItemGroup>
<Resource Include="AI\View\Icon_KI_Chat_Weiss_TEMP.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Chat_Schw+Orange.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Chat_Schw.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Chat_Weiss+Orange.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Chat_Weiss.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Funktion_Schw+Gruen.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Funktion_Schw.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Funktion_Weiss+Gruen.png" />
<Resource Include="Ressources\Icons\KI\Icon_KI_Funktion_Weiss.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>D:\Projects\beyondsoft\BeWoPlaner\Publish\|publish\|D:\Projects\beyondsoft\BeWoPlaner\PublishTest\|D:\Projects\beyondsoft\BeWoPlaner\PublishDev\|D:\Projects\beyondsoft\BeWoPlaner\Publish45\</PublishUrlHistory>
@@ -9,7 +9,7 @@
<ErrorReportUrlHistory />
<FallbackCulture>de-DE</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
@@ -18,5 +18,7 @@
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartArguments>
</StartArguments>
</PropertyGroup>
</Project>

View File

@@ -84,6 +84,8 @@
<conv:TooltipTextConverter x:Key="TooltipTextConverter" />
<conv:NewlineConverter x:Key="NewlineConverter" />
<conv:AddressToStringConverter x:Key="AddressToStringConverter" />
<conv:ComparisonConverter x:Key="ComparisonConverter" />
<conv:IconToImageSourceConverter x:Key="IconToImageSourceConverter" />
<conv:ValidationConverter x:Key="ValidationConverter" />
<conv:ValueConverterGroup x:Key="Validation2BrushConverter">

View File

@@ -36,6 +36,7 @@ using DevExpress.Xpf.Scheduling;
using DevExpress.XtraScheduler;
using System.ServiceModel;
using BeWo.View.Windows;
using System.Diagnostics;
namespace BeWo
{
@@ -51,18 +52,14 @@ namespace BeWo
private static EmployeeDC _LoggedOnEmployee;
private static UserDC _LoggedOnUser;
private static MandatorDC _Mandator;
private static bool _IsInDeveloperMode;
public static LoginControl LoginControl;
public static MainControl MainControl;
public static string ShortVersion = "3.30";
public static string Version = "Version 3.30";
public static string ShortVersion = "3.29";
public static string Version => BeWoAppInfo.BeWoAppVersion.ToString();
public static int RenderTier = 0;
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
internal static string IpAddress = string.Empty;
internal static string Tenant = string.Empty;
internal static string ServerName = string.Empty;
@@ -82,17 +79,7 @@ namespace BeWo
public static BeWoApp CurrentBeWo => Current as BeWoApp;
public static Dictionary<string, string> ICD10Diagnosis { get; set; }
public static bool IsInDeveloperMode {
get => _IsInDeveloperMode;
set
{
if (IsInDeveloperMode == value)
return;
_IsInDeveloperMode = value;
CurrentBeWo.FirePropertyChanged(nameof(IsInDeveloperMode));
}
}
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
public static EmployeeDC LoggedOnEmployee
{
@@ -675,8 +662,6 @@ namespace BeWo
//AppSettings.AllowGkvAbrechnung = true;
//AppSettings.AllowGkvAbrechnung = false;
//showInfoButtonInCalender = true;
//IsInDeveloperMode = true;
//IsInDeveloperMode = false;
//AppSettings.ModuleAiEnabled = true;
//AppSettings.ModuleAiSettingsEnabled = false;
AppSettings.IsSchedulerAllowed = true;
@@ -720,7 +705,7 @@ namespace BeWo
BS.Shared.Settings.ApplicationSettings.SupportConceptExpirationLimitInMonths = AppSettings.HilfeplanAuslaufAuswahl;
if (IsInDeveloperMode)
if (BeWoAppInfo.IsInAiDeveloperMode)
{
applyDeveloperMode();
}
@@ -793,9 +778,9 @@ namespace BeWo
//{
// url += "/service45";
//}
if (url.IndexOf("/service") < 0)
if (url.IndexOf("/service_ai") < 0)
{
url += "/service";
url += "/service_ai";
}
return new Uri(String.Format("https://{0}", url));
@@ -1081,6 +1066,17 @@ namespace BeWo
};
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
BeWoAppInfo.BeWoAppVersion.TryActiveDeveloperMode(e.Args);
//if(e.Args.LastOrDefault(x => x.StartsWith("/timeout:") || x.StartsWith("--timeout:")) is string str)
//{
// var valuePart = str.Substring(str.IndexOf(':') + 1);
// if(int.TryParse(valuePart, out int parsedTimeout))
// {
// AiTimeout = parsedTimeout;
// }
//}
}
public static void ShowInfoMessage(string message)
@@ -1095,6 +1091,9 @@ namespace BeWo
public static void ShowErrorMessage(Exception e)
{
if (IsInDesignMode)
return;
if (e is FaultException<BeWoFault>)
{
var lBeWoFault = (e as FaultException<BeWoFault>).Detail;

29
BeWo/BeWoAppInfo.cs Normal file
View File

@@ -0,0 +1,29 @@
using BeWo.Core;
using BS.Shared;
using DevExpress.Web.Internal.XmlProcessor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo
{
public static class BeWoAppInfo
{
static BeWoAppInfo()
{
var baseVersion = new Version(BeWoApp.ShortVersion);
var stage = BeWoClientReleaseStage.Sandbox;
var stageVersion = new Version("3.1");
var feature = BeWoClientFeature.AI;
BeWoAppVersion = new BeWoAppVersion(baseVersion, stage, stageVersion, feature);
}
public static BeWoAppVersion BeWoAppVersion { get; private set; }
public static bool IsInAiMode => BeWoAppVersion.Feature == BeWoClientFeature.AI;
public static bool IsInAiDeveloperMode => IsInAiMode && BeWoAppVersion.IsInDeveloperMode;
}
}

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BeWo.Converter
{
public class ComparisonConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
{
return false; // or return parameter.Equals(YourEnumType.SomeDefaultValue);
}
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value?.Equals(true) == true ? parameter : Binding.DoNothing;
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Interop;
using System.Windows.Media.Imaging;
using System.Windows;
using System.Windows.Media;
namespace BeWo.Converter
{
// Source - https://stackoverflow.com/a/29757845
// Posted by run2thesun, modified by community. See post 'Timeline' for change history
// Retrieved 2026-01-30, License - CC BY-SA 3.0
public class IconToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var icon = value as Icon;
if (icon == null)
{
Trace.TraceWarning("Attempted to convert {0} instead of Icon object in IconToImageSourceConverter", value);
return null;
}
ImageSource imageSource = Imaging.CreateBitmapSourceFromHIcon(
icon.Handle,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
return imageSource;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,74 @@
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Core
{
public class BeWoAppVersion
{
public Version BaseVersion { get; }
public BeWoClientReleaseStage Stage { get; }
public Version FeatureVersion { get; }
public BeWoClientFeature Feature { get; }
public static bool IsInDeveloperMode { get; private set; }
public BeWoAppVersion(Version baseVersion, BeWoClientReleaseStage stage, Version stageVersion, BeWoClientFeature feature = BeWoClientFeature.None)
{
BaseVersion = baseVersion;
Stage = stage;
FeatureVersion = stageVersion;
Feature = feature;
}
public void TryActiveDeveloperMode(string[] args)
{
#if !DEBUG
if (Stage != BeWoClientReleaseStage.Sandbox && Stage != BeWoClientReleaseStage.ProofOfConcept)
return;
if (args.All(x => x != "/bewodevmode" && x != "--bewodevmode"))
return;
#endif
// Darf noch nicht aktiviert sein
if (IsInDeveloperMode)
throw new NotImplementedException();
IsInDeveloperMode = true;
}
public override string ToString()
{
var sb = new StringBuilder();
sb.Append($"Version {BaseVersion}");
if (Stage == BeWoClientReleaseStage.Release)
return sb.ToString();
sb.Append(" ");
if (Feature != BeWoClientFeature.None)
{
// https://stackoverflow.com/questions/9684619/label-doesnt-display-character
sb.Append(Feature.ToString().ToLower());
sb.Append("__");
sb.Append(FeatureVersion);
sb.Append("__");
}
sb.Append($"{Stage.ToString().ToLower()}");
if (Stage == BeWoClientReleaseStage.Sandbox || Stage == BeWoClientReleaseStage.ProofOfConcept)
{
sb.Append($" (dev:{(IsInDeveloperMode ? "1" : "0")})");
}
return sb.ToString();
}
}
}

View File

@@ -5,6 +5,7 @@ using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
using BeWo.View;
using DevExpress.Xpf.Grid;
@@ -294,24 +295,30 @@ namespace BeWo.Core
return null;
}
public static void ScrollToTop(ListBox listBox)
public static void ScrollToTop(ListBox listBox, DispatcherPriority priority = DispatcherPriority.Loaded)
{
if (VisualTreeHelper.GetChildrenCount(listBox) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(listBox, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToTop();
}
listBox.Dispatcher.InvokeAsync(() =>
{
if (VisualTreeHelper.GetChildrenCount(listBox) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(listBox, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToTop();
}
}, priority);
}
public static void ScrollToBottom(ListBox listBox)
public static void ScrollToBottom(ListBox listBox, DispatcherPriority priority = DispatcherPriority.Loaded)
{
if (VisualTreeHelper.GetChildrenCount(listBox) > 0)
listBox.Dispatcher.InvokeAsync(() =>
{
Border border = (Border)VisualTreeHelper.GetChild(listBox, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
if (VisualTreeHelper.GetChildrenCount(listBox) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(listBox, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
}, priority);
}
}
}

View File

@@ -11,23 +11,15 @@ namespace BeWo.Core.Commands
{
public static class CommandFactory
{
public static DelegateCommand GetAiViewCommand(Action openView, UserRightType userRightType, Func<bool> additionalCheckup = null)
public static DelegateCommand GetAiViewCommand(Action openView, UserRightType userRightType, Func<bool> additionalCheckup = null, bool? useCommandManager = null)
{
bool canExecute() =>
(BeWoApp.AppSettings?.ModuleAiEnabled ?? false) &&
BeWoAppInfo.IsInAiMode &&
(BeWoApp.AppSettings?.ModuleAiEnabled ?? BeWoApp.AppSettings?.ShowAI ?? false) &&
BeWoApp.HasLoggedOnUserRight(userRightType) &&
(additionalCheckup is null || additionalCheckup());
return GetTestClientCommand(openView, () => CheckupSafe(canExecute), null);
}
public static DelegateCommand GetTestClientCommand(Action action, Func<bool> canExecute = null, bool? useCommandManager = null)
{
bool canExecute2() =>
CheckupTestVersion() &&
(canExecute is null || canExecute());
return new DelegateCommand(action, () => CheckupSafe(canExecute2), useCommandManager);
return new DelegateCommand(openView, () => CheckupSafe(canExecute), useCommandManager);
}
private static bool CheckupSafe(Func<bool> predicate)
@@ -41,12 +33,5 @@ namespace BeWo.Core.Commands
return false;
}
}
private static bool CheckupTestVersion()
{
var version = BeWoApp.Version.Split(' ');
var test_string = version[version.Length - 1].ToLower();
return test_string == "test";
}
}
}

View File

@@ -147,11 +147,11 @@ namespace BeWo
{
DebugConfigMode = DebugConfigMode.FeatureAiModule,
AutoLogin = true,
SelectView = UIContext.Customer,
//SelectView = UIContext.Administration,
//SelectIndex = 8,
DefaultLoginUsername = "m1",
DefaultLoginPassword = "bewobewo",
DefaultProfilename = "5000000000",
//DefaultLoginUsername = "m1",
//DefaultLoginPassword = "bewobewo",
//DefaultProfilename = "5000000000",
EnableAutoRemoteDebugging = true
});

View File

@@ -829,27 +829,6 @@
</TransformGroup>
</Button.RenderTransform>
</localView:ImageButton>
<localView:ImageButton
x:Name="button_ai_chat"
Width="90"
HorizontalAlignment="Stretch"
Background="{StaticResource ModuleAiChatTabItem}"
Click="button_ai_chat_Click"
Content="{t:Translate AiModuleMenuItem}"
ImageSource="Ressources\Icons\chatbot2.png"
RenderTransformOrigin="0.5,0.5"
Style="{StaticResource NavBarButton}"
Visibility="Collapsed">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1" />
<SkewTransform AngleX="0" AngleY="0" />
<RotateTransform Angle="0" />
<TranslateTransform X="0" Y="0" />
</TransformGroup>
</Button.RenderTransform>
</localView:ImageButton>
</StackPanel>
</Grid>
</ScrollViewer>

View File

@@ -37,6 +37,7 @@ using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using DevExpress.XtraEditors;
using DevExpress.XtraReports.Design;
using Hyperlink = System.Windows.Documents.Hyperlink;
namespace BeWo
@@ -60,13 +61,7 @@ namespace BeWo
Scheduling = 14,
Finance = 15,
Administration = 16,
AiConversation = 17,
AiConversationPopup = 18,
// Nur für AI Conversation Zuweisung
ServiceRecord = 19,
CustomerSingle = 20,
PersonSingle = 21,
EmployeeSingle = 22,
}
public partial class MainControl
@@ -97,7 +92,10 @@ namespace BeWo
#if DEBUG
if (DebugConfig.CurrentConfig is object && DebugConfig.CurrentConfig.SelectView is UIContext context)
{
NavigateTo(GetViewForUIContext(context));
if (context == UIContext.ServiceRecord)
NavigateToServiceRecordView(null);
else
NavigateTo(GetViewForUIContext(context));
}
#endif
@@ -194,9 +192,9 @@ namespace BeWo
UpdateMandator();
ControlFactory = new BeWoControlFactory();
WindowFactory = new BeWoWindowFactory();
WindowService = new BeWoWindowService(WindowFactory, ControlFactory);
var controlFactory = new BeWoControlFactory();
var windowFactory = new BeWoWindowFactory();
WindowService = new BeWoWindowService(windowFactory, controlFactory);
}
private AnimatedBeWoWindow _CurrentAnimatedBeWoWindow;
@@ -219,9 +217,7 @@ namespace BeWo
}
}
internal IControlFactory ControlFactory { get; set; }
internal IWindowFactory WindowFactory { get; set; }
internal IWindowService WindowService { get; set; }
internal IBeWoWindowService WindowService { get; set; }
public List<ModalViewWindow> OpenedModalViewWindows { get; set; }
@@ -357,12 +353,6 @@ namespace BeWo
case UIContext.Finance:
view = new FinanceView();
break;
case UIContext.AiConversation:
view = new AiConversationView();
break;
case UIContext.AiConversationPopup:
view = new AiConversationView();
break;
}
_Views[uiContext] = view;
@@ -1261,14 +1251,6 @@ namespace BeWo
}
}
private void button_ai_chat_Click(object sender, RoutedEventArgs e)
{
if (DoSaveCheck())
{
NavigateTo(GetViewForUIContext(UIContext.AiConversation));
}
}
//private void button_assessmentSheetEntry_Click(object sender, RoutedEventArgs e)
//{
// if (this.DoSaveCheck())
@@ -1983,14 +1965,5 @@ namespace BeWo
NavigateTo(GetViewForUIContext(UIContext.Scheduling));
}
}
private void button_ai_chat_popup_Click(object sender, RoutedEventArgs e)
{
var view = GetViewForUIContext(UIContext.AiConversationPopup);
var window = BeWoWindowBuilder.GetBeWoWindow("Ai Chat", view, 800, 1200);
window.Show();
}
}
}

View File

@@ -19,7 +19,7 @@ namespace BeWo.Properties {
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {

View File

@@ -12,7 +12,7 @@ namespace BeWo.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -5,7 +5,6 @@ using System.Linq;
using System.Windows;
using System.Windows.Data;
using BeWo.Scheduler.ViewModel;
using BS.Shared.DataContracts;
namespace BeWo.Scheduler.Converter
{

View File

@@ -1,40 +1,71 @@
<view:BeWoView x:Class="BeWo.Scheduler.View.MitarbeiterverfuegbarkeitsinfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:view="clr-namespace:BeWo.View"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
mc:Ignorable="d"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
<view:BeWoView
x:Class="BeWo.Scheduler.View.MitarbeiterverfuegbarkeitsinfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:view="clr-namespace:BeWo.View"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True"
mc:Ignorable="d">
<Grid Width="Auto" Height="Auto" x:Name="root">
<GroupBox x:Name="rootGroupBox" Style="{StaticResource PopUpWindowStyle}" Header="{markup:Translate Mitarbeiterverfügbarkeit}">
<Grid Margin="0,3,0,0" Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxg:GridControl DataSource="{Binding Verfuegbarkeiten}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Mitarbeiter" Header="{t:Translate MitarbeiterSingular}" AllowEditing="False" />
<dxg:GridColumn FieldName="Ueberstunden" Header="Überstunden" AllowEditing="False">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings MaskUseAsDisplayFormat="True" Mask="########0.00" MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AutoWidth="True" ShowGroupPanel="False" BestFitMode="AllRows"/>
</dxg:GridControl.View>
</dxg:GridControl>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="3">
<Button Content="Schließen" Margin="0,0,3,0" Command="ApplicationCommands.Close" Height="25" />
</StackPanel>
</Grid>
</GroupBox>
</Grid>
<Grid
x:Name="root"
Width="Auto"
Height="Auto">
<GroupBox
x:Name="rootGroupBox"
Header="{markup:Translate Mitarbeiterverfügbarkeit}"
Style="{StaticResource PopUpWindowStyle}">
<Grid Margin="0,3,0,0" Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxg:GridControl DataSource="{Binding Verfuegbarkeiten}">
<dxg:GridControl.Columns>
<dxg:GridColumn
AllowEditing="False"
FieldName="Mitarbeiter"
Header="{t:Translate MitarbeiterSingular}" />
<dxg:GridColumn
AllowEditing="False"
FieldName="Ueberstunden"
Header="Überstunden">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings
Mask="########0.00"
MaskType="Numeric"
MaskUseAsDisplayFormat="True" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView
AutoWidth="True"
BestFitMode="AllRows"
ShowGroupPanel="False" />
</dxg:GridControl.View>
</dxg:GridControl>
<StackPanel
Grid.Row="1"
Margin="3"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Height="25"
Margin="0,0,3,0"
Command="ApplicationCommands.Close"
Content="Schließen" />
</StackPanel>
</Grid>
</GroupBox>
</Grid>
</view:BeWoView>

View File

@@ -396,45 +396,45 @@
<Grid x:Name="FormContainer">
<Grid HorizontalAlignment="Stretch" Background="#0C000000">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 0 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 1 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 2 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 3 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 4 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 5 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 6 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 7 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 8 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 9 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 10 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 11 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 12 -->
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<!-- 13 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 14 -->
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<!-- 15 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 16 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 17 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 18 -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<!-- 19 -->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>

View File

@@ -391,7 +391,7 @@
</Style>
</Window.Resources>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<Grid.ColumnDefinitions>
<!-- 5 Spalten -->
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
@@ -400,7 +400,7 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<Grid.RowDefinitions>
<!-- 19 Zeilen -->
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />

View File

@@ -1,127 +1,236 @@
<localView:BeWoView x:Class="BeWo.SchulbegleitenderDienst.SchulbegleitenderDienstEmployeeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView
x:Class="BeWo.SchulbegleitenderDienst.SchulbegleitenderDienstEmployeeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox Grid.ColumnSpan="3" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Schulbegleitender Dienst">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GroupBox
Grid.ColumnSpan="3"
Padding="5"
Header="Schulbegleitender Dienst"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Content="{markup:Translate EmployeePflege}" Margin="3" Grid.Row="0" Grid.Column="0" />
<CheckBox Margin="3" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding Path=Pflege, UpdateSourceTrigger=PropertyChanged}"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
Margin="3"
Content="{markup:Translate EmployeePflege}" />
<CheckBox
Grid.Row="0"
Grid.Column="1"
Margin="3"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsChecked="{Binding Path=Pflege, UpdateSourceTrigger=PropertyChanged}" />
<Label Content="{markup:Translate EmployeeToilettengang}" Margin="3" Grid.Row="1" Grid.Column="0" />
<CheckBox Margin="3" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding Path=Toilettengang, UpdateSourceTrigger=PropertyChanged}"/>
<Label
Grid.Row="1"
Grid.Column="0"
Margin="3"
Content="{markup:Translate EmployeeToilettengang}" />
<CheckBox
Grid.Row="1"
Grid.Column="1"
Margin="3"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsChecked="{Binding Path=Toilettengang, UpdateSourceTrigger=PropertyChanged}" />
<Label Content="{markup:Translate EmployeeAggressivität}" Margin="3" Grid.Row="2" Grid.Column="0" />
<CheckBox Margin="3" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding Path=Aggressiv, UpdateSourceTrigger=PropertyChanged}"/>
<Label
Grid.Row="2"
Grid.Column="0"
Margin="3"
Content="{markup:Translate EmployeeAggressivität}" />
<CheckBox
Grid.Row="2"
Grid.Column="1"
Margin="3"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsChecked="{Binding Path=Aggressiv, UpdateSourceTrigger=PropertyChanged}" />
<Label Content="{markup:Translate EmployeeHygienebelehrung}" Margin="3" Grid.Row="3" Grid.Column="0" />
<CheckBox Margin="3" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" IsChecked="{Binding Path=Hygienebelehrung, UpdateSourceTrigger=PropertyChanged}"/>
<Label
Grid.Row="3"
Grid.Column="0"
Margin="3"
Content="{markup:Translate EmployeeHygienebelehrung}" />
<CheckBox
Grid.Row="3"
Grid.Column="1"
Margin="3"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsChecked="{Binding Path=Hygienebelehrung, UpdateSourceTrigger=PropertyChanged}" />
<Label Content="{markup:Translate EmployeeSchutzstufe}" Margin="3" Grid.Row="4" Grid.Column="0" />
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Margin="3" Height="23" Text="{Binding Path=Schutzstufe, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="4"
Grid.Column="0"
Margin="3"
Content="{markup:Translate EmployeeSchutzstufe}" />
<TextBox
Grid.Row="4"
Grid.Column="1"
Grid.ColumnSpan="3"
Height="23"
Margin="3"
Text="{Binding Path=Schutzstufe, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="5"
Grid.Column="0"
Margin="3"
Content="{markup:Translate CustomerBemerkungenSbd}" />
<TextBox
Grid.Row="5"
Grid.Column="1"
Grid.ColumnSpan="3"
Height="100"
Margin="3"
AcceptsReturn="True"
AutoWordSelection="True"
Text="{Binding Path=BemerkungenSbd, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
<Label Content="{markup:Translate CustomerBemerkungenSbd}" Margin="3" Grid.Row="5" Grid.Column="0" />
<TextBox Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="3" Margin="3" Height="100" Text="{Binding Path=BemerkungenSbd, UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" AcceptsReturn="True" AutoWordSelection="True" VerticalScrollBarVisibility="Auto"/>
</Grid>
</GroupBox>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="1"
Margin="0,10,0,0"
Header="Wunschkriterien"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxe:ComboBoxEdit
x:Name="ComboWunschAnzeige"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Width="300"
MinHeight="150"
Margin="3"
VerticalContentAlignment="Top"
ImmediatePopup="True"
IncrementalFiltering="True"
IsKeyboardFocusWithinChanged="ComboWunschAnzeige_OnIsKeyboardFocusWithinChanged"
TextWrapping="Wrap">
<dxe:ComboBoxEdit.StyleSettings>
<dxe:TokenComboBoxStyleSettings EnableTokenWrapping="True" NewTokenPosition="Far" />
</dxe:ComboBoxEdit.StyleSettings>
<dxmvvm:Interaction.Behaviors>
<dxe:TokenEditorBehavior x:Name="tokenEditorBehavior" TokensChanged="TokenEditorWunschBehavior_OnTokensChanged" />
</dxmvvm:Interaction.Behaviors>
</dxe:ComboBoxEdit>
</Grid>
</GroupBox>
<GroupBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="1"
Margin="0,10,0,0"
HorizontalAlignment="Left"
Header="Ausschlusskriterien"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxe:ComboBoxEdit
x:Name="ComboAusschlussAnzeige"
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Width="300"
MinHeight="150"
Margin="3"
VerticalContentAlignment="Top"
ImmediatePopup="True"
IncrementalFiltering="True"
IsKeyboardFocusWithinChanged="ComboAusschlussAnzeige_OnIsKeyboardFocusWithinChanged"
TextWrapping="Wrap">
<dxe:ComboBoxEdit.StyleSettings>
<dxe:TokenComboBoxStyleSettings EnableTokenWrapping="True" NewTokenPosition="Far" />
</dxe:ComboBoxEdit.StyleSettings>
<dxmvvm:Interaction.Behaviors>
<dxe:TokenEditorBehavior x:Name="tokenEditorAusschlussBehavior" TokensChanged="TokenEditorAusschlussBehavior_OnTokensChanged" />
</dxmvvm:Interaction.Behaviors>
</dxe:ComboBoxEdit>
</Grid>
</GroupBox>
<GroupBox Header="Wunschkriterien" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="1" Style="{StaticResource ObjectEditGroupBox}" Margin="0,10,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxe:ComboBoxEdit Margin="3" MinHeight="150" Width="300" x:Name="ComboWunschAnzeige" TextWrapping="Wrap" VerticalContentAlignment="Top" ImmediatePopup="True"
IncrementalFiltering="True" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Grid.ColumnSpan="2" IsKeyboardFocusWithinChanged="ComboWunschAnzeige_OnIsKeyboardFocusWithinChanged" >
<dxe:ComboBoxEdit.StyleSettings>
<dxe:TokenComboBoxStyleSettings NewTokenPosition="Far" EnableTokenWrapping="True" />
</dxe:ComboBoxEdit.StyleSettings>
<dxmvvm:Interaction.Behaviors>
<dxe:TokenEditorBehavior x:Name="tokenEditorBehavior" TokensChanged="TokenEditorWunschBehavior_OnTokensChanged"/>
</dxmvvm:Interaction.Behaviors>
</dxe:ComboBoxEdit>
</Grid>
</GroupBox>
<GroupBox Header="Ausschlusskriterien" Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="1" Style="{StaticResource ObjectEditGroupBox}" HorizontalAlignment="Left" Margin="0,10,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<dxe:ComboBoxEdit Margin="3" MinHeight="150" Width="300" x:Name="ComboAusschlussAnzeige" TextWrapping="Wrap" VerticalContentAlignment="Top" ImmediatePopup="True"
IncrementalFiltering="True" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Grid.ColumnSpan="2" IsKeyboardFocusWithinChanged="ComboAusschlussAnzeige_OnIsKeyboardFocusWithinChanged" >
<dxe:ComboBoxEdit.StyleSettings>
<dxe:TokenComboBoxStyleSettings NewTokenPosition="Far" EnableTokenWrapping="True" />
</dxe:ComboBoxEdit.StyleSettings>
<dxmvvm:Interaction.Behaviors>
<dxe:TokenEditorBehavior x:Name="tokenEditorAusschlussBehavior" TokensChanged="TokenEditorAusschlussBehavior_OnTokensChanged"/>
</dxmvvm:Interaction.Behaviors>
</dxe:ComboBoxEdit>
</Grid>
</GroupBox>
</Grid>
</ScrollViewer>
</ScrollViewer>
</localView:BeWoView>

View File

@@ -17,8 +17,6 @@ using BeWo.Core;
using BeWo.Core.Service;
using BeWo.ViewModel;
using BeWo.ServiceProxy;
using BeWo.View.Detail;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared;
using BS.Shared.Core;

View File

@@ -27,11 +27,9 @@ using System.Windows.Media.Imaging;
using BeWo.Controls;
using BeWo.Core;
using BeWo.Core.Service;
using BeWo.View.Detail;
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Editors;

View File

@@ -1,14 +1,16 @@
<UserControl x:Class="BeWo.SchulbegleitenderDienst.View.AbsenceTimeEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:viewModel="clr-namespace:BeWo.SchulbegleitenderDienst.ViewModel"
mc:Ignorable="d"
d:DataContext="{dxmvvm:ViewModelSource {x:Type viewModel:AbsenceTimeEditViewModel}}"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl
x:Class="BeWo.SchulbegleitenderDienst.View.AbsenceTimeEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModel="clr-namespace:BeWo.SchulbegleitenderDienst.ViewModel"
d:DataContext="{dxmvvm:ViewModelSource {x:Type viewModel:AbsenceTimeEditViewModel}}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<Grid>
<Grid Background="White">
<Grid.ColumnDefinitions>
@@ -18,36 +20,116 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Content="Von: " Grid.Row="0" Grid.Column="0" Margin="10,10,2,2" Height="23"/>
<Label Content="Bis: " Grid.Row="0" Grid.Column="2" Margin="10,10,2,2" Height="23"/>
<Label
Grid.Row="0"
Grid.Column="0"
Height="23"
Margin="10,10,2,2"
Content="Von: " />
<Label
Grid.Row="0"
Grid.Column="2"
Height="23"
Margin="10,10,2,2"
Content="Bis: " />
<dxe:DateEdit Grid.Row="0" Grid.Column="1" Width="125" x:Name="DateVon" Margin="2,10,2,2" Height="23" HorizontalAlignment="Left" ToolTipService.Placement="Mouse" EditValue="{Binding Path=StartDate, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" AllowNullInput="False" />
<dxe:DateEdit Grid.Row="0" Grid.Column="3" Width="125" x:Name="DateBis" Margin="2,10,10,2" Height="23" HorizontalAlignment="Left" ToolTipService.Placement="Mouse" EditValue="{Binding Path=EndDate, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" AllowNullInput="True" />
<dxe:DateEdit
x:Name="DateVon"
Grid.Row="0"
Grid.Column="1"
Width="125"
Height="23"
Margin="2,10,2,2"
HorizontalAlignment="Left"
AllowNullInput="False"
EditValue="{Binding Path=StartDate, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
ToolTipService.Placement="Mouse" />
<dxe:DateEdit
x:Name="DateBis"
Grid.Row="0"
Grid.Column="3"
Width="125"
Height="23"
Margin="2,10,10,2"
HorizontalAlignment="Left"
AllowNullInput="True"
EditValue="{Binding Path=EndDate, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
ToolTipService.Placement="Mouse" />
<CheckBox Grid.Row="0" Grid.Column="4" Margin="2,10,10,2" VerticalContentAlignment="Center" Foreground="Black" IsChecked="{Binding Path=IsAllDay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center">Ganztägig</CheckBox>
<CheckBox
Grid.Row="0"
Grid.Column="4"
Margin="2,10,10,2"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Foreground="Black"
IsChecked="{Binding Path=IsAllDay, UpdateSourceTrigger=PropertyChanged}">
Ganztägig
</CheckBox>
<dxe:TextEdit Grid.Column="1" Grid.Row="1" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True" x:Name="StartTimeTextEdit"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor"
Height="23" Visibility="{Binding Path=IsAllDay, Converter={StaticResource BoolVisibilityHiddenConverter}, ConverterParameter=false, UpdateSourceTrigger=PropertyChanged}" ValidateOnEnterKeyPressed="True" ValidateOnTextInput="True"
Margin="2,4,2,2" EditValue="{Binding Path=StartTime, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" ToolTipService.Placement="Mouse" />
<dxe:TextEdit
x:Name="StartTimeTextEdit"
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="2,4,2,2"
EditValue="{Binding Path=StartTime, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
InvalidValueBehavior="AllowLeaveEditor"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False"
ToolTipService.Placement="Mouse"
ValidateOnEnterKeyPressed="True"
ValidateOnTextInput="True"
Visibility="{Binding Path=IsAllDay, Converter={StaticResource BoolVisibilityHiddenConverter}, ConverterParameter=false, UpdateSourceTrigger=PropertyChanged}" />
<dxe:TextEdit Grid.Column="3" Grid.Row="1" MaskType="RegEx" Mask="(0?\d|1\d|2[0-3]):[0-5]\d" ShowError="False" MaskShowPlaceHolders="True" x:Name="EndTimeTextEdit"
MaskUseAsDisplayFormat="True" InvalidValueBehavior="AllowLeaveEditor"
Height="23" Visibility="{Binding Path=IsAllDay, Converter={StaticResource BoolVisibilityHiddenConverter}, ConverterParameter=false, UpdateSourceTrigger=PropertyChanged}" ValidateOnEnterKeyPressed="True" ValidateOnTextInput="True"
Margin="2,4,10,2" EditValue="{Binding Path=EndTime, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" ToolTipService.Placement="Mouse" />
<dxe:TextEdit
x:Name="EndTimeTextEdit"
Grid.Row="1"
Grid.Column="3"
Height="23"
Margin="2,4,10,2"
EditValue="{Binding Path=EndTime, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
InvalidValueBehavior="AllowLeaveEditor"
Mask="(0?\d|1\d|2[0-3]):[0-5]\d"
MaskShowPlaceHolders="True"
MaskType="RegEx"
MaskUseAsDisplayFormat="True"
ShowError="False"
ToolTipService.Placement="Mouse"
ValidateOnEnterKeyPressed="True"
ValidateOnTextInput="True"
Visibility="{Binding Path=IsAllDay, Converter={StaticResource BoolVisibilityHiddenConverter}, ConverterParameter=false, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="5" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Content="Übernehmen" Command="{Binding ValidateButtonCommand}" HorizontalAlignment="Right" Margin="2,10,2,4" Height="23" />
<Button Content="Schließen" Command="Close" HorizontalAlignment="Right" Margin="2,10,10,4" Height="23" />
<StackPanel
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="5"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Height="23"
Margin="2,10,2,4"
HorizontalAlignment="Right"
Command="{Binding ValidateButtonCommand}"
Content="Übernehmen" />
<Button
Height="23"
Margin="2,10,10,4"
HorizontalAlignment="Right"
Command="Close"
Content="Schließen" />
</StackPanel>
</Grid>
</Grid>

View File

@@ -19,7 +19,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingEnhancedService/GetXRechnung", ReplyAction="http://tempuri.org/IAccountingEnhancedService/GetXRechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAccountingEnhancedService/GetXRechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.MikePHPContracts.ApiResponse<System.Tuple<BS.Shared.DataContracts.StoredFileDC, byte[]>> GetXRechnung(long invoice_base_oid, int report_type, string report_url);
BS.Shared.DataContracts.ApiResponse<System.Tuple<BS.Shared.DataContracts.StoredFileDC, byte[]>> GetXRechnung(long invoice_base_oid, int report_type, string report_url);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -56,7 +56,7 @@ namespace BeWo.ServiceProxy
{
}
public BS.Shared.DataContracts.MikePHPContracts.ApiResponse<System.Tuple<BS.Shared.DataContracts.StoredFileDC, byte[]>> GetXRechnung(long invoice_base_oid, int report_type, string report_url)
public BS.Shared.DataContracts.ApiResponse<System.Tuple<BS.Shared.DataContracts.StoredFileDC, byte[]>> GetXRechnung(long invoice_base_oid, int report_type, string report_url)
{
return base.Channel.GetXRechnung(invoice_base_oid, report_type, report_url);
}

View File

@@ -31,7 +31,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/GetAiConversations", ReplyAction="http://tempuri.org/IAiEnhancedService/GetAiConversationsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/GetAiConversationsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationDC> GetAiConversations(int uicontext, System.Nullable<long> oid);
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationDC> GetAiConversations(BS.Shared.AiContextType uicontext, System.Nullable<long> oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/CreateAiConversation", ReplyAction="http://tempuri.org/IAiEnhancedService/CreateAiConversationResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/CreateAiConversationBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
@@ -46,13 +46,57 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/CloneAiConversationBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Feature.AI.AiConversationDC CloneAiConversation(long conversation_oid, System.Nullable<long> message_oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/UpdateAiConversationDisplayname", ReplyAction="http://tempuri.org/IAiEnhancedService/UpdateAiConversationDisplaynameResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/UpdateAiConversationDisplaynameBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
long UpdateAiConversationDisplayname(long oid, long version, string displayname);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/DeleteAiConversation", ReplyAction="http://tempuri.org/IAiEnhancedService/DeleteAiConversationResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/DeleteAiConversationBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteAiConversation(long conversation_oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/SendNewMessage", ReplyAction="http://tempuri.org/IAiEnhancedService/SendNewMessageResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/SendNewMessageBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.AiConversationMessageDC> SendNewMessage(long conversation, string message);
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC> SendNewMessage(long conversation, string message);
[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")]
bool CheckContextSize(BS.Shared.AiContextType aiContextType, System.Collections.Generic.Dictionary<BS.Shared.TableID, System.Collections.Generic.List<long>> context, System.Nullable<long> modell_oid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/GetAiPromptbausteinFolder", ReplyAction="http://tempuri.org/IAiEnhancedService/GetAiPromptbausteinFolderResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/GetAiPromptbausteinFolderBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> GetAiPromptbausteinFolder(BS.Shared.AiActionType aiActionType);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinFolder", ReplyAction="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinFolderResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinFolderBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> InsertAiPromptbausteinFolder(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> folders);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinPrompt", ReplyAction="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinPromptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/InsertAiPromptbausteinPromptBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> InsertAiPromptbausteinPrompt(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> prompts);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinFolder", ReplyAction="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinFolderResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinFolderBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> UpdateAiPromptbausteinFolder(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> folders);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinPrompt", ReplyAction="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinPromptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/UpdateAiPromptbausteinPromptBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> UpdateAiPromptbausteinPrompt(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> prompts);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinFolder", ReplyAction="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinFolderResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinFolderBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteAiPromptbausteinFolder(System.Collections.Generic.Dictionary<long, long> oid2version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinPrompt", ReplyAction="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinPromptResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/DeleteAiPromptbausteinPromptBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteAiPromptbausteinPrompt(System.Collections.Generic.Dictionary<long, long> oid2version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAiEnhancedService/ExecuteAiFunctionServiceRecordDocumentation" +
"", ReplyAction="http://tempuri.org/IAiEnhancedService/ExecuteAiFunctionServiceRecordDocumentation" +
"Response")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IAiEnhancedService/ExecuteAiFunctionServiceRecordDocumentation" +
"BeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords.AiFunctionDocResponse ExecuteAiFunctionServiceRecordDocumentation(BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords.AiFunctionDocRequest request);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -104,7 +148,7 @@ namespace BeWo.ServiceProxy
return base.Channel.GetAiModels();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationDC> GetAiConversations(int uicontext, System.Nullable<long> oid)
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationDC> GetAiConversations(BS.Shared.AiContextType uicontext, System.Nullable<long> oid)
{
return base.Channel.GetAiConversations(uicontext, oid);
}
@@ -124,14 +168,64 @@ namespace BeWo.ServiceProxy
return base.Channel.CloneAiConversation(conversation_oid, message_oid);
}
public long UpdateAiConversationDisplayname(long oid, long version, string displayname)
{
return base.Channel.UpdateAiConversationDisplayname(oid, version, displayname);
}
public void DeleteAiConversation(long conversation_oid)
{
base.Channel.DeleteAiConversation(conversation_oid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.AiConversationMessageDC> SendNewMessage(long conversation, string message)
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiConversationMessageDC> SendNewMessage(long conversation, string message)
{
return base.Channel.SendNewMessage(conversation, message);
}
public bool CheckContextSize(BS.Shared.AiContextType aiContextType, System.Collections.Generic.Dictionary<BS.Shared.TableID, System.Collections.Generic.List<long>> context, System.Nullable<long> modell_oid)
{
return base.Channel.CheckContextSize(aiContextType, context, modell_oid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> GetAiPromptbausteinFolder(BS.Shared.AiActionType aiActionType)
{
return base.Channel.GetAiPromptbausteinFolder(aiActionType);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> InsertAiPromptbausteinFolder(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> folders)
{
return base.Channel.InsertAiPromptbausteinFolder(folders);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> InsertAiPromptbausteinPrompt(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> prompts)
{
return base.Channel.InsertAiPromptbausteinPrompt(prompts);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> UpdateAiPromptbausteinFolder(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinFolderDC> folders)
{
return base.Channel.UpdateAiPromptbausteinFolder(folders);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> UpdateAiPromptbausteinPrompt(System.Collections.Generic.List<BS.Shared.DataContracts.Feature.AI.AiPromptbausteinPromptDC> prompts)
{
return base.Channel.UpdateAiPromptbausteinPrompt(prompts);
}
public void DeleteAiPromptbausteinFolder(System.Collections.Generic.Dictionary<long, long> oid2version)
{
base.Channel.DeleteAiPromptbausteinFolder(oid2version);
}
public void DeleteAiPromptbausteinPrompt(System.Collections.Generic.Dictionary<long, long> oid2version)
{
base.Channel.DeleteAiPromptbausteinPrompt(oid2version);
}
public BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords.AiFunctionDocResponse ExecuteAiFunctionServiceRecordDocumentation(BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords.AiFunctionDocRequest request)
{
return base.Channel.ExecuteAiFunctionServiceRecordDocumentation(request);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -17,99 +17,6 @@ namespace BeWo.ServiceProxy
public interface IEmployeeService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployee", ReplyAction="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployeeBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> FindLeadingCompactTeamsOfEmployee(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllGroupsCompact", ReplyAction="http://tempuri.org/IEmployeeService/GetAllGroupsCompactResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllGroupsCompactBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactGroupOfPeopleDC> GetAllGroupsCompact(System.Nullable<long> employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllGroups", ReplyAction="http://tempuri.org/IEmployeeService/GetAllGroupsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllGroupsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.GroupOfPeopleDC> GetAllGroups(System.Nullable<long> employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadCompactTeam", ReplyAction="http://tempuri.org/IEmployeeService/LoadCompactTeamResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadCompactTeamBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactTeamDC LoadCompactTeam(long pTeamOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadCompactEmployee", ReplyAction="http://tempuri.org/IEmployeeService/LoadCompactEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadCompactEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactEmployeeDC LoadCompactEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToAS", ReplyAction="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToASResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToASBeWoFaultF" +
"ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
bool IsAssessmentSheetEntryBelongingToAS(long assessmentSheetCategoryOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToAS", ReplyAction="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToASRespons" +
"e")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToASBeWoFau" +
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
bool IsAssessmentSheetCategoryBelongingToAS(long assessmentSheetCategoryOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployee", ReplyAction="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimesFromEmployee(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/GetAllOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimes();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/DeleteOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/DeleteOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/DeleteOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteOvertimes(System.Collections.Generic.Dictionary<long, long> pOid2Version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/InsertOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/InsertOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/InsertOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> InsertOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/UpdateOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/UpdateOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/UpdateOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> UpdateOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/GetAllAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> GetAllAuszahlungsarten();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/InsertAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/InsertAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/InsertAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> InsertAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/UpdateAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/UpdateAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/UpdateAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> UpdateAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/DeleteAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/DeleteAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/DeleteAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteAuszahlungsarten(System.Collections.Generic.Dictionary<long, long> pOid2Version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployee", ReplyAction="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> GetTeamOidsByEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployee", ReplyAction="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.EmployeeDC LoadLoggedOnEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompact", ReplyAction="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompactResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompactBeWoFaultFaul" +
"t", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetAllChatActiveEmployeesCompact();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodes", ReplyAction="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.EmployeeAPPCodeDC> GetAllEmployeeAppCodes(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetEmployeeImage", ReplyAction="http://tempuri.org/IEmployeeService/GetEmployeeImageResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetEmployeeImageBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
byte[] GetEmployeeImage(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetEmployeeThumbnail", ReplyAction="http://tempuri.org/IEmployeeService/GetEmployeeThumbnailResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetEmployeeThumbnailBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
byte[] GetEmployeeThumbnail(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/DeleteEmployeeCustomerRelationForEmployee", ReplyAction="http://tempuri.org/IEmployeeService/DeleteEmployeeCustomerRelationForEmployeeResp" +
"onse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/DeleteEmployeeCustomerRelationForEmployeeBeWo" +
@@ -305,6 +212,11 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadCompactTeamsByOidBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> LoadCompactTeamsByOid(System.Collections.Generic.List<long> teamOids);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployee", ReplyAction="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/FindLeadingCompactTeamsOfEmployeeBeWoFaultFau" +
"lt", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> FindLeadingCompactTeamsOfEmployee(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/ArchiveEmployee", ReplyAction="http://tempuri.org/IEmployeeService/ArchiveEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/ArchiveEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void ArchiveEmployee(long pOid, long pVersion);
@@ -582,6 +494,94 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/UpdateGroupOfPeople", ReplyAction="http://tempuri.org/IEmployeeService/UpdateGroupOfPeopleResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/UpdateGroupOfPeopleBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
long UpdateGroupOfPeople(BS.Shared.DataContracts.GroupOfPeopleDC pGroupOfPeople);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllGroupsCompact", ReplyAction="http://tempuri.org/IEmployeeService/GetAllGroupsCompactResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllGroupsCompactBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactGroupOfPeopleDC> GetAllGroupsCompact(System.Nullable<long> employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllGroups", ReplyAction="http://tempuri.org/IEmployeeService/GetAllGroupsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllGroupsBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.GroupOfPeopleDC> GetAllGroups(System.Nullable<long> employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadCompactTeam", ReplyAction="http://tempuri.org/IEmployeeService/LoadCompactTeamResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadCompactTeamBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactTeamDC LoadCompactTeam(long pTeamOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadCompactEmployee", ReplyAction="http://tempuri.org/IEmployeeService/LoadCompactEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadCompactEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.Compact.CompactEmployeeDC LoadCompactEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToAS", ReplyAction="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToASResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetEntryBelongingToASBeWoFaultF" +
"ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
bool IsAssessmentSheetEntryBelongingToAS(long assessmentSheetCategoryOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToAS", ReplyAction="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToASRespons" +
"e")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/IsAssessmentSheetCategoryBelongingToASBeWoFau" +
"ltFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
bool IsAssessmentSheetCategoryBelongingToAS(long assessmentSheetCategoryOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployee", ReplyAction="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllOvertimesFromEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimesFromEmployee(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/GetAllOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimes();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/DeleteOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/DeleteOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/DeleteOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteOvertimes(System.Collections.Generic.Dictionary<long, long> pOid2Version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/InsertOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/InsertOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/InsertOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> InsertOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/UpdateOvertimes", ReplyAction="http://tempuri.org/IEmployeeService/UpdateOvertimesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/UpdateOvertimesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> UpdateOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/GetAllAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> GetAllAuszahlungsarten();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/InsertAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/InsertAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/InsertAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> InsertAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/UpdateAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/UpdateAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/UpdateAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<long> UpdateAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/DeleteAuszahlungsarten", ReplyAction="http://tempuri.org/IEmployeeService/DeleteAuszahlungsartenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/DeleteAuszahlungsartenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteAuszahlungsarten(System.Collections.Generic.Dictionary<long, long> pOid2Version);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployee", ReplyAction="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetTeamOidsByEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> GetTeamOidsByEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployee", ReplyAction="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployeeResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/LoadLoggedOnEmployeeBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
BS.Shared.DataContracts.EmployeeDC LoadLoggedOnEmployee(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompact", ReplyAction="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompactResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllChatActiveEmployeesCompactBeWoFaultFaul" +
"t", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetAllChatActiveEmployeesCompact();
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodes", ReplyAction="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetAllEmployeeAppCodesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.List<BS.Shared.DataContracts.EmployeeAPPCodeDC> GetAllEmployeeAppCodes(long pEmployeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetEmployeeImage", ReplyAction="http://tempuri.org/IEmployeeService/GetEmployeeImageResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetEmployeeImageBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
byte[] GetEmployeeImage(long employeeOid);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IEmployeeService/GetEmployeeThumbnail", ReplyAction="http://tempuri.org/IEmployeeService/GetEmployeeThumbnailResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IEmployeeService/GetEmployeeThumbnailBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
byte[] GetEmployeeThumbnail(long employeeOid);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -618,116 +618,6 @@ namespace BeWo.ServiceProxy
{
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> FindLeadingCompactTeamsOfEmployee(long employeeOid)
{
return base.Channel.FindLeadingCompactTeamsOfEmployee(employeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactGroupOfPeopleDC> GetAllGroupsCompact(System.Nullable<long> employeeOid)
{
return base.Channel.GetAllGroupsCompact(employeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.GroupOfPeopleDC> GetAllGroups(System.Nullable<long> employeeOid)
{
return base.Channel.GetAllGroups(employeeOid);
}
public BS.Shared.DataContracts.Compact.CompactTeamDC LoadCompactTeam(long pTeamOid)
{
return base.Channel.LoadCompactTeam(pTeamOid);
}
public BS.Shared.DataContracts.Compact.CompactEmployeeDC LoadCompactEmployee(long pEmployeeOid)
{
return base.Channel.LoadCompactEmployee(pEmployeeOid);
}
public bool IsAssessmentSheetEntryBelongingToAS(long assessmentSheetCategoryOid)
{
return base.Channel.IsAssessmentSheetEntryBelongingToAS(assessmentSheetCategoryOid);
}
public bool IsAssessmentSheetCategoryBelongingToAS(long assessmentSheetCategoryOid)
{
return base.Channel.IsAssessmentSheetCategoryBelongingToAS(assessmentSheetCategoryOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimesFromEmployee(long employeeOid)
{
return base.Channel.GetAllOvertimesFromEmployee(employeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimes()
{
return base.Channel.GetAllOvertimes();
}
public void DeleteOvertimes(System.Collections.Generic.Dictionary<long, long> pOid2Version)
{
base.Channel.DeleteOvertimes(pOid2Version);
}
public System.Collections.Generic.List<long> InsertOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes)
{
return base.Channel.InsertOvertimes(pOvertimes);
}
public System.Collections.Generic.List<long> UpdateOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes)
{
return base.Channel.UpdateOvertimes(pOvertimes);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> GetAllAuszahlungsarten()
{
return base.Channel.GetAllAuszahlungsarten();
}
public System.Collections.Generic.List<long> InsertAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten)
{
return base.Channel.InsertAuszahlungsarten(pAuszahlungsarten);
}
public System.Collections.Generic.List<long> UpdateAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten)
{
return base.Channel.UpdateAuszahlungsarten(pAuszahlungsarten);
}
public void DeleteAuszahlungsarten(System.Collections.Generic.Dictionary<long, long> pOid2Version)
{
base.Channel.DeleteAuszahlungsarten(pOid2Version);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> GetTeamOidsByEmployee(long pEmployeeOid)
{
return base.Channel.GetTeamOidsByEmployee(pEmployeeOid);
}
public BS.Shared.DataContracts.EmployeeDC LoadLoggedOnEmployee(long pEmployeeOid)
{
return base.Channel.LoadLoggedOnEmployee(pEmployeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetAllChatActiveEmployeesCompact()
{
return base.Channel.GetAllChatActiveEmployeesCompact();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.EmployeeAPPCodeDC> GetAllEmployeeAppCodes(long pEmployeeOid)
{
return base.Channel.GetAllEmployeeAppCodes(pEmployeeOid);
}
public byte[] GetEmployeeImage(long employeeOid)
{
return base.Channel.GetEmployeeImage(employeeOid);
}
public byte[] GetEmployeeThumbnail(long employeeOid)
{
return base.Channel.GetEmployeeThumbnail(employeeOid);
}
public void DeleteEmployeeCustomerRelationForEmployee(long employeeOid)
{
base.Channel.DeleteEmployeeCustomerRelationForEmployee(employeeOid);
@@ -943,6 +833,11 @@ namespace BeWo.ServiceProxy
return base.Channel.LoadCompactTeamsByOid(teamOids);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> FindLeadingCompactTeamsOfEmployee(long employeeOid)
{
return base.Channel.FindLeadingCompactTeamsOfEmployee(employeeOid);
}
public void ArchiveEmployee(long pOid, long pVersion)
{
base.Channel.ArchiveEmployee(pOid, pVersion);
@@ -1262,5 +1157,110 @@ namespace BeWo.ServiceProxy
{
return base.Channel.UpdateGroupOfPeople(pGroupOfPeople);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactGroupOfPeopleDC> GetAllGroupsCompact(System.Nullable<long> employeeOid)
{
return base.Channel.GetAllGroupsCompact(employeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.GroupOfPeopleDC> GetAllGroups(System.Nullable<long> employeeOid)
{
return base.Channel.GetAllGroups(employeeOid);
}
public BS.Shared.DataContracts.Compact.CompactTeamDC LoadCompactTeam(long pTeamOid)
{
return base.Channel.LoadCompactTeam(pTeamOid);
}
public BS.Shared.DataContracts.Compact.CompactEmployeeDC LoadCompactEmployee(long pEmployeeOid)
{
return base.Channel.LoadCompactEmployee(pEmployeeOid);
}
public bool IsAssessmentSheetEntryBelongingToAS(long assessmentSheetCategoryOid)
{
return base.Channel.IsAssessmentSheetEntryBelongingToAS(assessmentSheetCategoryOid);
}
public bool IsAssessmentSheetCategoryBelongingToAS(long assessmentSheetCategoryOid)
{
return base.Channel.IsAssessmentSheetCategoryBelongingToAS(assessmentSheetCategoryOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimesFromEmployee(long employeeOid)
{
return base.Channel.GetAllOvertimesFromEmployee(employeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> GetAllOvertimes()
{
return base.Channel.GetAllOvertimes();
}
public void DeleteOvertimes(System.Collections.Generic.Dictionary<long, long> pOid2Version)
{
base.Channel.DeleteOvertimes(pOid2Version);
}
public System.Collections.Generic.List<long> InsertOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes)
{
return base.Channel.InsertOvertimes(pOvertimes);
}
public System.Collections.Generic.List<long> UpdateOvertimes(System.Collections.Generic.List<BS.Shared.DataContracts.OvertimeDC> pOvertimes)
{
return base.Channel.UpdateOvertimes(pOvertimes);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> GetAllAuszahlungsarten()
{
return base.Channel.GetAllAuszahlungsarten();
}
public System.Collections.Generic.List<long> InsertAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten)
{
return base.Channel.InsertAuszahlungsarten(pAuszahlungsarten);
}
public System.Collections.Generic.List<long> UpdateAuszahlungsarten(System.Collections.Generic.List<BS.Shared.DataContracts.AuszahlungsartDC> pAuszahlungsarten)
{
return base.Channel.UpdateAuszahlungsarten(pAuszahlungsarten);
}
public void DeleteAuszahlungsarten(System.Collections.Generic.Dictionary<long, long> pOid2Version)
{
base.Channel.DeleteAuszahlungsarten(pOid2Version);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactTeamDC> GetTeamOidsByEmployee(long pEmployeeOid)
{
return base.Channel.GetTeamOidsByEmployee(pEmployeeOid);
}
public BS.Shared.DataContracts.EmployeeDC LoadLoggedOnEmployee(long pEmployeeOid)
{
return base.Channel.LoadLoggedOnEmployee(pEmployeeOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.Compact.CompactEmployeeDC> GetAllChatActiveEmployeesCompact()
{
return base.Channel.GetAllChatActiveEmployeesCompact();
}
public System.Collections.Generic.List<BS.Shared.DataContracts.EmployeeAPPCodeDC> GetAllEmployeeAppCodes(long pEmployeeOid)
{
return base.Channel.GetAllEmployeeAppCodes(pEmployeeOid);
}
public byte[] GetEmployeeImage(long employeeOid)
{
return base.Channel.GetEmployeeImage(employeeOid);
}
public byte[] GetEmployeeThumbnail(long employeeOid)
{
return base.Channel.GetEmployeeThumbnail(employeeOid);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -17,18 +17,6 @@ namespace BeWo.ServiceProxy
public interface IResourceService
{
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultiple", ReplyAction="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultipleRespon" +
"se")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultipleBeWoFa" +
"ultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool> OverlappingAppointmentsExistForMultiple(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinder", ReplyAction="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderRespo" +
"nse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderBeWoF" +
"aultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/DeactivateResource", ReplyAction="http://tempuri.org/IResourceService/DeactivateResourceResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/DeactivateResourceBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeactivateResource(long pOid, long pVersion);
@@ -327,6 +315,18 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/DeleteOrUpdateSchedulerAppointmentsBeWoFaultF" +
"ault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
void DeleteOrUpdateSchedulerAppointments(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments2DeleteOrUpdate);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultiple", ReplyAction="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultipleRespon" +
"se")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/OverlappingAppointmentsExistForMultipleBeWoFa" +
"ultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool> OverlappingAppointmentsExistForMultiple(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinder", ReplyAction="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderRespo" +
"nse")]
[System.ServiceModel.FaultContractAttribute(typeof(BS.Shared.Core.BeWoFault), Action="http://tempuri.org/IResourceService/FindAppointmentsInRangeForIntervalFinderBeWoF" +
"aultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BS.Shared.Core")]
System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -363,16 +363,6 @@ namespace BeWo.ServiceProxy
{
}
public System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool> OverlappingAppointmentsExistForMultiple(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments)
{
return base.Channel.OverlappingAppointmentsExistForMultiple(appointments);
}
public System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends)
{
return base.Channel.FindAppointmentsInRangeForIntervalFinder(duration, startDate, endDate, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, intervalBuffer, skipWeekends);
}
public void DeactivateResource(long pOid, long pVersion)
{
base.Channel.DeactivateResource(pOid, pVersion);
@@ -692,5 +682,15 @@ namespace BeWo.ServiceProxy
{
base.Channel.DeleteOrUpdateSchedulerAppointments(appointments2DeleteOrUpdate);
}
public System.Collections.Generic.Dictionary<BS.Shared.DataContracts.SchedulerAppointmentDC, bool> OverlappingAppointmentsExistForMultiple(System.Collections.Generic.List<BS.Shared.DataContracts.SchedulerAppointmentDC> appointments)
{
return base.Channel.OverlappingAppointmentsExistForMultiple(appointments);
}
public System.Collections.Generic.Dictionary<BS.Shared.Core.DateTimeSpan, System.Collections.Generic.Dictionary<System.DateTime, bool>> FindAppointmentsInRangeForIntervalFinder(int duration, System.DateTime startDate, System.DateTime endDate, System.Collections.Generic.List<long> resourceOids, System.Collections.Generic.List<long> customerOids, System.Collections.Generic.List<long> employeeOids, long loggedInEmployeeOid, int intervalBuffer, bool skipWeekends)
{
return base.Channel.FindAppointmentsInRangeForIntervalFinder(duration, startDate, endDate, resourceOids, customerOids, employeeOids, loggedInEmployeeOid, intervalBuffer, skipWeekends);
}
}
}

View File

@@ -68,7 +68,6 @@ namespace BeWo.ServiceProxy
{ typeof(IAiEnhancedService), new EndpointAddress(_ServerName + "AiEnhancedService.svc") },
{ typeof(IAccountingEnhancedService), new EndpointAddress(_ServerName + "AccountingEnhancedService.svc") }
};
}
static ServiceFacade()
@@ -96,6 +95,8 @@ namespace BeWo.ServiceProxy
=> DoAsync<AiEnhancedServiceClient, IAiEnhancedService>(pAction, pCallback, pErrorCallback, showWaitDialog, caller?.Dispatcher);
public static void DoAiEnhancedServiceAsnyc<T>(Func<IAiEnhancedService, T> pFunc, Action<T> pCallback = null, Action<Exception> pErrorCallback = null, bool showWaitDialog = true, UserControl caller = null)
=> DoAsync<AiEnhancedServiceClient, IAiEnhancedService, T>(pFunc, pCallback, pErrorCallback, showWaitDialog, caller?.Dispatcher);
public static void DoMultipleAiEnhancedServicesAsync(List<Action<IAiEnhancedService>> pActions, Action pAllDoneCallBack)
=> DoMulitpleAsync<AiEnhancedServiceClient, IAiEnhancedService>(pActions, pAllDoneCallBack, true);
#endregion
#region OperationsEnhancedService

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Services
{
public class AiWindowService
{
}
}

View File

@@ -1,6 +1,7 @@
using BeWo.View.Controls;
using BeWo.View.Detail.AI;
using BeWo.ViewModel;
using BeWo.ViewModel.View.AI;
using BeWo.ViewModel.Light;
using BS.Shared;
using System;
@@ -14,16 +15,13 @@ using System.Windows.Controls;
namespace BeWo.Services
{
internal class BeWoControlFactory : IControlFactory
public class BeWoControlFactory
{
public Control GetAiConversationControl(UIContext uIContext, Dictionary<TableID, long[]> context, long? reference_oid = null)
public Control GetAiConversationControl(AiConversationChatViewModel vm)
{
var styleString = getStyleString(uIContext);
var control = styleString is object ? new AiConversationChatView(styleString) : new AiConversationChatView();
var styleString = getStyleString(vm.AiContext);
control.ViewModel.UIContext = (int)uIContext;
control.ViewModel.ReferenceObjectOid = reference_oid;
control.ViewModel.ContextBeWoObjects = context;
var control = styleString is object ? new AiConversationChatView(vm, styleString) : new AiConversationChatView(vm);
return control;
}
@@ -54,48 +52,18 @@ namespace BeWo.Services
return control;
}
private string getStyleString(UIContext uIContext) {
private string getStyleString(AiContextType uIContext) {
switch (uIContext)
{
case UIContext.SupportConcept: return "ModuleAiControlSupportConceptStyle";
case UIContext.Customer: return "ModuleAiControlCustomerStyle";
case UIContext.Person: return "ModuleAiControlPersonStyle";
case UIContext.Employee: return "ModuleAiControlEmployeeStyle";
case UIContext.Organisation: return "ModuleAiControlOrganisationStyle";
case UIContext.Team:
break;
case UIContext.Dokumente:
break;
case UIContext.User:
break;
case UIContext.UserGroup:
break;
case UIContext.Report:
break;
case UIContext.Scheduler:
break;
case UIContext.Wohnheim:
break;
case UIContext.Vertretungen:
break;
case UIContext.CustomerTeam:
break;
case UIContext.Scheduling:
break;
case UIContext.Finance:
break;
case UIContext.Administration:
break;
case UIContext.AiConversation:
break;
case UIContext.AiConversationPopup:
break;
case UIContext.ServiceRecord: return "ModuleAiControlZeiterfassungStyle";
case UIContext.CustomerSingle: return "ModuleAiControlCustomerStyle";
case UIContext.PersonSingle: return "ModuleAiControlPersonStyle";
case UIContext.EmployeeSingle: return "ModuleAiControlEmployeeStyle";
case AiContextType.SupportConceptNavigation: return "ModuleAiControlSupportConceptStyle";
case AiContextType.CustomerNavigation: return "ModuleAiControlCustomerStyle";
case AiContextType.PersonNavigation: return "ModuleAiControlPersonStyle";
case AiContextType.EmployeeNavigation: return "ModuleAiControlEmployeeStyle";
case AiContextType.OrganisationNavigation: return "ModuleAiControlOrganisationStyle";
case AiContextType.ServiceRecord: return "ModuleAiControlZeiterfassungStyle";
case AiContextType.CustomerDetail: return "ModuleAiControlCustomerStyle";
case AiContextType.PersonDetail: return "ModuleAiControlPersonStyle";
case AiContextType.EmployeeDetail: return "ModuleAiControlEmployeeStyle";
}
return null;

View File

@@ -1,8 +1,9 @@
using BeWo.View.Detail.AI;
using BeWo.View.Windows;
using BeWo.View.Windows;
using BeWo.ViewModel.View.AI;
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BS.Shared;
using DevExpress.Mvvm.Native;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -14,9 +15,33 @@ using System.Windows.Controls.Primitives;
namespace BeWo.Services
{
internal class BeWoWindowFactory : IWindowFactory
public class BeWoWindowFactory
{
public AnimatedBeWoWindow GetAnimatedBeWoWindow(string title, Control control, double? height, double? width)
private Dictionary<AiContextType, string> _UIContext2Header = new Dictionary<AiContextType, string>()
{
{AiContextType.ServiceRecord, "KI Chat: Zeiterfassung" },
{AiContextType.CustomerNavigation, "KI Chat: Klienten Übersicht" },
{AiContextType.PersonNavigation, "KI Chat: Personen Übersicht" },
{AiContextType.EmployeeNavigation, "KI Chat: Mitarbeiter Übersicht" },
{AiContextType.OrganisationNavigation, "KI Chat: Organisation Übersicht" },
{AiContextType.SupportConceptNavigation, "KI Chat: Hilfeplan Übersicht" },
{AiContextType.CustomerDetail, "KI Chat: Klient" },
};
public Control GetModalViewWindow(string title, Control control, double height = 600, double width = 1200)
{
var popup = new GroupBox();
popup.Style = Application.Current.FindResource("PopUpWindowStyle") as Style;
popup.Header = title;
popup.Content = control;
popup.Height = height;
popup.Width = width;
return popup;
}
public AnimatedBeWoWindow GetAnimatedBeWoWindow(string title, Control control, double? height = 600, double? width = 1200)
{
var beWoWindow = new AnimatedBeWoWindow();
@@ -39,45 +64,17 @@ namespace BeWo.Services
return beWoWindow;
}
public Control GetGenericModalViewWindow(string title, Control control, double? height , double? width)
{
var popup = new GroupBox();
popup.Style = Application.Current.FindResource("PopUpWindowStyle") as Style;
popup.Header = title;
popup.Content = control;
if(height is double h)
popup.Height = h;
if (width is double w)
popup.Width= w;
return popup;
}
public Dictionary<UIContext, string> UIContext2Header { get; set; } = new Dictionary<UIContext, string>()
{
{UIContext.ServiceRecord, "KI Chat: Zeiterfassung" },
{UIContext.Customer, "KI Chat: Klienten Übersicht" },
{UIContext.Person, "KI Chat: Personen Übersicht" },
{UIContext.Employee, "KI Chat: Mitarbeiter Übersicht" },
{UIContext.Organisation, "KI Chat: Organisation Übersicht" },
{UIContext.SupportConcept, "KI Chat: Hilfeplan Übersicht" },
{UIContext.CustomerSingle, "KI Chat: Klient" },
};
public string GetAiTitle(UIContext context)
{
if (UIContext2Header.TryGetValue(context, out string title))
return title;
return "default";
}
public string GetGkvTitle(GkvAbrechnungLightVM vm)
{
return "GKV-Abrechnung Nr. " + vm.Oid;
}
public string GetAiTitle(AiContextType aiContextType)
{
if (_UIContext2Header.TryGetValue(aiContextType, out string str))
return str;
return "default";
}
}
}

View File

@@ -1,7 +1,9 @@
using BeWo.View.Controls;
using BeWo.View;
using BeWo.View;
using BeWo.View.Detail.AI;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BeWo.ViewModel.View.Administration;
using BeWo.ViewModel.View.AI;
using BS.Shared;
using System;
using System.Collections.Generic;
@@ -15,118 +17,181 @@ using System.Windows.Controls;
using System.Windows.Input;
using System.ComponentModel;
using BeWo.ViewModel.Light;
using static DevExpress.Drawing.Internal.Fonts.DXFontMetrics;
using BeWo.ViewModel.View;
using System.Windows.Controls.Primitives;
using static DevExpress.XtraPrinting.Native.ExportOptionsPropertiesNames;
using DevExpress.Mvvm.Native;
using BeWo.ViewModel.View.Gkv;
namespace BeWo.Services
{
internal class BeWoWindowService : IWindowService
public class BeWoWindowOptions
{
private readonly IWindowFactory _windowFactory;
private readonly IControlFactory _controlFactory;
public bool ShowAsModal { get; set; } = false;
public bool ShowAsDialog { get; set; } = true;
public BeWoWindowService(IWindowFactory builder, IControlFactory controlFactory)
public double Height { get; set; } = 600;
public double Width { get; set; } = 400;
}
public class BeWoWindowService : IBeWoWindowService
{
private readonly BeWoWindowFactory _windowFactory;
private readonly BeWoControlFactory _controlFactory;
public BeWoWindowService(BeWoWindowFactory builder, BeWoControlFactory controlFactory)
{
_windowFactory = builder;
_controlFactory = controlFactory;
}
public void ShowAiConversationWindow(UIContext uIContext, Dictionary<TableID, long[]> bewoObjects, long? reference_oid, double height, double width)
public void Show<T>(T windowViewModel) where T : WindowViewModel
{
//#if !DEBUG
// BeWoApp.ShowInfoMessage("Diese Funktion befindet sich in der Testphase.");
// return;
//#endif
ShowWindowDialog(
wf => wf.GetAiTitle(uIContext),
cf => cf.GetAiConversationControl(uIContext, bewoObjects, reference_oid),
height, width);
if(windowViewModel is AiConversationChatViewModel viewModel)
{
ShowAiConversationWindow(viewModel);
}
else if (windowViewModel is AiPromptbausteinFolderViewModel viewModel3)
{
ShowAiPromptbausteinFolderPopup(viewModel3);
}
else if(windowViewModel is AiPromptbausteinPromptViewModel viewModel4)
{
ShowAiPromptbausteinPromptPopup(viewModel4);
}
else if(windowViewModel is AiPromptbausteinActionResultViewModel viewModel5)
{
ShowAiPromptbausteinActionResultPopup(viewModel5);
}
else if(windowViewModel is AiPromptbausteinSelectionComplexViewModel viewModel6)
{
ShowAiPromptbausteinSelectionComplexPopup(viewModel6);
}
else
{
throw new NotImplementedException($"type not implemented: {typeof(T)}");
}
}
public void ShowAiConversationModalViewWindow(UIContext uIContext, Dictionary<TableID, long[]> bewoObjects, long? reference_oid, double height, double width)
{
//#if !DEBUG
// BeWoApp.ShowInfoMessage("Diese Funktion befindet sich in der Testphase.");
// return;
//#endif
ShowModalViewWindow(
wf => wf.GetAiTitle(uIContext),
cf => cf.GetAiConversationControl(uIContext, bewoObjects, reference_oid),
height, width);
public void ShowAiConversationWindow(AiConversationChatViewModel viewModel)
{
var control = _controlFactory.GetAiConversationControl(viewModel);
var title = _windowFactory.GetAiTitle(viewModel.AiContext);
var options = new BeWoWindowOptions()
{
Height = 600,
Width = 1200
};
Show(title, control, viewModel, options);
}
public void ShowAiPromptbausteinFolderPopup(AiPromptbausteinFolderViewModel viewModel)
{
var control = new AiPromptbausteinFolderView(viewModel);
var options = new BeWoWindowOptions()
{
Height = 400,
Width = 600
};
Show("KI Promptbaustein Ordner", control, viewModel, options);
}
public void ShowAiPromptbausteinPromptPopup(AiPromptbausteinPromptViewModel viewModel)
{
var control = new AiPromptbausteinPromptView(viewModel);
var options = new BeWoWindowOptions()
{
Height = 400,
Width = 600
};
Show("KI Promptbaustein Prompt", control, viewModel, options);
}
public void ShowAiPromptbausteinActionResultPopup(AiPromptbausteinActionResultViewModel viewModel)
{
var control = new AiPromptbausteinActionResultView(viewModel);
var options = new BeWoWindowOptions()
{
Height = 400,
Width = 600
};
Show("KI Promptbaustein Ergebnis", control, viewModel, options);
}
public void ShowAiPromptbausteinSelectionComplexPopup(AiPromptbausteinSelectionComplexViewModel viewModel)
{
var control = new AiPromptbausteinComplexSelectionView(viewModel);
var options = new BeWoWindowOptions()
{
Height = 400,
Width = 600
};
Show("KI Promptbaustein Auswahl", control, viewModel, options);
}
public void ShowGkvAbrechnungDetailWindow(GkvAbrechnungDialogViewModel vm)
{
var control = _controlFactory.GetGkvAbrechnungDetailControl(vm.Abrechnung);
var title = _windowFactory.GetGkvTitle(vm.Abrechnung);
var options = new BeWoWindowOptions()
{
Height = 900,
Width = 600
};
Show(title, control, vm, options);
}
public void ShowERechnungWindow(MemoryStream pdf)
{
ShowWindowDialog(
"E-Rechnung",
cf => cf.GetPdfViewer(pdf));
var control = _controlFactory.GetPdfViewer(pdf);
var options = new BeWoWindowOptions();
Show("E-Rechnung", control, null, options);
}
public void ShowERechnungModalViewWindow(MemoryStream pdf)
public void ShowTextViewerWindow(string title, string text, BeWoWindowOptions pOptions = null)
{
ShowModalViewWindow(
"E-Rechnung",
cf => cf.GetPdfViewer(pdf));
if(pOptions is null)
pOptions = new BeWoWindowOptions();
var control = _controlFactory.GetTextViewer(text);
Show(title, control, null, pOptions);
}
public void ShowTextViewerWindow(string title, string text, double height, double width)
public void ShowPdfViewerWindow(string title, MemoryStream pdf, BeWoWindowOptions pOptions = null)
{
ShowWindowDialog(
title,
cf => cf.GetTextViewer(text),
height, width);
if (pOptions is null)
pOptions = new BeWoWindowOptions();
var control = _controlFactory.GetPdfViewer(pdf);
Show(title, control, null, pOptions);
}
public void ShowPdfViewerWindow(string title, MemoryStream pdf, double height = 900, double width = 600)
private void Show(string title, Control control, WindowViewModel windowViewModel, BeWoWindowOptions options)
{
ShowWindowDialog(title,
cf => cf.GetPdfViewer(pdf),
height, width);
}
if (options.ShowAsModal)
{
var modal = _windowFactory.GetModalViewWindow(title, control, options.Height, options.Width);
modal.CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => BeWoApp.MainControl.CloseCurrentPopUp()));
BeWoApp.MainControl.ShowControlAsModalPopup(modal);
}
else
{
var window = _windowFactory.GetAnimatedBeWoWindow(title, control, options.Height, options.Width);
public void ShowPdfViewerModalViewWindow(string title, MemoryStream pdf)
{
ShowModalViewWindow(title,
cf => cf.GetPdfViewer(pdf));
}
if(windowViewModel is DialogViewModel dialogViewModel)
{
dialogViewModel.RequestClose += (s, e) => window.Close();
}
public void ShowGkvAbrechnungDetailWindow(GkvAbrechnungLightVM vm, CancelEventHandler cancelEvent, double height, double width)
{
// Kleiner Hack
// - Ggf WindowFactory kapselt Zuorgnudn von Control zu Window
var title = _windowFactory.GetGkvTitle(vm);
var control = _controlFactory.GetGkvAbrechnungDetailControl(vm);
var window = _windowFactory.GetAnimatedBeWoWindow(title, control, height, width);
window.Closing += cancelEvent;
window.ShowDialog();
}
private void ShowWindow(Func<IWindowFactory, string> getTitle, Func<IControlFactory, Control> getControl, double height, double width)
=> ShowWindow(getTitle(_windowFactory), getControl, height, width);
private void ShowWindowDialog(Func<IWindowFactory, string> getTitle, Func<IControlFactory, Control> getControl, double? height = null, double? width = null)
=> ShowWindowDialog(getTitle(_windowFactory), getControl, height, width);
private void ShowModalViewWindow(Func<IWindowFactory, string> getTitle, Func<IControlFactory, Control> getControl, double? height = null, double? width = null)
=> ShowModalViewWindow(getTitle(_windowFactory), getControl, height, width);
private void ShowWindow(string title, Func<IControlFactory, Control> getControl, double? height = null, double? width = null)
{
var control = getControl(_controlFactory);
var window = _windowFactory.GetAnimatedBeWoWindow(title, control, height, width);
window.Show();
}
private void ShowWindowDialog(string title, Func<IControlFactory, Control> getControl, double? height = null, double? width = null)
{
var control = getControl(_controlFactory);
var window = _windowFactory.GetAnimatedBeWoWindow(title, control, height, width);
window.ShowDialog();
}
private void ShowModalViewWindow(string title, Func<IControlFactory, Control> getControl, double? height = null, double? width = null)
{
var control = getControl(_controlFactory);
var window = _windowFactory.GetGenericModalViewWindow(title, control, height, width);
window.CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) => BeWoApp.MainControl.CloseCurrentPopUp()));
BeWoApp.MainControl.ShowControlAsModalPopup(window);
if (options.ShowAsDialog)
{
window.ShowDialog();
}
else
{
throw new NotImplementedException();
window.Show();
}
}
}
}
}

View File

@@ -0,0 +1,38 @@
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BeWo.ViewModel.View;
using BeWo.ViewModel.View.Administration;
using BeWo.ViewModel.View.AI;
using BeWo.ViewModel.View.Gkv;
using BS.Shared;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.Services
{
public interface IBeWoWindowService
{
#region special
void ShowAiConversationWindow(AiConversationChatViewModel viewModel);
void ShowGkvAbrechnungDetailWindow(GkvAbrechnungDialogViewModel vm);
#endregion
#region base extended
void ShowERechnungWindow(MemoryStream pdf);
#endregion
#region base
void ShowTextViewerWindow(string title, string text, BeWoWindowOptions pOptions = null);
void ShowPdfViewerWindow(string title, MemoryStream pdf, BeWoWindowOptions pOptions = null);
#endregion
void Show<T>(T windowViewModel) where T : WindowViewModel;
}
}

View File

@@ -1,27 +0,0 @@
using BeWo.View.Controls;
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BS.Shared;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.Services
{
internal interface IControlFactory
{
Control GetAiConversationControl(UIContext uIContext, Dictionary<TableID, long[]> context, long? reference_oid = null);
PdfViewer GetPdfViewer(MemoryStream ms);
PdfViewer GetPdfViewer(byte[] bytes);
TextViewer GetTextViewer(string text);
GkvAbrechnungDetailControl GetGkvAbrechnungDetailControl(GkvAbrechnungLightVM vm);
}
}

View File

@@ -1,23 +0,0 @@
using BeWo.View.Windows;
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.Services
{
internal interface IWindowFactory
{
AnimatedBeWoWindow GetAnimatedBeWoWindow(string title, Control control, double? height = null, double? width = null);
Control GetGenericModalViewWindow(string title, Control control, double? height = null, double? width = null);
string GetAiTitle(UIContext context);
string GetGkvTitle(GkvAbrechnungLightVM vm);
}
}

View File

@@ -1,37 +0,0 @@
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BS.Shared;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.Services
{
internal interface IWindowService
{
#region special
void ShowAiConversationWindow(UIContext uIContext, Dictionary<TableID, long[]> bewoObjects, long? reference_oid = null, double height = 600, double width = 1200);
void ShowAiConversationModalViewWindow(UIContext uIContext, Dictionary<TableID, long[]> bewoObjects, long? reference_oid = null, double height = 600, double width = 1200);
void ShowGkvAbrechnungDetailWindow(GkvAbrechnungLightVM vm, CancelEventHandler cancelEvent, double height = 900, double width = 600);
#endregion
#region base extended
void ShowERechnungWindow(MemoryStream pdf);
void ShowERechnungModalViewWindow(MemoryStream pdf);
#endregion
#region base
void ShowTextViewerWindow(string title, string text, double height = 900, double width = 600);
void ShowPdfViewerWindow(string title, MemoryStream pdf, double height = 900, double width = 600);
void ShowPdfViewerModalViewWindow(string title, MemoryStream pdf);
#endregion
}
}

View File

@@ -112,11 +112,11 @@
<Color x:Key="ModuleAiControlZeiterfassungNavigationHeaderColor">#FF5C1919</Color>
<Color x:Key="ModuleAiControlZeiterfassungNavigationContentColor">#FF993B3B</Color>
<Color x:Key="ModuleAiControlZeiterfassungNavigationContentColor2">#FF5C1919</Color>
<Color x:Key="ModuleAiControlZeiterfassungNavigationContentColor2">#FF893535</Color>
<Color x:Key="ModuleAiControlSupportConceptNavigationHeaderColor">#FF5C1919</Color>
<Color x:Key="ModuleAiControlSupportConceptNavigationContentColor">#FF993B3B</Color>
<Color x:Key="ModuleAiControlSupportConceptNavigationContentColor2">#FF5C1919</Color>
<Color x:Key="ModuleAiControlSupportConceptNavigationContentColor2">#FF893535</Color>
<Color x:Key="ModuleAiControlCustomerNavigationHeaderColor">#FF19485C</Color>
<Color x:Key="ModuleAiControlCustomerNavigationContentColor">#FF3B7799</Color>

View File

@@ -230,6 +230,85 @@
</Setter.Value>
</Setter>
</Style>
<Style
x:Key="PopupToolbarButtonSmallStyle"
BasedOn="{StaticResource HideDisabledButton}"
TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="#FFFFFFFF" />
<Setter Property="FontWeight" Value="Medium" />
<Setter Property="FontSize" Value="16" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<ControlTemplate.Resources>
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames
AccelerationRatio="1"
BeginTime="00:00:00"
Storyboard.TargetName="contentPresenter"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
Duration="00:00:00.2">
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1.15" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames
AccelerationRatio="1"
BeginTime="00:00:00"
Storyboard.TargetName="contentPresenter"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"
Duration="00:00:00.2">
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1.15" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Storyboard2">
<DoubleAnimationUsingKeyFrames
BeginTime="00:00:00"
DecelerationRatio="1"
Storyboard.TargetName="contentPresenter"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
Duration="00:00:00.2">
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames
BeginTime="00:00:00"
DecelerationRatio="1"
Storyboard.TargetName="contentPresenter"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"
Duration="00:00:00.2">
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<ContentPresenter
x:Name="contentPresenter"
Width="Auto"
Margin="3,0,3,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5">
<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>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.ExitActions>
<BeginStoryboard x:Name="Storyboard2_BeginStoryboard" Storyboard="{StaticResource Storyboard2}" />
</Trigger.ExitActions>
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard1}" />
</Trigger.EnterActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- EndRegion -->
<!-- Region Weiße Buttons im MainNavigationView -->
@@ -314,4 +393,52 @@
<Setter Property="FontSize" Value="16" />
</Style>
<!-- EndRegion -->
<Style
x:Key="ButtonPreviousStyle"
BasedOn="{StaticResource HideDisabledButton}"
TargetType="{x:Type Button}">
<Setter Property="Width" Value="25" />
<Setter Property="Height" Value="25" />
<Setter Property="Margin" Value="3" />
<Setter Property="Content">
<Setter.Value>
<Image
Width="20"
Height="18"
Margin="0,3,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Source="..\..\Ressources\Icons\Undo.png" />
</Setter.Value>
</Setter>
</Style>
<Style
x:Key="ButtonRedoStyle"
BasedOn="{StaticResource HideDisabledButton}"
TargetType="{x:Type Button}">
<Setter Property="Width" Value="25" />
<Setter Property="Height" Value="25" />
<Setter Property="Margin" Value="3" />
<Setter Property="Content">
<Setter.Value>
<Image
Width="20"
Height="18"
Margin="0,3,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Source="..\..\Ressources\Icons\Undo.png" />
</Setter.Value>
</Setter>
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<ScaleTransform ScaleX="-1" />
<TranslateTransform X="25" />
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View File

@@ -16,4 +16,19 @@
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Margin" Value="3,-6,3,6" />
</Style>
<Style
x:Key="PopupWhiteLabel"
BasedOn="{StaticResource BaseLabel}"
TargetType="Label">
<Setter Property="Foreground" Value="{DynamicResource TextForegroundPrimary}" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontWeight" Value="Medium" />
<Setter Property="FontSize" Value="12" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource TextForegroundSecondary}" />
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>

View File

@@ -0,0 +1,31 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- Eine Ease-Out-Funktion für eine sanfte Bewegung -->
<QuadraticEase x:Key="EaseOut" EasingMode="EaseOut" />
<Storyboard x:Key="PopupLoadedAnimation">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0"
To="1"
Duration="0:0:0.1" />
<DoubleAnimation
EasingFunction="{StaticResource EaseOut}"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)"
From="50"
To="0"
Duration="0:0:0.1" />
</Storyboard>
<Storyboard x:Key="PopupClosingAnimation">
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="1"
To="0"
Duration="0:0:0.05" />
<DoubleAnimation
EasingFunction="{StaticResource EaseOut}"
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.Y)"
From="0"
To="50"
Duration="0:0:0.05" />
</Storyboard>
</ResourceDictionary>

View File

@@ -1,4 +1,53 @@
<ResourceDictionary
x:Class="BeWo.Styles.DataTemplates.DataTemplates"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:BeWo.Converter" />
xmlns:conv="clr-namespace:BeWo.Converter"
xmlns:vm="clr-namespace:BeWo.ViewModel"
x:ClassModifier="public">
<HierarchicalDataTemplate
x:Key="ai_promptbaustein_folder_itemtemplate"
DataType="{x:Type vm:AiPromptbausteinFolderVM}"
ItemsSource="{Binding Path=SubFolders.VMList}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0,0,0,0"
Padding="0,3,0,0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight}"
IsReadOnly="True"
Text="{Binding Path=Displayname, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
ToolTipService.ShowDuration="100000">
<TextBox.ToolTip>
<StackPanel Orientation="Vertical">
<Label Content="{Binding Path=Title, Mode=OneWay}" FontWeight="Bold" />
<TextBox
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
</Grid>
</HierarchicalDataTemplate>
</ResourceDictionary>

View File

@@ -0,0 +1,20 @@
using BeWo.Core;
using BeWo.View.Detail.AI;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace BeWo.Styles.DataTemplates
{
partial class DataTemplates : ResourceDictionary
{
public DataTemplates()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIChatSchwarz"
Stretch="Uniform">
<Canvas
Name="svg11"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g9">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path2"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M244.27 79.58c-.05-8.1-6.56-14.44-14.81-14.44h-9.01s-11.17 0-11.17 0c-8.93 0-17.87 0-26.8 0-8.13 0-14.78 6.39-14.81 14.23-.06 15.44-.11 31.89.03 48.3.05 5.88 3.11 10.38 8.86 13.04 2.61 1.2 5.31 1.2 7.9 1.18h.53s.08 0 .12 0v.08c-.02 2.53-.03 5.07-.03 7.61 0 2.43 0 4.85-.02 7.27-.02 2.52 1 4.26 3.04 5.17.75.34 1.51.5 2.25.5 1.3 0 2.56-.52 3.67-1.54l5.05-4.62c2.5-2.29 5.01-4.58 7.5-6.88 2.57-2.36 5.11-4.75 7.64-7.16.53-.5.89-.57 1.3-.55 1.2.09 2.41.16 3.61.16 12.81 0-3.34-.02 9.47-.07 1.46 0 3.15-.04 4.7-.47 6.85-1.88 10.95-7.19 10.99-14.21.08-18.35.08-33.48 0-47.61ZM195.38 136.66c-.06-3.01-2.31-5.2-5.34-5.21h-3.39c-1.41 0-2.81.01-4.22 0-2.46-.02-4.15-1.6-4.3-4.04-.04-.64-.04-1.28-.04-1.92v-.39s0-44.42 0-44.42c0-2.81.88-4.23 3.02-4.92.5-.16 1.12-.18 1.65-.18 25.12-.01 21.29-.01 46.4 0 3.09 0 4.72 1.64 4.72 4.72 0 15.49 0 30.97 0 46.46 0 3.02-1.69 4.69-4.77 4.69h-5.54c-12.92 0 3.1.01-9.82-.02h-.03c-2.08 0-3.73.65-5.19 2.03-3.5 3.32-7.05 6.58-10.6 9.85l-1.87 1.72c-.22.2-.45.4-.68.59v-5.45c0-1.17 0-2.35-.01-3.51Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path4"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIChatSchwarzOrange"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#FF5F00">
<Path.Data>
<PathGeometry Figures="M244.27 79.58c-.05-8.1-6.56-14.44-14.81-14.44h-9.01s-11.17 0-11.17 0c-8.93 0-17.87 0-26.8 0-8.13 0-14.78 6.39-14.81 14.23-.06 15.44-.11 31.89.03 48.3.05 5.88 3.11 10.38 8.86 13.04 2.61 1.2 5.31 1.2 7.9 1.18h.53s.08 0 .12 0v.08c-.02 2.53-.03 5.07-.03 7.61 0 2.43 0 4.85-.02 7.27-.02 2.52 1 4.26 3.04 5.17.75.34 1.51.5 2.25.5 1.3 0 2.56-.52 3.67-1.54l5.05-4.62c2.5-2.29 5.01-4.58 7.5-6.88 2.57-2.36 5.11-4.75 7.64-7.16.53-.5.89-.57 1.3-.55 1.2.09 2.41.16 3.61.16 12.81 0-3.34-.02 9.47-.07 1.46 0 3.15-.04 4.7-.47 6.85-1.88 10.95-7.19 10.99-14.21.08-18.35.08-33.48 0-47.61ZM195.38 136.66c-.06-3.01-2.31-5.2-5.34-5.21h-3.39c-1.41 0-2.81.01-4.22 0-2.46-.02-4.15-1.6-4.3-4.04-.04-.64-.04-1.28-.04-1.92v-.39s0-44.42 0-44.42c0-2.81.88-4.23 3.02-4.92.5-.16 1.12-.18 1.65-.18 25.12-.01 21.29-.01 46.4 0 3.09 0 4.72 1.64 4.72 4.72 0 15.49 0 30.97 0 46.46 0 3.02-1.69 4.69-4.77 4.69h-5.54c-12.92 0 3.1.01-9.82-.02h-.03c-2.08 0-3.73.65-5.19 2.03-3.5 3.32-7.05 6.58-10.6 9.85l-1.87 1.72c-.22.2-.45.4-.68.59v-5.45c0-1.17 0-2.35-.01-3.51Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,45 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIChatWeiss"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M244.27 79.58c-.05-8.1-6.56-14.44-14.81-14.44h-9.01s-11.17 0-11.17 0c-8.93 0-17.87 0-26.8 0-8.13 0-14.78 6.39-14.81 14.23-.06 15.44-.11 31.89.03 48.3.05 5.88 3.11 10.38 8.86 13.04 2.61 1.2 5.31 1.2 7.9 1.18h.53s.08 0 .12 0v.08c-.02 2.53-.03 5.07-.03 7.61 0 2.43 0 4.85-.02 7.27-.02 2.52 1 4.26 3.04 5.17.75.34 1.51.5 2.25.5 1.3 0 2.56-.52 3.67-1.54l5.05-4.62c2.5-2.29 5.01-4.58 7.5-6.88 2.57-2.36 5.11-4.75 7.64-7.16.53-.5.89-.57 1.3-.55 1.2.09 2.41.16 3.61.16 12.81 0-3.34-.02 9.47-.07 1.46 0 3.15-.04 4.7-.47 6.85-1.88 10.95-7.19 10.99-14.21.08-18.35.08-33.48 0-47.61ZM195.38 136.66c-.06-3.01-2.31-5.2-5.34-5.21h-3.39c-1.41 0-2.81.01-4.22 0-2.46-.02-4.15-1.6-4.3-4.04-.04-.64-.04-1.28-.04-1.92v-.39s0-44.42 0-44.42c0-2.81.88-4.23 3.02-4.92.5-.16 1.12-.18 1.65-.18 25.12-.01 21.29-.01 46.4 0 3.09 0 4.72 1.64 4.72 4.72 0 15.49 0 30.97 0 46.46 0 3.02-1.69 4.69-4.77 4.69h-5.54c-12.92 0 3.1.01-9.82-.02h-.03c-2.08 0-3.73.65-5.19 2.03-3.5 3.32-7.05 6.58-10.6 9.85l-1.87 1.72c-.22.2-.45.4-.68.59v-5.45c0-1.17 0-2.35-.01-3.51Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,47 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIChatWeissOrange"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97"
Background="Transparent">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#FF5F00">
<Path.Data>
<PathGeometry Figures="M244.27 79.58c-.05-8.1-6.56-14.44-14.81-14.44h-9.01s-11.17 0-11.17 0c-8.93 0-17.87 0-26.8 0-8.13 0-14.78 6.39-14.81 14.23-.06 15.44-.11 31.89.03 48.3.05 5.88 3.11 10.38 8.86 13.04 2.61 1.2 5.31 1.2 7.9 1.18h.53s.08 0 .12 0v.08c-.02 2.53-.03 5.07-.03 7.61 0 2.43 0 4.85-.02 7.27-.02 2.52 1 4.26 3.04 5.17.75.34 1.51.5 2.25.5 1.3 0 2.56-.52 3.67-1.54l5.05-4.62c2.5-2.29 5.01-4.58 7.5-6.88 2.57-2.36 5.11-4.75 7.64-7.16.53-.5.89-.57 1.3-.55 1.2.09 2.41.16 3.61.16 12.81 0-3.34-.02 9.47-.07 1.46 0 3.15-.04 4.7-.47 6.85-1.88 10.95-7.19 10.99-14.21.08-18.35.08-33.48 0-47.61ZM195.38 136.66c-.06-3.01-2.31-5.2-5.34-5.21h-3.39c-1.41 0-2.81.01-4.22 0-2.46-.02-4.15-1.6-4.3-4.04-.04-.64-.04-1.28-.04-1.92v-.39s0-44.42 0-44.42c0-2.81.88-4.23 3.02-4.92.5-.16 1.12-.18 1.65-.18 25.12-.01 21.29-.01 46.4 0 3.09 0 4.72 1.64 4.72 4.72 0 15.49 0 30.97 0 46.46 0 3.02-1.69 4.69-4.77 4.69h-5.54c-12.92 0 3.1.01-9.82-.02h-.03c-2.08 0-3.73.65-5.19 2.03-3.5 3.32-7.05 6.58-10.6 9.85l-1.87 1.72c-.22.2-.45.4-.68.59v-5.45c0-1.17 0-2.35-.01-3.51Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIFunktionSchwarz"
Stretch="Uniform">
<Canvas
Name="svg11"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g9">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path2"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M206.14 65.1c-21.34 0-38.64 17.3-38.64 38.64s17.3 38.64 38.64 38.64 38.64-17.3 38.64-38.64-17.3-38.64-38.64-38.64ZM227.47 94.47l-25.76 25.75c-.31.31-.64.56-.98.74-.44.39-1.02.51-1.53.37-.25-.04-.47-.14-.63-.3l-4.92-4.92c-.06-.06-.11-.13-.15-.2l-9.36-9.36c-.61-.61-.58-1.63.06-2.27l4.92-4.92c.64-.64 1.66-.67 2.27-.06l8.37 8.37 20.45-20.45c1.09-1.09 2.5-1.45 3.14-.8l4.92 4.92c.64.65.28 2.05-.8 3.14Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path4"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIFunktionSchwarzGruen"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#65B231">
<Path.Data>
<PathGeometry Figures="M206.14 65.1c-21.34 0-38.64 17.3-38.64 38.64s17.3 38.64 38.64 38.64 38.64-17.3 38.64-38.64-17.3-38.64-38.64-38.64ZM227.47 94.47l-25.76 25.75c-.31.31-.64.56-.98.74-.44.39-1.02.51-1.53.37-.25-.04-.47-.14-.63-.3l-4.92-4.92c-.06-.06-.11-.13-.15-.2l-9.36-9.36c-.61-.61-.58-1.63.06-2.27l4.92-4.92c.64-.64 1.66-.67 2.27-.06l8.37 8.37 20.45-20.45c1.09-1.09 2.5-1.45 3.14-.8l4.92 4.92c.64.65.28 2.05-.8 3.14Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#000000">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIFunktionWeiss"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M206.14 65.1c-21.34 0-38.64 17.3-38.64 38.64s17.3 38.64 38.64 38.64 38.64-17.3 38.64-38.64-17.3-38.64-38.64-38.64ZM227.47 94.47l-25.76 25.75c-.31.31-.64.56-.98.74-.44.39-1.02.51-1.53.37-.25-.04-.47-.14-.63-.3l-4.92-4.92c-.06-.06-.11-.13-.15-.2l-9.36-9.36c-.61-.61-.58-1.63.06-2.27l4.92-4.92c.64-.64 1.66-.67 2.27-.06l8.37 8.37 20.45-20.45c1.09-1.09 2.5-1.45 3.14-.8l4.92 4.92c.64.65.28 2.05-.8 3.14Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -0,0 +1,46 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Key="AiDesignsIconKIFunktionWeissGruen"
Stretch="Uniform">
<Canvas
Name="svg15"
Width="257.1"
Height="255.97">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0" />
</Canvas.RenderTransform>
<Canvas.Resources />
<!-- Unknown tag: sodipodi:namedview -->
<Canvas Name="g13">
<Canvas Name="Ebene_1">
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path6"
Fill="#65B231">
<Path.Data>
<PathGeometry Figures="M206.14 65.1c-21.34 0-38.64 17.3-38.64 38.64s17.3 38.64 38.64 38.64 38.64-17.3 38.64-38.64-17.3-38.64-38.64-38.64ZM227.47 94.47l-25.76 25.75c-.31.31-.64.56-.98.74-.44.39-1.02.51-1.53.37-.25-.04-.47-.14-.63-.3l-4.92-4.92c-.06-.06-.11-.13-.15-.2l-9.36-9.36c-.61-.61-.58-1.63.06-2.27l4.92-4.92c.64-.64 1.66-.67 2.27-.06l8.37 8.37 20.45-20.45c1.09-1.09 2.5-1.45 3.14-.8l4.92 4.92c.64.65.28 2.05-.8 3.14Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path8"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M128.82 78.96h17.82c1.87 0 3.39 1.52 3.39 3.39v105.12c0 1.87-1.52 3.39-3.39 3.39h-17.82c-1.87 0-3.39-1.52-3.39-3.39v-105.12c0-1.87 1.52-3.39 3.39-3.39Z" FillRule="NonZero" />
</Path.Data>
</Path>
<Path
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="path10"
Fill="#FFFFFF">
<Path.Data>
<PathGeometry Figures="M55.62 78.96h20.5c1.43 0 2.71.89 3.21 2.22l39.29 105.06c.84 2.24-.82 4.62-3.21 4.62h-18.16c-1.47 0-2.77-.93-3.24-2.32l-6.89-20.28c-.47-1.39-1.78-2.32-3.24-2.32h-36.97c-1.45 0-2.75.92-3.23 2.29l-7.17 20.35c-.48 1.37-1.78 2.29-3.23 2.29H15.75c-2.4 0-4.05-2.4-3.2-4.64l39.87-105.06c.5-1.33 1.78-2.21 3.2-2.21ZM55.76 147.61h19.35c2.35 0 4-2.31 3.24-4.54l-12.55-36.53h-.31l-12.95 36.49c-.79 2.23.86 4.57 3.23 4.57Z" FillRule="NonZero" />
</Path.Data>
</Path>
</Canvas>
</Canvas>
</Canvas>
</Viewbox>
</ResourceDictionary>

View File

@@ -137,49 +137,7 @@
<dxwui:HamburgerMenuNavigationButton Content="{Binding Displayname}" />
</DataTemplate>
<!-- Conversation Control -->
<DataTemplate x:Key="ConversationTemplate">
<Border
Width="auto"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
Background="#17000000"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="10, 10, 10, 10">
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextForegroundPrimary}"
Text="{Binding Displayname}"
TextTrimming="CharacterEllipsis" />
<TextBlock
Grid.Row="1"
FontSize="11"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Created, StringFormat=Erstellt: {0:dd.MM.yy HH:mm}}" />
<TextBlock
Grid.Row="2"
FontSize="11"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Updated, StringFormat=Aktualisiert: {0:dd.MM.yy HH:mm}}" />
<!--<TextBlock
Grid.Row="2"
FontSize="10"
FontWeight="Thin"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Modell.ModelName, StringFormat=Modell: {0}}" />-->
</Grid>
</Border>
</DataTemplate>
<!-- Assistent Message Control -->
<DataTemplate x:Key="AssistentMessageTemplate">
@@ -307,7 +265,7 @@
<CheckBox
Margin="4"
VerticalAlignment="Center"
IsChecked="{Binding IsChecked}" />
IsChecked="{Binding IsChecked, Mode=TwoWay}" />
<ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource AssistentMessageTemplate}" />
</StackPanel>

View File

@@ -6,6 +6,14 @@
xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors"
xmlns:uc="clr-namespace:BeWo.View.Controls">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Designs\AI\IconKIChatSchwarz.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIChatSchwarzOrange.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIChatWeiss.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIChatWeissOrange.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIFunktionSchwarz.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIFunktionSchwarzGruen.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIFunktionWeiss.xaml" />
<ResourceDictionary Source="Designs\AI\IconKIFunktionWeissGruen.xaml" />
<ResourceDictionary Source="Colors\Colors.xaml" />
@@ -20,6 +28,7 @@
<ResourceDictionary Source="ControlStyles\GroupBoxStyles.xaml" />
<ResourceDictionary Source="ControlStyles\LabelStyles.xaml" />
<ResourceDictionary Source="ControlStyles\ListBoxStyles.xaml" />
<ResourceDictionary Source="ControlStyles\PopupStyles.xaml" />
<ResourceDictionary Source="ControlStyles\RadioButtonStyles.xaml" />
<ResourceDictionary Source="ControlStyles\TextBoxStyles.xaml" />
<ResourceDictionary Source="ControlStyles\TextEditStyles.xaml" />

View File

@@ -1,55 +1,83 @@
<localView:BeWoView x:Class="BeWo.View.BeWoFileView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView.Resources>
<localView:BeWoView
x:Class="BeWo.View.BeWoFileView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<localView:BeWoView.Resources>
<localView:DeleteButtonVisibilityConverter x:Key="DeleteButtonVisibilityConverter" />
<ContextMenu x:Key="cm" MenuItem.Click="ContextMenu_Click" Opened="ContextMenu_Opened" >
<MenuItem Header="Neu" >
<ContextMenu
x:Key="cm"
MenuItem.Click="ContextMenu_Click"
Opened="ContextMenu_Opened">
<MenuItem Header="Neu">
<MenuItem.Icon>
<Image Source="..\Ressources\Icons\Add24.png"/>
<Image Source="..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Umbenennen">
<MenuItem.Icon>
<Image Source="..\Ressources\Icons\Rename24.png"/>
<Image Source="..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Löschen" >
<MenuItem Header="Löschen">
<MenuItem.Icon>
<Image Source="..\Ressources\Icons\Delete24.png"/>
<Image Source="..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
<HierarchicalDataTemplate x:Key="test" DataType="{x:Type localViewModel:BeWoFolderVM}" ItemsSource="{Binding SubFolders}">
<StackPanel Orientation="Horizontal" ContextMenu="{StaticResource cm}">
<Image Name="img" Width="20" Height="20" Stretch="Fill" Source="..\Ressources\Icons\Folder.png" />
<HierarchicalDataTemplate
x:Key="test"
DataType="{x:Type localViewModel:BeWoFolderVM}"
ItemsSource="{Binding SubFolders}">
<TextBox Cursor="Arrow" Background="Transparent" Padding="2 1" LostFocus="TextBox_LostFocus" KeyDown="TextBox_KeyDown" BorderThickness="0" IsReadOnly="True" Text="{Binding Path=Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<StackPanel ContextMenu="{StaticResource cm}" Orientation="Horizontal">
<Image
Name="img"
Width="20"
Height="20"
Source="..\Ressources\Icons\Folder.png"
Stretch="Fill" />
</localView:BeWoView.Resources>
<Grid>
<Grid>
<TextBox
Padding="2,1"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
IsReadOnly="True"
KeyDown="TextBox_KeyDown"
LostFocus="TextBox_LostFocus"
Text="{Binding Path=Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</localView:BeWoView.Resources>
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Grid.ColumnSpan="2" Padding="5" Style="{StaticResource ObjectEditGroupBox}" Header="Neue Datei hochladen" x:Name="GroupBoxDateiHochladen">
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox
x:Name="GroupBoxDateiHochladen"
Grid.ColumnSpan="2"
Padding="5"
Header="Neue Datei hochladen"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -65,25 +93,88 @@
</Grid.RowDefinitions>
<Label Grid.Row="1" Content="Datei" />
<uc:PopUpEdit IsReadOnly="True" Name="popupedit_file" Grid.Column="1" Margin="3" Height="23" Grid.Row="1" DeleteButtonVisibility="Collapsed" PopUpClick="popupedit_file_PopUpClick" />
<Label Grid.Row="1" Grid.Column="2" Content="Beschreibung" />
<TextBox Name="textbox_fileNotice" Margin="3" Height="23" Grid.Row="1" Grid.Column="3" />
<Button IsEnabled="False" Name="button_uploadDocument" Margin="3" Height="25" Grid.Row="1" Grid.Column="4" Click="button_uploadDocument_Click" Content="Dokument hochladen" />
<uc:PopUpEdit
Name="popupedit_file"
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
DeleteButtonVisibility="Collapsed"
IsReadOnly="True"
PopUpClick="popupedit_file_PopUpClick" />
<Label
Grid.Row="1"
Grid.Column="2"
Content="Beschreibung" />
<TextBox
Name="textbox_fileNotice"
Grid.Row="1"
Grid.Column="3"
Height="23"
Margin="3" />
<Button
Name="button_uploadDocument"
Grid.Row="1"
Grid.Column="4"
Height="25"
Margin="3"
Click="button_uploadDocument_Click"
Content="Dokument hochladen"
IsEnabled="False" />
<ProgressBar Height="20" Margin="3" Name="progressbar_upload" Grid.Row="2" Grid.ColumnSpan="5" Minimum="0" Maximum="1" />
<Label VerticalAlignment="Center" Grid.Row="2" Grid.ColumnSpan="5" HorizontalAlignment="Center" Name="text_progress" />
<ProgressBar
Name="progressbar_upload"
Grid.Row="2"
Grid.ColumnSpan="5"
Height="20"
Margin="3"
Maximum="1"
Minimum="0" />
<Label
Name="text_progress"
Grid.Row="2"
Grid.ColumnSpan="5"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</GroupBox>
<TreeView Foreground="Aqua" VirtualizingStackPanel.IsVirtualizing="False" Grid.Row="1" Margin="5,3,2,5" PreviewMouseDown="TreeViewItem_PreviewMouseRightButtonDown" x:Name="treeview" MinWidth="200" ItemTemplate="{StaticResource test}" ItemsSource="{Binding}"></TreeView>
<dxg:GridControl Grid.Row="1" Margin="2,3,5,5" DataSource="{Binding SelectedItem.Files, ElementName=treeview, diagnostics:PresentationTraceSources.TraceLevel=High}" x:Name="datagrid_documents" Grid.Column="1" ItemsSourceChanged="Datagrid_documents_OnItemsSourceChanged">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="FileName" Header="" FixedWidth="True" Width="24" ReadOnly="True" Visible="{Binding Converter={StaticResource DeleteButtonVisibilityConverter}}">
<TreeView
x:Name="treeview"
Grid.Row="1"
MinWidth="200"
Margin="5,3,2,5"
Foreground="Aqua"
ItemTemplate="{StaticResource test}"
ItemsSource="{Binding}"
PreviewMouseDown="TreeViewItem_PreviewMouseRightButtonDown"
VirtualizingStackPanel.IsVirtualizing="False" />
<dxg:GridControl
x:Name="datagrid_documents"
Grid.Row="1"
Grid.Column="1"
Margin="2,3,5,5"
DataSource="{Binding SelectedItem.Files, ElementName=treeview, diagnostics:PresentationTraceSources.TraceLevel=High}"
ItemsSourceChanged="Datagrid_documents_OnItemsSourceChanged">
<dxg:GridControl.Columns>
<dxg:GridColumn
Width="24"
FieldName="FileName"
FixedWidth="True"
Header=""
ReadOnly="True"
Visible="{Binding Converter={StaticResource DeleteButtonVisibilityConverter}}">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Button Content="r" FontFamily="Webdings" Click="DeleteButton_Click" Width="18" Height="18" VerticalAlignment="Center" />
<Button
Width="18"
Height="18"
VerticalAlignment="Center"
Click="DeleteButton_Click"
Content="r"
FontFamily="Webdings" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
@@ -108,29 +199,40 @@
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
<Canvas>
<Grid x:Name="CursorControl" Visibility="Visible" >
</Grid>
<Canvas>
<Grid x:Name="CursorControl" Visibility="Visible">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Background="AliceBlue" Opacity="0.75">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image x:Name="imageFolder" Source="..\Ressources\Icons\Folder.png"/>
<Image x:Name="imageFile" Source="..\Ressources\Icons\Document48.png"/>
<TextBlock x:Name="labelFrom" Grid.Column="1" Text="Datei xyz.txt" Margin="3" />
<Image x:Name="imageFolder" Source="..\Ressources\Icons\Folder.png" />
<Image x:Name="imageFile" Source="..\Ressources\Icons\Document48.png" />
<TextBlock
x:Name="labelFrom"
Grid.Column="1"
Margin="3"
Text="Datei xyz.txt" />
</Grid>
</Border>
<TextBlock x:Name="labelTo" Grid.Row="1" Grid.ColumnSpan="2" Text="-> Nach verschieben" Margin="3" Foreground="Blue" Opacity="1"/>
<TextBlock
x:Name="labelTo"
Grid.Row="1"
Grid.ColumnSpan="2"
Margin="3"
Foreground="Blue"
Opacity="1"
Text="-&gt; Nach verschieben" />
</Grid>
</Canvas>
</Grid>
</Canvas>
</Grid>
</localView:BeWoView>

View File

@@ -0,0 +1,56 @@
<UserControl
x:Class="BeWo.View.Controls.AI.AiConversationButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:draw="clr-namespace:System.Drawing;assembly=System.Drawing"
xmlns:local="clr-namespace:BeWo.View.Controls.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid>
<StackPanel
Margin="0"
VerticalAlignment="Center"
Orientation="Horizontal">
<StackPanel.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</StackPanel.Resources>
<Button
x:Name="btnOpenAi4"
Height="30"
Margin="10,0,0,0"
Click="btnOpenAi4_Click"
Content="{StaticResource AiDesignsIconKIChatWeissOrange}"
Style="{StaticResource NavigationToolbarButtonStyle}"
ToolTip="KI Chat öffnen"
ToolTipService.ShowOnDisabled="True" />
<Button
x:Name="btnOpenAi5"
Height="30"
Margin="10,0,0,0"
Click="btnOpenAi5_Click"
Style="{StaticResource NavigationToolbarButtonStyle}"
ToolTip="KI Chat mit Promptbaustein starten"
ToolTipService.ShowOnDisabled="True">
Prompt mit KI Chat
</Button>
<Image
x:Name="imgWarning"
Height="20"
Margin="10,0,0,0"
Source="{Binding Source={x:Static draw:SystemIcons.Warning}, Converter={StaticResource IconToImageSourceConverter}, Mode=OneWay}"
Visibility="Visible">
<!-- Visibility="{Binding ElementName=btnOpenAi4, Path=Visibility}" -->
<Image.ToolTip>
Die aktuelle Ansicht beinhaltet zu viele Daten.
Es können keine neuen Chats zu dieser Ansicht erstellt werden.
</Image.ToolTip>
</Image>
</StackPanel>
</Grid>
</UserControl>

View File

@@ -0,0 +1,129 @@
using BeWo.ViewModel.View.AI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Controls.AI
{
public enum AiConversationButtonState
{
Hidden,
Normal,
Loading,
Warning,
Disabled
}
/// <summary>
/// Interaktionslogik für AIConversationButton.xaml
/// </summary>
public partial class AiConversationButton : UserControl
{
public event RoutedEventHandler OpenAiWindowClick;
public event RoutedEventHandler OpenAiPromptClick;
public AiConversationButton()
{
InitializeComponent();
UpdateState();
}
public AiConversationButtonState State
{
get { return (AiConversationButtonState)GetValue(StateProperty); }
set { SetValue(StateProperty, value); }
}
public static readonly DependencyProperty StateProperty =
DependencyProperty.Register("State", typeof(AiConversationButtonState), typeof(AiConversationButton), new PropertyMetadata(AiConversationButtonState.Normal, OnStateChanged));
private static void OnStateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = (AiConversationButton)d;
control.UpdateState();
}
public string Tooltip { get; set; }
public bool IsButtonEnabled { get; set; }
public bool IsButton2Enabled { get; set; }
public bool IsButtonVisible { get; set; }
public bool IsButton2Visible { get; set; }
public bool IsWarningSignVisible { get; set; }
private void UpdateState()
{
switch (State)
{
case AiConversationButtonState.Hidden:
Tooltip = string.Empty;
IsButtonEnabled = false;
IsButton2Enabled = false;
IsButtonVisible = false;
IsButton2Visible = false;
IsWarningSignVisible = false;
break;
case AiConversationButtonState.Normal:
Tooltip = string.Empty;
IsButtonEnabled = true;
IsButton2Enabled = true;
IsButtonVisible = true;
IsButton2Visible = true;
IsWarningSignVisible = false;
break;
case AiConversationButtonState.Loading:
Tooltip = "Lädt";
IsButtonEnabled = false;
IsButton2Enabled = false;
IsButtonVisible = true;
IsButton2Visible = true;
IsWarningSignVisible = false;
break;
case AiConversationButtonState.Warning:
Tooltip = string.Empty;
IsButtonEnabled = true;
IsButton2Enabled = false;
IsButtonVisible = true;
IsButton2Visible = false;
IsWarningSignVisible = true;
break;
case AiConversationButtonState.Disabled:
Tooltip = string.Empty;
IsButtonEnabled = false;
IsButton2Enabled = false;
IsButtonVisible = true;
IsButton2Visible = true;
IsWarningSignVisible = false;
break;
}
btnOpenAi5.ToolTip = btnOpenAi4.ToolTip = ToolTip;
btnOpenAi4.IsEnabled = IsButtonEnabled;
btnOpenAi5.IsEnabled = IsButton2Enabled;
btnOpenAi4.Visibility = IsButtonVisible ? Visibility.Visible : Visibility.Collapsed;
btnOpenAi5.Visibility = IsButton2Visible ? Visibility.Visible : Visibility.Collapsed;
imgWarning.Visibility = IsWarningSignVisible ? Visibility.Visible : Visibility.Collapsed;
}
private void btnOpenAi4_Click(object sender, RoutedEventArgs e)
{
OpenAiWindowClick?.Invoke(this, e);
}
private void btnOpenAi5_Click(object sender, RoutedEventArgs e)
{
OpenAiPromptClick?.Invoke(this, e);
}
}
}

View File

@@ -4,8 +4,6 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.View.Detail;
using BeWo.View.Detail.Report;
using BeWo.ViewModel;
using BS.Shared.DataContracts;

View File

@@ -4,8 +4,6 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.View.Detail;
using BeWo.View.Detail.Report;
using BeWo.ViewModel;
using BS.Shared.DataContracts;

View File

@@ -4,8 +4,6 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.View.Detail;
using BeWo.View.Detail.Report;
using BeWo.ViewModel;
using BS.Shared.DataContracts;

View File

@@ -1,5 +1,4 @@
using BS.Shared.DataContracts;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,5 +1,4 @@
using BS.Shared.DataContracts;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -4,10 +4,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.View.Detail;
using BeWo.View.Detail.Report;
using BeWo.ViewModel;
using BS.Shared.DataContracts;
namespace BeWo.View.Controls
{

View File

@@ -4,7 +4,6 @@ using BeWo.View.Windows;
using BeWo.ViewModel;
using BeWo.ViewModel.Light;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts.Light;
using BS.Shared.Extensions;
using DevExpress.Xpf.Grid;

View File

@@ -11,7 +11,6 @@ using BeWo.Annotations;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
namespace BeWo.View.Controls

View File

@@ -6,10 +6,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using BeWo.View.Detail;
using BeWo.View.Detail.Report;
using BeWo.ViewModel;
using BS.Shared.DataContracts;
namespace BeWo.View.Controls
{

View File

@@ -1,51 +1,93 @@
<UserControl x:Class="BeWo.View.Controls.NewsItemEditControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:search="clr-namespace:BeWo.View.Search">
<UserControl
x:Class="BeWo.View.Controls.NewsItemEditControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:search="clr-namespace:BeWo.View.Search"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation">
<Grid x:Name="RootGrid" Background="{StaticResource ObjectEditBackgroundBrush}" >
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0">Datum</Label>
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" Margin="3" Height="23" Width="100" Grid.Column="1" Grid.Row="0"
HorizontalAlignment="Left"
EditValue="{val:ValidationBinding Path=PublishDate, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
<Label Grid.Column="0" Grid.Row="1">Titel</Label>
<TextBox x:Name="TextBoxTitle" Grid.Column="1" Grid.Row="1" Margin="3" Height="23" Text="{val:ValidationBinding Path=Title, UpdateSourceTrigger=PropertyChanged}" />
<Grid x:Name="RootGrid" Background="{StaticResource ObjectEditBackgroundBrush}">
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Datum</Label>
<dxe:DateEdit
Grid.Row="0"
Grid.Column="1"
Width="100"
Height="23"
Margin="3"
HorizontalAlignment="Left"
EditValue="{val:ValidationBinding Path=PublishDate,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}"
MaskType="DateTimeAdvancingCaret" />
<!--<Label Grid.Column="0" Grid.Row="1">Nur für Team</Label>
<Label Grid.Row="1" Grid.Column="0">Titel</Label>
<TextBox
x:Name="TextBoxTitle"
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{val:ValidationBinding Path=Title,
UpdateSourceTrigger=PropertyChanged}" />
<!--<Label Grid.Column="0" Grid.Row="1">Nur für Team</Label>
<uc:PopUpEdit IsReadOnly="True"
x:Name="popupedit_TeamSearch"
Grid.Column="1" Margin="3" Height="23" Grid.Row="1"
DeleteButtonVisibility="Visible"
DeleteClick="Popupedit_TeamSearch_OnDeleteClick"
PopUpClick="popupedit_TeamSearch_PopUpClick" />-->
<!--<Popup Margin="10" x:Name="popup_Team" StaysOpen="False" Placement="MousePoint" Width="400" Grid.Row="2" Height="400" Grid.Column="1" >
<!--<Popup Margin="10" x:Name="popup_Team" StaysOpen="False" Placement="MousePoint" Width="400" Grid.Row="2" Height="400" Grid.Column="1" >
<search:TeamSearchView ItemSelected="TeamSearchView_TeamSelected" x:Name="teamSearchView" />
</Popup>-->
<Label Grid.Row="2">Text</Label>
<TextBox Grid.Column="1" Grid.Row="2" Margin="3" AcceptsReturn="True" Grid.ColumnSpan="3" Text="{val:ValidationBinding Path=Text, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Row="2">Text</Label>
<TextBox
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="3"
Margin="3"
AcceptsReturn="True"
Text="{val:ValidationBinding Path=Text,
UpdateSourceTrigger=PropertyChanged}" />
<UniformGrid Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="4" Columns="2" Rows="1" HorizontalAlignment="Right">
<Button Margin="3" Click="button_ok_Click" x:Name="OKButton" Content="OK" Height="25" Width="80" />
<Button Margin="3" Click="button_cancel_Click" x:Name="CancelButton" Content="Abbrechen" Height="25" Width="80" />
</UniformGrid>
</Grid>
</Grid>
<UniformGrid
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="4"
HorizontalAlignment="Right"
Columns="2"
Rows="1">
<Button
x:Name="OKButton"
Width="80"
Height="25"
Margin="3"
Click="button_ok_Click"
Content="OK" />
<Button
x:Name="CancelButton"
Width="80"
Height="25"
Margin="3"
Click="button_cancel_Click"
Content="Abbrechen" />
</UniformGrid>
</Grid>
</Grid>
</UserControl>

View File

@@ -6,7 +6,6 @@ using System.Windows.Input;
using BeWo.Validation;
using BeWo.ViewModel;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
namespace BeWo.View.Controls
{

View File

@@ -0,0 +1,101 @@
<UserControl
x:Class="BeWo.View.Core.WaitLayer3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View.Core"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:view="clr-namespace:BeWo.ViewModel.View"
d:DataContext="{d:DesignInstance Type=view:WindowViewModel,
IsDesignTimeCreatable=True}"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Bouncing Dots Animation -->
<Storyboard x:Key="BouncingDotsStoryboard" RepeatBehavior="Forever">
<DoubleAnimation
AutoReverse="True"
Storyboard.TargetName="Dot1"
Storyboard.TargetProperty="(Canvas.Top)"
From="20"
To="0"
Duration="0:0:0.5" />
<DoubleAnimation
AutoReverse="True"
BeginTime="0:0:0.1"
Storyboard.TargetName="Dot2"
Storyboard.TargetProperty="(Canvas.Top)"
From="20"
To="0"
Duration="0:0:0.5" />
<DoubleAnimation
AutoReverse="True"
BeginTime="0:0:0.2"
Storyboard.TargetName="Dot3"
Storyboard.TargetProperty="(Canvas.Top)"
From="20"
To="0"
Duration="0:0:0.5" />
</Storyboard>
</ResourceDictionary>
</UserControl.Resources>
<Border
MinWidth="250"
Padding="20"
Background="#FFFFFFFF"
BorderBrush="#FF606060"
BorderThickness="1"
CornerRadius="12">
<Border.OpacityMask>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0.027" Color="#F3FFFFFF" />
<GradientStop Offset="1" Color="#D7FFFFFF" />
</LinearGradientBrush>
</Border.OpacityMask>
<StackPanel>
<Canvas
Width="80"
Height="40"
Margin="4">
<Ellipse
x:Name="Dot1"
Canvas.Left="10"
Canvas.Top="20"
Width="12"
Height="12"
Fill="#FFFF6B35" />
<Ellipse
x:Name="Dot2"
Canvas.Left="34"
Canvas.Top="20"
Width="12"
Height="12"
Fill="#FFFF6B35" />
<Ellipse
x:Name="Dot3"
Canvas.Left="58"
Canvas.Top="20"
Width="12"
Height="12"
Fill="#FFFF6B35" />
<Canvas.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard Storyboard="{StaticResource BouncingDotsStoryboard}" />
</EventTrigger>
</Canvas.Triggers>
</Canvas>
<TextBlock
Margin="3,13,3,3"
HorizontalAlignment="Center"
FontFamily="Microsoft Sans Serif"
FontSize="12"
FontWeight="Normal"
Foreground="#FF000000"
Text="{Binding WaitingText}" />
</StackPanel>
</Border>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Core
{
/// <summary>
/// Interaktionslogik für WaitLayer3.xaml
/// </summary>
public partial class WaitLayer3 : UserControl
{
public WaitLayer3()
{
InitializeComponent();
}
}
}

View File

@@ -7,8 +7,10 @@
xmlns:listviewmodel="clr-namespace:BeWo.ViewModel.ListViewModel"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
d:DataContext="{d:DesignInstance Type=listviewmodel:AiConversationListVM}"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:vmv="clr-namespace:BeWo.ViewModel.View.AI"
d:DataContext="{d:DesignInstance Type=vmv:AiConversationChatViewModel,
IsDesignTimeCreatable=True}"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
@@ -23,6 +25,8 @@
<Setter Property="SmallChange" Value="0.01" />
<Setter Property="IsMoveToPointEnabled" Value="True" />
</Style>
<Style BasedOn="{StaticResource PopupWhiteLabel}" TargetType="{x:Type Label}" />
</ResourceDictionary>
</UserControl.Resources>
<GroupBox Style="{StaticResource ObjectEditGroupBox}">
@@ -40,6 +44,7 @@
<Grid Grid.Column="1" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="100" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@@ -47,43 +52,59 @@
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label>
Ausgewähltes Modell
</Label>
<ComboBox
Grid.Column="1"
Grid.Column="2"
ItemsSource="{Binding Models}"
SelectedItem="{Binding Config.SelectedModel}" />
<Label Grid.Row="1" VerticalAlignment="Center">
<Label Grid.Row="1" IsEnabled="False">
Temperatur
</Label>
<Slider
Grid.Row="1"
Grid.Column="1"
Grid.Column="2"
IsEnabled="False"
Value="{Binding Config.Temperature}" />
<Label Grid.Row="2" VerticalAlignment="Center">
<Label Grid.Row="2" IsEnabled="False">
top__p
</Label>
<Slider
Grid.Row="2"
Grid.Column="1"
Grid.Column="2"
IsEnabled="False"
Value="{Binding Config.Top_P}" />
<Label Grid.Row="3">
<Label Grid.Row="3" IsEnabled="False">
max__gen__len
</Label>
<dxe:TextEdit
Grid.Row="3"
Grid.Column="1"
Grid.Column="2"
EditValue="{Binding Config.Max_Gen_Len}"
IsEnabled="False"
Style="{StaticResource TextEditNumber}" />
<Label Grid.Row="4" VerticalAlignment="Top">
Datenformat
</Label>
<StackPanel Grid.Row="4" Grid.Column="2">
<StackPanel Orientation="Horizontal">
<RadioButton IsChecked="{Binding Config.Context_Type, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static shared:AiDataContextType.json}}">json</RadioButton>
<RadioButton IsChecked="{Binding Config.Context_Type, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static shared:AiDataContextType.csv}}">csv</RadioButton>
<RadioButton IsChecked="{Binding Config.Context_Type, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static shared:AiDataContextType.tsv}}">tsv</RadioButton>
</StackPanel>
<StackPanel Orientation="Horizontal">
<RadioButton IsChecked="{Binding Config.Context_Type, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static shared:AiDataContextType.csv2}}">csv2</RadioButton>
<RadioButton IsChecked="{Binding Config.Context_Type, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static shared:AiDataContextType.tsv2}}">tsv2</RadioButton>
</StackPanel>
</StackPanel>
</Grid>
</Grid>
</GroupBox>

View File

@@ -14,14 +14,16 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:shared="clr-namespace:BS.Shared;assembly=BS.Shared"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
Width="Auto"
Height="Auto"
xmlns:vmv="clr-namespace:BeWo.ViewModel.View.AI"
Width="auto"
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
d:DesignHeight="900"
d:DesignWidth="900"
d:DataContext="{d:DesignInstance Type=vmv:AiConversationChatViewModel,
IsDesignTimeCreatable=True}"
Focusable="True"
Loaded="BeWoView_Loaded"
mc:Ignorable="d">
@@ -30,11 +32,75 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Conversation Control -->
<DataTemplate x:Key="ConversationTemplate">
<Border
Width="auto"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
Background="#17000000"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="10, 10, 10, 10">
<Grid Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextForegroundPrimary}"
MouseDown="ConversationRenameTextBlock_MouseDown"
Text="{Binding Displayname}"
TextTrimming="CharacterEllipsis"
Visibility="{Binding IsEditing, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=false}" />
<TextBox
Margin="0"
Padding="0"
Background="Transparent"
BorderThickness="0"
FontSize="14"
FontWeight="SemiBold"
Foreground="{DynamicResource TextForegroundPrimary}"
IsVisibleChanged="ConversationRenameTextBox_IsVisibleChanged"
KeyDown="ConversationRenameTextBox_KeyDown"
LostFocus="ConversationRenameTextBox_LostFocus"
Text="{Binding Displayname, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding IsEditing, Converter={StaticResource BoolVisibilityConverter}}" />
<TextBlock
Grid.Row="1"
FontSize="11"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Created, StringFormat=Erstellt: {0:dd.MM.yy HH:mm}}" />
<TextBlock
Grid.Row="2"
FontSize="11"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Updated, StringFormat=Aktualisiert: {0:dd.MM.yy HH:mm}}" />
<TextBlock
Grid.Row="3"
FontSize="11"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Context_Type, StringFormat=Format: {0}}" />
<!--<TextBlock
Grid.Row="2"
FontSize="10"
FontWeight="Thin"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Modell.ModelName, StringFormat=Modell: {0}}" />-->
</Grid>
</Border>
</DataTemplate>
</ResourceDictionary>
</localView:BeWoView.Resources>
<localView:BeWoView.DataContext>
<listviewmodel:AiConversationListVM />
</localView:BeWoView.DataContext>
<Grid>
<GroupBox x:Name="rootgroupbox" Style="{StaticResource ModuleAiControlSupportConceptStyle}">
<GroupBox.Header>
@@ -117,10 +183,10 @@
Background="Transparent"
BorderThickness="0"
ItemTemplate="{StaticResource ConversationTemplate}"
ItemsSource="{Binding VMList}"
ItemsSource="{Binding ListVM.VMList}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectedItem="{Binding SelectedVM, Mode=TwoWay}"
SelectedItem="{Binding ListVM.SelectedVM, Mode=TwoWay}"
SelectionChanged="listview_conversations_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
@@ -135,7 +201,7 @@
<Grid Grid.Column="1" PreviewKeyDown="Grid_PreviewKeyDown">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="1000000*" MaxWidth="1200" />
<ColumnDefinition Width="1000000*" MaxWidth="12000" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@@ -151,7 +217,7 @@
Background="Transparent"
BorderThickness="0"
ItemTemplateSelector="{StaticResource AiConversationMessageTemplateSelector}"
ItemsSource="{Binding SelectedVM.Messages.VMList}"
ItemsSource="{Binding ListVM.SelectedVM.Messages.VMList, UpdateSourceTrigger=PropertyChanged}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Visibility="{Binding IsNewConversationVisible, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=Reverse}">
@@ -240,6 +306,17 @@
<Binding Converter="{StaticResource UserPermission2BoolConverter}" ConverterParameter="{x:Static shared:UserRightType.AiModuleChatAdd}" />
</MultiBinding>
</Grid.Visibility>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock FontSize="12" FontWeight="Medium">
Bitte formulieren Sie eine Frage, um einen neuen Chat zu beginnen.
<LineBreak/>
Weitere Details erfahren Sie in der Hilfe.
<Hyperlink NavigateUri="https://help.bewoplaner.de" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</StackPanel>
<TextBox
x:Name="txt_input_message2"
Grid.Row="1"
@@ -272,7 +349,7 @@
VerticalAlignment="Stretch">
<Grid>
<Grid.Resources>
<Style BasedOn="{StaticResource PopupToolbarButtonStyle}" TargetType="Button" />
<Style BasedOn="{StaticResource PopupToolbarButtonSmallStyle}" TargetType="Button" />
</Grid.Resources>
<Rectangle Fill="#FF000000">
<Rectangle.OpacityMask>
@@ -306,6 +383,11 @@
Command="{Binding TestCommand}"
Content="Test Szenario"
Visibility="Collapsed" />
<Button
x:Name="btnRename"
Margin="4,0,0,0"
Command="{Binding RenameCommand}"
Content="Umbennen" />
<Button
x:Name="btnClone"
Margin="4,0,0,0"
@@ -357,12 +439,14 @@
x:Name="popup_settings"
Width="auto"
Height="auto"
AllowsTransparency="True"
IsOpen="{Binding IsSettingsOpen}"
Placement="Center"
StaysOpen="False">
<Border
Padding="5"
Background="{DynamicResource NavigationContentBrush}"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="5">
<ai:AiConfigView />
@@ -409,7 +493,7 @@
Background="Transparent"
BorderThickness="0"
ItemTemplateSelector="{StaticResource AiConversationCloneMessageTemplateSelector}"
ItemsSource="{Binding SelectedVM.Messages.VMList, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding ListVM.SelectedVM.Messages.VMList, UpdateSourceTrigger=PropertyChanged}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemContainerStyle>

View File

@@ -1,6 +1,8 @@
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BeWo.ViewModel.View.AI;
using BS.Shared.Extensions;
using DevExpress.Mvvm;
using System;
@@ -28,10 +30,11 @@ namespace BeWo.View.Detail.AI
/// </summary>
public partial class AiConversationChatView : BeWoView
{
public AiConversationChatView()
public AiConversationChatView(AiConversationChatViewModel viewModel)
{
InitializeComponent();
ViewModel = viewModel;
((INotifyCollectionChanged)listview_messages.Items).CollectionChanged += listview_messages_CollectionChanged;
popup_settings.Closed += (s, e) => ViewModel.UpdateConfig();
@@ -43,14 +46,14 @@ namespace BeWo.View.Detail.AI
};
}
public AiConversationChatView(string stylestring) : this()
public AiConversationChatView(AiConversationChatViewModel viewModel, string stylestring) : this(viewModel)
{
rootgroupbox.Style = (Style)FindResource(stylestring);
}
public AiConversationListVM ViewModel
public AiConversationChatViewModel ViewModel
{
get => DataContext as AiConversationListVM;
get => DataContext as AiConversationChatViewModel;
set => DataContext = value;
}
@@ -61,6 +64,9 @@ namespace BeWo.View.Detail.AI
ViewModel.ReloadConfigCommand.Execute(null);
ViewModel.ReloadConversationsCommand.Execute(null);
if(ViewModel.SendAfterLoaded)
ViewModel.StartConversationWithMessageCommand.Execute(null);
}
private void listview_conversations_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -96,9 +102,9 @@ namespace BeWo.View.Detail.AI
// Console.WriteLine("Enter erkannt");
object p = null;
if(ViewModel.SelectedVM is object && ViewModel.SendNewMessageCommand.CanExecute(p))
if(!ViewModel.IsNewConversationVisible && ViewModel.SendNewMessageCommand.CanExecute(p))
ViewModel.SendNewMessageCommand.Execute(p);
else if (ViewModel.SelectedVM is null && ViewModel.StartConversationWithMessageCommand.CanExecute(p))
else if (ViewModel.IsNewConversationVisible && ViewModel.StartConversationWithMessageCommand.CanExecute(p))
ViewModel.StartConversationWithMessageCommand.Execute(p);
e.Handled = true;
@@ -108,5 +114,60 @@ namespace BeWo.View.Detail.AI
// e.Handled = true;
}
}
}
private void ConversationRenameTextBox_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if(sender is TextBox textBox && e.NewValue is bool b && b)
{
textBox.Focus();
textBox.SelectAll();
}
}
private void ConversationRenameTextBox_LostFocus(object sender, RoutedEventArgs e)
{
if (sender is TextBox textbox && textbox.DataContext is AiConversationVM vm && vm.IsEditing)
{
vm.SaveDisplayname();
}
}
private void ConversationRenameTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (sender is TextBox textbox && textbox.DataContext is AiConversationVM vm && vm.IsEditing)
{
if(e.Key == Key.Enter)
{
vm.SaveDisplayname();
e.Handled = true;
}
else if(e.Key == Key.Escape)
{
vm.IsEditing = true;
vm.ResetDisplayname();
e.Handled = true;
}
}
}
private void ConversationRenameTextBlock_MouseDown(object sender, MouseButtonEventArgs e)
{
if(e.ClickCount == 2)
{
if (sender is TextBlock textBlock && textBlock.DataContext is AiConversationVM vm && !vm.IsEditing)
{
vm.IsEditing = true;
e.Handled = true;
}
}
}
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
}
}

View File

@@ -0,0 +1,44 @@
<UserControl
x:Class="BeWo.View.Detail.AI.AiPromptbausteinActionResultView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.ViewModel.View.AI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DataContext="{d:DesignInstance Type=ai:AiPromptbausteinActionResultViewModel}"
d:DesignHeight="600"
d:DesignWidth="400"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBox
Height="auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Text="{Binding Result}"
TextWrapping="Wrap" />
<StackPanel
Grid.Row="1"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button Command="{Binding CancelCommand}">Abbrechen</Button>
<Button Command="{Binding RetryCommand}">Nochmal versuchen</Button>
<Button Command="{Binding AcceptCommand}">Anfügen</Button>
<Button Command="{Binding ReplaceCommand}">Ersetzen</Button>
</StackPanel>
</Grid>
</UserControl>

View File

@@ -0,0 +1,33 @@
using BeWo.ViewModel.View.AI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiPromptbausteinActionResultView.xaml
/// </summary>
public partial class AiPromptbausteinActionResultView : UserControl
{
public AiPromptbausteinActionResultViewModel ViewModel { get; set; }
public AiPromptbausteinActionResultView( AiPromptbausteinActionResultViewModel viewModel = null)
{
InitializeComponent();
DataContext = ViewModel = viewModel;
}
}
}

View File

@@ -0,0 +1,223 @@
<UserControl
x:Class="BeWo.View.Detail.AI.AiPromptbausteinComplexSelectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.ViewModel.View.AI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:BeWo.ViewModel"
d:DataContext="{d:DesignInstance Type=ai:AiPromptbausteinSelectionComplexViewModel,
IsDesignTimeCreatable=True}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style
x:Key="PromptListBoxItem"
BasedOn="{StaticResource PhotoListBoxItem}"
TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="2*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox
Grid.Column="0"
HorizontalAlignment="Stretch"
Header="Ordner"
Style="{StaticResource ObjectEditGroupBox}">
<TreeView
x:Name="treeView"
MinHeight="100"
Padding="4,16,4,16"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
SelectedItemChanged="treeView_SelectedItemChanged">
<TreeView.Resources>
<Style x:Key="igoal_treeitemstyle" TargetType="TreeViewItem">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
</TreeView>
</GroupBox>
<GridSplitter
Grid.Column="1"
Width="1"
HorizontalAlignment="Center"
Background="#878890" />
<GroupBox
Grid.Column="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Header="Prompts"
Style="{StaticResource ObjectEditGroupBox}">
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedPrompt, Mode=TwoWay}"
SelectionMode="Single">
<dxe:ListBoxEdit.ItemTemplate>
<DataTemplate>
<Grid
Margin="0,3,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0"
Padding="0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight, UpdateSourceTrigger=PropertyChanged}"
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
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
<TextBlock
Grid.Column="1"
Margin="0"
Padding="0"
Visibility="{Binding IsInfoVisible, Converter={StaticResource BoolVisibilityConverter}}">
<Hyperlink NavigateUri="{Binding OwnsoftRefLink}" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</Grid>
</DataTemplate>
</dxe:ListBoxEdit.ItemTemplate>
</dxe:ListBoxEdit>
</GroupBox>
<!--<GroupBox
Grid.Row="1"
Grid.Column="2"
Header="Details"
Style="{StaticResource ObjectEditGroupBox}">
<Grid
MaxWidth="700"
HorizontalAlignment="Stretch"
Background="#fdfdfd">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="80" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" MinWidth="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Name</Label>
<TextBox
Grid.Row="0"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
Text="{Binding ViewModel.Title, UpdateSourceTrigger=PropertyChanged}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="Beschreibung" />
<TextBox
Grid.Row="1"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
MaxLength="1024"
Style="{StaticResource TextBoxNotice}"
Text="{Binding ViewModel.Description, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Prompt" />
<TextBox
Grid.Row="2"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
MaxLength="1024"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding ViewModel.Prompt, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap" />
<Label
Grid.Row="3"
Grid.Column="0"
Content="Ersteller:" />
<comboboxes:ComboBoxEmployeeSearch
Grid.Row="3"
Grid.Column="2"
Margin="3"
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding ViewModel.Creator}" />
<Label Grid.Row="4" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="4"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding IsEditingMode, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>-->
<Button
Grid.Row="1"
Grid.ColumnSpan="3"
Command="{Binding SendCommand}"
Style="{StaticResource PrimaryButton}">
Absenden
</Button>
</Grid>
</UserControl>

View File

@@ -0,0 +1,63 @@
using BeWo.ViewModel.View.AI;
using BeWo.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Diagnostics;
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiPromptbausteinComplexSelectionView.xaml
/// </summary>
public partial class AiPromptbausteinComplexSelectionView : UserControl
{
public AiPromptbausteinSelectionComplexViewModel ViewModel { get; set; }
public AiPromptbausteinComplexSelectionView(AiPromptbausteinSelectionComplexViewModel viewModel)
{
InitializeComponent();
DataContext = ViewModel = viewModel;
Loaded += (s, e) => ViewModel.ReloadVMList();
}
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (ViewModel is null)
return;
ViewModel.SelectedFolder = treeView.SelectedValue as AiPromptbausteinFolderVM;
}
private void Grid_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
{
if (!ViewModel.SendCommand.CanExecute(null))
return;
if (e.ClickCount == 2)
{
ViewModel.SendCommand.Execute(null);
e.Handled = true;
}
}
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
}
}

View File

@@ -0,0 +1,274 @@
<view:BeWoView
x:Class="BeWo.View.Detail.AI.AiPromptbausteinComplexTreeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:administration="clr-namespace:BeWo.ViewModel.View.Administration"
xmlns:comboboxes="clr-namespace:BeWo.View.Controls.ComboBoxes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
xmlns:local1="clr-namespace:BeWo.View.Detail.AI"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:view="clr-namespace:BeWo.View"
xmlns:vm="clr-namespace:BeWo.ViewModel"
d:DataContext="{d:DesignInstance Type=administration:AiPromptbausteinComplexTreeViewModel,
IsDesignTimeCreatable=True}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<view:BeWoView.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style
x:Key="PromptListBoxItem"
BasedOn="{StaticResource PhotoListBoxItem}"
TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ResourceDictionary>
</view:BeWoView.Resources>
<GroupBox Style="{StaticResource ObjectEditGroupBox}">
<GroupBox.Header>
Aktuell definierte KI-Prompts
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="2*" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel
Grid.Row="0"
Grid.Column="0"
Orientation="Horizontal" />
<StackPanel
Grid.Row="0"
Grid.Column="2"
HorizontalAlignment="Right"
Orientation="Horizontal">
<ToggleButton
x:Name="EditToggleButton"
Grid.Column="4"
Width="157"
Height="25"
Margin="3"
Content="Bearbeiten aktivieren"
IsChecked="{Binding IsEditingMode}"
ToolTip="Wenn der Bearbeiten Modus aktiviert ist, können Sie Elemente mit Drag und Drop verschieben"
Visibility="Visible" />
<Button
Style="{StaticResource ButtonPreviousStyle}"
ToolTip="Letzte Änderung rückgängig machen"
Visibility="Collapsed" />
<Button
Style="{StaticResource ButtonRedoStyle}"
ToolTip="Nächste Änderung wiederholen"
Visibility="Collapsed" />
</StackPanel>
<GroupBox
Grid.Row="1"
Grid.Column="0"
HorizontalAlignment="Stretch"
Header="Ordner"
Style="{StaticResource ObjectEditGroupBox}">
<TreeView
x:Name="treeView"
MinHeight="100"
Padding="4,16,4,16"
AllowDrop="True"
ContextMenuOpening="treeView_ContextMenuOpening"
ContextMenuService.IsEnabled="{Binding IsChecked, ElementName=EditToggleButton}"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
PreviewMouseDown="Grid_PreviewMouseDown"
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}" />
</Style>
</TreeView.Resources>
<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="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditFolderDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding CopyFolderCommand}" Header="Kopieren">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Copy24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding PasteFolderCommand}" Header="Einfügen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Paste24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeleteFolderCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>
</GroupBox>
<GridSplitter
Grid.Row="1"
Grid.Column="1"
Width="1"
HorizontalAlignment="Center"
Background="#878890" />
<GroupBox
Grid.Row="1"
Grid.Column="2"
Grid.ColumnSpan="2"
HorizontalAlignment="Stretch"
Header="Prompts"
Style="{StaticResource ObjectEditGroupBox}">
<dxe:ListBoxEdit
x:Name="listBoxEdit1"
Padding="4,16,4,16"
AllowDrop="False"
ContextMenuOpening="ListBox_ContextMenuOpening"
ContextMenuService.IsEnabled="{Binding IsChecked, ElementName=EditToggleButton}"
ItemContainerStyle="{StaticResource PromptListBoxItem}"
ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedPrompt, Mode=TwoWay}"
SelectionMode="Single">
<dxe:ListBoxEdit.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="24" />
</Style>
</ResourceDictionary>
</ContextMenu.Resources>
<MenuItem Command="{Binding OpenAddPromptDialogCommand}" Header="Neu">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Add24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding OpenEditPromptDialogCommand}" Header="Bearbeiten">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Rename24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem
x:Name="favorite"
Command="{Binding ChangeFavoritenStatePromptCommand}"
Header="Kopieren">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Favorites32.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding CopyPromptCommand}" Header="Kopieren">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Copy24.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Command="{Binding PastePromptCommand}" Header="Einfügen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Paste24.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding DeletePromptCommand}" Header="Löschen">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Delete24.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</dxe:ListBoxEdit.ContextMenu>
<dxe:ListBoxEdit.ItemTemplate>
<DataTemplate>
<Grid
Margin="0,3,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
PreviewMouseDown="Grid_PreviewMouseDown_1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBox
Height="21"
Margin="0"
Padding="0"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"
Focusable="False"
FontWeight="{Binding FontWeight, UpdateSourceTrigger=PropertyChanged}"
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
MaxWidth="500"
Padding="3,1,0,0"
VerticalAlignment="Center"
AcceptsReturn="True"
Background="Transparent"
BorderThickness="0"
IsReadOnly="True"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
</StackPanel>
</TextBox.ToolTip>
</TextBox>
<TextBlock
Grid.Column="1"
Margin="0"
Padding="0"
Visibility="{Binding IsInfoVisible, Converter={StaticResource BoolVisibilityConverter}}">
<Hyperlink NavigateUri="{Binding OwnsoftRefLink}" RequestNavigate="Hyperlink_RequestNavigate">
(i)
</Hyperlink>
</TextBlock>
</Grid>
</DataTemplate>
</dxe:ListBoxEdit.ItemTemplate>
</dxe:ListBoxEdit>
</GroupBox>
</Grid>
</GroupBox>
</view:BeWoView>

View File

@@ -0,0 +1,171 @@
using BeWo.Core;
using BeWo.ViewModel;
using BeWo.ViewModel.View.Administration;
using DevExpress.Mvvm;
using DevExpress.Xpf.Accordion;
using DevExpress.Xpf.Core.Native;
using DevExpress.Xpf.Editors;
using DevExpress.XtraEditors.TextEditController.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiPromptbausteinTreeView.xaml
/// </summary>
public partial class AiPromptbausteinComplexTreeView : BeWoView
{
public bool IsDragging = false;
public AiPromptbausteinComplexTreeView(AiPromptbausteinComplexTreeViewModel viewModel = null)
{
InitializeComponent();
if (viewModel == null )
viewModel = new AiPromptbausteinComplexTreeViewModel(BeWoApp.MainControl.WindowService, BS.Shared.AiActionType.ServiceRecordConversation);
DataContext = ViewModel = viewModel;
Loaded += (s, e) => ViewModel.ReloadVMList();
}
public AiPromptbausteinComplexTreeViewModel ViewModel { get; set; }
public override bool IsDirty => ViewModel is object && ViewModel.IsDirty;
protected override void Save() => ViewModel.SaveVMList();
private void OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject);
if (treeViewItem != null)
{
treeViewItem.Focus();
e.Handled = true;
}
else
{
e.Handled = true;
if (ViewModel.SelectedFolder == null)
return;
_LastTreeViewItem.IsSelected = false;
treeView.Focus();
}
}
static TreeViewItem VisualUpwardSearch(DependencyObject source)
{
while (source != null && !(source is TreeViewItem))
source = VisualTreeHelper.GetParent(source);
return source as TreeViewItem;
}
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (ViewModel is null)
return;
ViewModel.SelectedFolder = treeView.SelectedValue as AiPromptbausteinFolderVM;
}
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject);
if (treeViewItem is null)
return;
if (e.ClickCount == 2)
{
ViewModel.OpenEditFolderDialogCommand.Execute(null);
e.Handled = true;
}
}
private TreeViewItem _LastTreeViewItem;
private void treeView_Selected(object sender, RoutedEventArgs e)
{
_LastTreeViewItem = e.OriginalSource as TreeViewItem;
}
private void treeView_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
ViewModel.UpdateFolderCommands();
}
private void ListBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
ViewModel.UpdatePromptCommands();
favorite.Header = (ViewModel.SelectedPrompt?.IsFavorite ?? false) ? "Favorit entfernen" : "Favorit hinzufügen";
}
//private void listBox_Prompts_PreviewMouseUp(object sender, MouseButtonEventArgs e)
//{
// IsDragging = false;
//}
//private void listBox_Prompts_Drop(object sender, DragEventArgs e)
//{
// HitTestResult hitTest = VisualTreeHelper.HitTest(listBoxEdit1, e.GetPosition(listBoxEdit1));
// ListBoxEditItem item = LayoutHelper.FindParentObject<ListBoxEditItem>((DependencyObject)hitTest.VisualHit);
// int insertIndex = ViewModel.SelectedFolder.SubPrompts.VMList.IndexOf((AiPromptbausteinPromptVM)item.Content);
// ViewModel.SelectedFolder.SubPrompts.VMList.Remove((AiPromptbausteinPromptVM)e.Data.GetData(typeof(AiPromptbausteinPromptVM)));
// if (listBoxEdit1.SelectedIndex > insertIndex)
// insertIndex++;
// ViewModel.SelectedFolder.SubPrompts.VMList.Insert(insertIndex, (AiPromptbausteinPromptVM)e.Data.GetData(typeof(AiPromptbausteinPromptVM)));
//}
//private void listBox_Prompts_DragOver(object sender, DragEventArgs e)
//{
// e.Effects = DragDropEffects.Move;
//}
//private void listBox_Prompts_MouseMove(object sender, MouseEventArgs e)
//{
// if (IsDragging && listBoxEdit1.SelectedItem != null)
// {
// DragDrop.DoDragDrop(listBoxEdit1, listBoxEdit1.SelectedItem, DragDropEffects.Move);
// }
//}
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
private void Grid_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
{
if (!ViewModel.OpenEditPromptDialogCommand.CanExecute(null))
return;
if (e.ClickCount == 2)
{
ViewModel.OpenEditPromptDialogCommand.Execute(null);
e.Handled = true;
}
}
}
}

View File

@@ -0,0 +1,100 @@
<UserControl
x:Class="BeWo.View.Detail.AI.AiPromptbausteinFolderView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:comboboxes="clr-namespace:BeWo.View.Controls.ComboBoxes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel.View.Administration"
Width="auto"
Height="auto"
d:DataContext="{d:DesignInstance Type=viewmodel:AiPromptbausteinFolderViewModel}"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid
MaxWidth="700"
Margin="2,0,2,10"
HorizontalAlignment="Stretch"
Background="#eeeeee">
<Grid Margin="8,4,8,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="80" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" MinWidth="100" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Titel</Label>
<TextBox
Grid.Row="0"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
Text="{Binding ViewModel.Title, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Row="1" Grid.Column="0">
Beschreibung
</Label>
<TextBox
Grid.Row="1"
Grid.Column="2"
IsEnabled="{Binding IsEditingMode}"
MaxLength="1024"
Style="{StaticResource TextBoxNoticeLarge}"
Text="{Binding ViewModel.Description, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Ersteller:" />
<comboboxes:ComboBoxEmployeeSearch
Grid.Row="2"
Grid.Column="2"
Margin="3"
IsEnabled="False"
SelectedCompactEmployeeDC="{Binding ViewModel.Creator}" />
<Label Grid.Row="3" Grid.Column="0">Öffentlich</Label>
<dxe:CheckEdit
Grid.Row="3"
Grid.Column="2"
Margin="3"
IsChecked="{Binding ViewModel.IsPublic}"
IsEnabled="{Binding IsEditingMode, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel
Grid.Row="6"
Grid.ColumnSpan="3"
Margin="0,19,0,0"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Width="100"
Command="{Binding CancelCommand}"
Visibility="Visible">
Abbrechen
</Button>
<Button
Width="100"
Command="{Binding AcceptCommand}"
Content="{Binding AcceptButtonText}"
Visibility="Visible" />
</StackPanel>
</Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,32 @@
using BeWo.ViewModel;
using BeWo.ViewModel.View.Administration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiPromptbausteinFolderView.xaml
/// </summary>
public partial class AiPromptbausteinFolderView : UserControl
{
public AiPromptbausteinFolderView(AiPromptbausteinFolderViewModel vm)
{
InitializeComponent();
DataContext = vm;
}
}
}

Some files were not shown because too many files have changed in this diff Show More