diff --git a/BeWo/View/Detail/AI/AiPromptbausteinPromptView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinPromptView.xaml index 1536a8086..022daee22 100644 --- a/BeWo/View/Detail/AI/AiPromptbausteinPromptView.xaml +++ b/BeWo/View/Detail/AI/AiPromptbausteinPromptView.xaml @@ -38,6 +38,7 @@ + @@ -93,8 +94,17 @@ IsChecked="{Binding ViewModel.IsPublic}" IsEnabled="{Binding IsEditingMode, UpdateSourceTrigger=PropertyChanged}" /> - Favorite + + + + _OwnsoftRefLink; set => SetProperty(ref _OwnsoftRefLink, value, nameof(OwnsoftRefLink), () => DataContract.OwnsoftRefLink); } + + public bool IsFavorite + { + get => _IsFavorite; + set => SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite); + } public bool CanEdit { @@ -122,6 +129,7 @@ namespace BeWo.ViewModel _ShowPromptByTenant = pDataContract.ShowPromptByTenant; _IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt; _OwnsoftRefLink = pDataContract.OwnsoftRefLink; + _IsFavorite = pDataContract.IsFavorite; } protected override AiPromptbausteinPromptDC MapToDataContract(AiPromptbausteinPromptDC pDataContract, bool doCommit) @@ -137,6 +145,7 @@ namespace BeWo.ViewModel pDataContract.ShowPromptByTenant = _ShowPromptByTenant; pDataContract.IsOwnsoftPrompt = _IsOwnsoftPrompt; pDataContract.OwnsoftRefLink = _OwnsoftRefLink; + pDataContract.IsFavorite = _IsFavorite; return pDataContract; } @@ -154,6 +163,7 @@ namespace BeWo.ViewModel ShowPromptByTenant = pDataContract.ShowPromptByTenant; IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt; OwnsoftRefLink = pDataContract.OwnsoftRefLink; + IsFavorite = pDataContract.IsFavorite; } } } diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs index 56f1b52bc..c7193a2ec 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs @@ -254,7 +254,7 @@ namespace BeWo.ViewModel.View.Administration void OpenEditFolderDialog() { var sel_folder = SelectedFolder; - var sel_dc = sel_folder.CommitToDataContract(); + var sel_dc = sel_folder.CopyToEmptyDataContract(); var edit_vm = new AiPromptbausteinFolderVM(sel_dc); var vm = new AiPromptbausteinFolderViewModel(edit_vm, false); @@ -336,7 +336,7 @@ namespace BeWo.ViewModel.View.Administration void OpenEditPromptDialog() { var sel_prompt = SelectedPrompt; - var sel_dc = sel_prompt.CommitToDataContract(); + var sel_dc = sel_prompt.CopyToEmptyDataContract(); var edit_vm = new AiPromptbausteinPromptVM(sel_dc); var vm = new AiPromptbausteinPromptViewModel(edit_vm, false); diff --git a/Data/Entities/AiPromptbausteinFolder.cs b/Data/Entities/AiPromptbausteinFolder.cs index 865cd693b..aba17b7bf 100644 --- a/Data/Entities/AiPromptbausteinFolder.cs +++ b/Data/Entities/AiPromptbausteinFolder.cs @@ -25,10 +25,10 @@ namespace BeWo.Data.Entities public virtual int Position { get; set; } - public virtual bool IsExpanded { get; set; } - public virtual AiActionType ActionType { get; set; } + public virtual bool IsFavorite { get; set; } + public virtual IList SubFolders { get; set; } = new List(); public virtual IList SubPrompts { get; set; } = new List(); diff --git a/Data/Entities/AiPromptbausteinPrompt.cs b/Data/Entities/AiPromptbausteinPrompt.cs index f9821dfb4..5c2169dc0 100644 --- a/Data/Entities/AiPromptbausteinPrompt.cs +++ b/Data/Entities/AiPromptbausteinPrompt.cs @@ -35,5 +35,7 @@ namespace BeWo.Data.Entities public virtual bool IsOwnsoftPrompt { get; set; } public virtual string OwnsoftRefLink { get; set; } + + public virtual IList UserFavorites { get; set;} = new List(); } } diff --git a/Data/Mappings/AiPromptbausteinPrompt.hbm.xml b/Data/Mappings/AiPromptbausteinPrompt.hbm.xml index 8684c1562..130812ff8 100644 --- a/Data/Mappings/AiPromptbausteinPrompt.hbm.xml +++ b/Data/Mappings/AiPromptbausteinPrompt.hbm.xml @@ -24,5 +24,10 @@ + + + + + diff --git a/Service/DCEntityMapper/AiPromptbausteinFolderDC_AiPromptbausteinFolder.cs b/Service/DCEntityMapper/AiPromptbausteinFolderDC_AiPromptbausteinFolder.cs index f34008740..171a8e641 100644 --- a/Service/DCEntityMapper/AiPromptbausteinFolderDC_AiPromptbausteinFolder.cs +++ b/Service/DCEntityMapper/AiPromptbausteinFolderDC_AiPromptbausteinFolder.cs @@ -22,7 +22,6 @@ namespace BeWo.Service.DCEntityMapper pDataContract.ParentFolderOid = pEntity.ParentFolderOid; pDataContract.IsPublic = pEntity.IsPublic; pDataContract.Position = pEntity.Position; - pDataContract.IsExpanded = pEntity.IsExpanded; pDataContract.ActionType = pEntity.ActionType; pDataContract.SubFolders = MapperFactory.AiPromptbausteinFolder.MapToNewDCs(pEntity.SubFolders); pDataContract.SubPrompts = MapperFactory.AiPromptbausteinPrompt.MapToNewDCs(pEntity.SubPrompts); diff --git a/Service/DCEntityMapper/AiPromptbausteinPromptDC_AiPromptbausteinPrompt.cs b/Service/DCEntityMapper/AiPromptbausteinPromptDC_AiPromptbausteinPrompt.cs index e989fb94b..e91284730 100644 --- a/Service/DCEntityMapper/AiPromptbausteinPromptDC_AiPromptbausteinPrompt.cs +++ b/Service/DCEntityMapper/AiPromptbausteinPromptDC_AiPromptbausteinPrompt.cs @@ -3,6 +3,7 @@ using System.Linq; using BeWo.Data.Access; using BeWo.Data.Entities; +using BeWo.Data.Security; using BeWo.Service.ServiceImplementations; using BS.Shared; using BS.Shared.Core; @@ -12,6 +13,8 @@ namespace BeWo.Service.DCEntityMapper { public class AiPromptbausteinPromptDC_AiPromptbausteinPrompt : BeWoDataContract_BeWoEntityBase { + public ApplicationUser CurrentApplicationUser => UserRightHelper.GetLoggedInUserWithOid(); + public override AiPromptbausteinPromptDC MergeWithDC(AiPromptbausteinPrompt pEntity, AiPromptbausteinPromptDC pDataContract) { base.MergeWithDC(pEntity, pDataContract); @@ -27,6 +30,7 @@ namespace BeWo.Service.DCEntityMapper pDataContract.ShowPromptByTenant = pEntity.ShowPromptByTenant; pDataContract.IsOwnsoftPrompt = pEntity.IsOwnsoftPrompt; pDataContract.OwnsoftRefLink = pEntity.OwnsoftRefLink; + pDataContract.IsFavorite = pEntity.UserFavorites.Contains(CurrentApplicationUser); return pDataContract; } @@ -47,6 +51,16 @@ namespace BeWo.Service.DCEntityMapper //pEntity.IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt; //pEntity.OwnsoftRefLink = pDataContract.OwnsoftRefLink; + var user = CurrentApplicationUser; + if (pDataContract.IsFavorite && !pEntity.UserFavorites.Contains(user)) + { + pEntity.UserFavorites.Add(user); + } + else if(!pDataContract.IsFavorite && pEntity.UserFavorites.Contains(user)) + { + pEntity.UserFavorites.Remove(user); + } + return pEntity; } } diff --git a/Shared/DataContracts/AiPromptbausteinPromptDC.cs b/Shared/DataContracts/AiPromptbausteinPromptDC.cs index e95c534c4..5d2d4eb4e 100644 --- a/Shared/DataContracts/AiPromptbausteinPromptDC.cs +++ b/Shared/DataContracts/AiPromptbausteinPromptDC.cs @@ -19,6 +19,7 @@ namespace BS.Shared.DataContracts [DataMember] public bool ShowPromptByTenant { get; set; } [DataMember] public bool IsOwnsoftPrompt { get; set; } [DataMember] public string OwnsoftRefLink { get; set; } + [DataMember] public bool IsFavorite { get; set; } [DataMember] public bool CanEdit { get; set; } }