using System; using System.Windows; using BS.Shared; using BS.Shared.DataContracts.Compact; using BS.Shared.DataContracts.Feature.AI; namespace BeWo.ViewModel { public class AiPromptbausteinPromptVM : AbstractDCMapperVM { private string _Title; private string _Description; private long? _ParentFolderOid; private CompactEmployeeDC _Creator; private bool _IsPublic; private int _Position; private string _Prompt; private bool _ShowPrompt; private bool _ShowPromptByTenant; private bool _IsOwnsoftPrompt; private string _OwnsoftRefLink; private bool _IsFavorite; private AiActionType _ActionType; public AiPromptbausteinPromptVM(AiPromptbausteinPromptDC dc) : base(dc, dc.Oid) { } public string Title { get => _Title; set => SetProperty(ref _Title, value, nameof(Title), () => DataContract.Title); } public string Description { get => _Description; set => SetProperty(ref _Description, value, nameof(Description), () => DataContract.Description); } public long? ParentFolderOid { get => _ParentFolderOid; set => SetProperty(ref _ParentFolderOid, value, nameof(ParentFolderOid), () => DataContract.ParentFolderOid); } public CompactEmployeeDC Creator { get => _Creator; set => SetProperty(ref _Creator, value, nameof(Creator), () => DataContract.Creator); } public bool IsPublic { get => _IsPublic; set => SetProperty(ref _IsPublic, value, nameof(IsPublic), () => DataContract.IsPublic); } public int Position { get => _Position; set => SetProperty(ref _Position, value, nameof(Position), () => DataContract.Position); } public string Prompt { get => _Prompt; set => SetProperty(ref _Prompt, value, nameof(Prompt), () => DataContract.Prompt); } public bool ShowPrompt { get => _ShowPrompt; set => SetProperty(ref _ShowPrompt, value, nameof(ShowPrompt), () => DataContract.ShowPrompt, nameof(IsPromptVisible)); } public bool ShowPromptByTenant { get => _ShowPromptByTenant; set => SetProperty(ref _ShowPromptByTenant, value, nameof(ShowPromptByTenant), () => DataContract.ShowPromptByTenant, nameof(IsPromptVisible)); } public bool IsOwnsoftPrompt { get => _IsOwnsoftPrompt; set => SetProperty(ref _IsOwnsoftPrompt, value, nameof(IsOwnsoftPrompt), () => DataContract.IsOwnsoftPrompt); } public string OwnsoftRefLink { get => _OwnsoftRefLink; set => SetProperty(ref _OwnsoftRefLink, value, nameof(OwnsoftRefLink), () => DataContract.OwnsoftRefLink); } public AiActionType ActionType { get => _ActionType; set => SetProperty(ref _ActionType, value, nameof(ActionType), () => DataContract.ActionType); } public bool IsFavorite { get => _IsFavorite; set => SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite, nameof(FontWeight)); } public bool CanEdit { get => DataContract.CanEdit && BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit); set => DataContract.CanEdit = value; } public bool IsInfoVisible { get => IsOwnsoftPrompt && !string.IsNullOrWhiteSpace(OwnsoftRefLink); } public FontWeight FontWeight { get => IsFavorite ? FontWeights.Bold : FontWeights.Medium; } public bool IsPromptVisible { get => ShowPrompt && ShowPromptByTenant; } public bool CanShareEdit { get => BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteinShare) && Creator?.EmployeeOid is long owner && owner == BeWoApp.CompactLoggedOnEmployee.EmployeeOid && CanEdit; } public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen"; protected override void InitByDataContract(AiPromptbausteinPromptDC pDataContract) { _Title = pDataContract.Title; _Description = pDataContract.Description; _ParentFolderOid = pDataContract.ParentFolderOid; _Creator = pDataContract.Creator; _IsPublic = pDataContract.IsPublic; _Position = pDataContract.Position; _Prompt = pDataContract.Prompt; _ShowPrompt = pDataContract.ShowPrompt; _ShowPromptByTenant = pDataContract.ShowPromptByTenant; _IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt; _OwnsoftRefLink = pDataContract.OwnsoftRefLink; _IsFavorite = pDataContract.IsFavorite; _ActionType = pDataContract.ActionType; } protected override AiPromptbausteinPromptDC MapToDataContract(AiPromptbausteinPromptDC pDataContract, bool doCommit) { pDataContract.IsFavorite = _IsFavorite; pDataContract.Title = _Title; pDataContract.Description = _Description; pDataContract.ParentFolderOid = _ParentFolderOid; pDataContract.Creator = _Creator; pDataContract.IsPublic = _IsPublic; pDataContract.Position = _Position; pDataContract.Prompt = _Prompt; pDataContract.ShowPrompt = _ShowPrompt; pDataContract.ShowPromptByTenant = _ShowPromptByTenant; pDataContract.IsOwnsoftPrompt = _IsOwnsoftPrompt; pDataContract.OwnsoftRefLink = _OwnsoftRefLink; pDataContract.ActionType = _ActionType; return pDataContract; } public override void UpdateByDataContract(AiPromptbausteinPromptDC pDataContract) { if (IsNew) IsNew = false; Title = pDataContract.Title; Description = pDataContract.Description; ParentFolderOid = pDataContract.ParentFolderOid; Creator = pDataContract.Creator; IsPublic = pDataContract.IsPublic; Position = pDataContract.Position; Prompt = pDataContract.Prompt; ShowPrompt = pDataContract.ShowPrompt; ShowPromptByTenant = pDataContract.ShowPromptByTenant; IsOwnsoftPrompt = pDataContract.IsOwnsoftPrompt; OwnsoftRefLink = pDataContract.OwnsoftRefLink; IsFavorite = pDataContract.IsFavorite; ActionType = pDataContract.ActionType; DataContract = pDataContract; SetDirty(false); } public override bool IsDirty { get { if (!CanEdit) return _DirtyProps.Contains(nameof(IsFavorite)); return _DirtyProps.Count > 0; } } } }