using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Data.Security; using BeWo.Service.BusinessLogic; using BeWo.Service.Plugins; using BeWo.Service.ServiceContracts.Enhanced; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts.Feature.AI; using BS.Shared.DataContracts.Feature.AI.Functions.ServiceRecords; using DevExpress.Charts.Native; using DevExpress.DataAccess.Native.Sql; using System; using System.Collections.Generic; using System.ServiceModel; namespace BeWo.Service.ServiceImplementations.Enhanced { [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)] public class AiEnhancedServiceImp : IAiEnhancedService { #region General AI public AiConfigDC GetAiConfig() => GetAiService().GetAiConfig(); public AiConfigDC UpdateAiConfig(AiConfigDC toUpdate) => GetAiService().UpdateAiConfig(toUpdate); public IEnumerable GetAiModels() => GetAiService().GetAiModels(); public IEnumerable GetAiConversations(AiActionType actionType, long? oid) => GetAiService().GetAiConversations(actionType, oid); public AiConversationDC CreateAiConversation(AiConversationDC conversation, AiViewContextDC view_context) => GetAiService().CreateAiConversation(conversation, view_context); public AiConversationDC CreateAiConversationWithMessage(AiConversationDC conversation, AiViewContextDC view_context, string message) => GetAiService().CreateAiConversationWithMessage(conversation, view_context, message); public AiConversationDC CloneAiConversation(long conversation_oid, long? last_message_oid) => GetAiService().CloneAiConversation(conversation_oid, last_message_oid); public long UpdateAiConversationDisplayname(long oid, long version, string displayname) => GetAiService().UpdateAiConversationDisplayname(oid, version, displayname); public void DeleteAiConversation(long conversation_oid) => GetAiService().DeleteAiConversation(conversation_oid); public AiConversationMessageDC[] SendNewMessage(long conversation, string message) => GetAiService().SendNewMessage(conversation, message); public AiConversationMessageDC[] ExecuteAiConversationWithPrompt(long conversation, AiViewContextDC view_context, long prompt_oid) => GetAiService().ExecuteAiConversationWithPrompt(conversation, view_context, prompt_oid); public AiConversationMessageDC[] ExecuteAiConversationWithRoutine(long conversation, AiViewContextDC view_context, long routine, int step) => GetAiService().ExecuteAiConversationWithRoutine(conversation, view_context, routine, step); public AiConversationMessageDC[] ExecuteAiConversationWithRoutineComplete(AiActionType actionType, AiViewContextDC view_context, long routine) => GetAiService().ExecuteAiConversationWithRoutineComplete(actionType, view_context, routine); public bool CheckContextSize(AiActionType actionType, AiViewContextDC view_context) => GetAiService().CheckContextSize(actionType, view_context); public AiUserSettingDC GetUserSetting() => GetAiService().GetUserSetting(); public AiUserSettingDC UpdateUserSetting(AiUserSettingDC aiUserSettingDC) => GetAiService().UpdateUserSetting(aiUserSettingDC); private AiService2 GetAiService() { var plugin = PluginLoader.FindClass(); return plugin; } #endregion #region Promptbausteine public IEnumerable GetAiPromptbausteinFolder(AiActionType aiActionType) => GetAiPromptbausteineService().GetAiPromptbausteinFolder(aiActionType); private AiPromptbausteineService GetAiPromptbausteineService() { return new AiPromptbausteineService(); //var plugin = PluginLoader.FindClass(); //return plugin; } public AiPromptbausteinFolderDC InsertAiPromptbausteinFolder(AiPromptbausteinFolderDC folder) => GetFolderLogic().Insert(folder); public AiPromptbausteinPromptDC InsertAiPromptbausteinPrompt(AiPromptbausteinPromptDC prompt) => GetPromptLogic().Insert(prompt); public AiPromptbausteinRoutineDC InsertAiPromptbausteinRoutine(AiPromptbausteinRoutineDC routine) => GetRoutineLogic().Insert(routine); public AiPromptbausteinFolderDC UpdateAiPromptbausteinFolder(AiPromptbausteinFolderDC folder) => GetFolderLogic().Update(folder); public AiPromptbausteinPromptDC UpdateAiPromptbausteinPrompt(AiPromptbausteinPromptDC prompt) => GetPromptLogic().Update(prompt); public AiPromptbausteinRoutineDC UpdateAiPromptbausteinRoutine(AiPromptbausteinRoutineDC routine) => GetRoutineLogic().Update(routine); public void DeleteAiPromptbausteinFolder(AiPromptbausteinFolderDC folder) => GetFolderLogic().Deactivate(folder, GetPromptLogic()); public void DeleteAiPromptbausteinPrompt(AiPromptbausteinPromptDC prompt) => GetPromptLogic().Deactivate(prompt); public void DeleteAiPromptbausteinRoutine(AiPromptbausteinRoutineDC routine) => GetRoutineLogic().Deactivate(routine); private AiPromptbausteinFolderLogic GetFolderLogic() => new AiPromptbausteinFolderLogic(); private AiPromptbausteinPromptLogic GetPromptLogic() => new AiPromptbausteinPromptLogic(); private AiPromptbausteinRoutineLogic GetRoutineLogic() => new AiPromptbausteinRoutineLogic(); #endregion } }