Files
BeWoPlaner/BeWo/ViewModel/AiPromptbausteinRoutineVM.cs

155 lines
4.3 KiB
C#
Raw Normal View History

2026-04-17 11:47:42 +02:00
using System;
using System.Linq;
2026-04-17 11:47:42 +02:00
using BeWo.ViewModel.ListViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.DataContracts.Feature.AI;
using BS.Shared.Extensions;
2026-04-17 11:47:42 +02:00
namespace BeWo.ViewModel
{
2026-04-21 14:34:54 +02:00
public class AiPromptbausteinRoutineVM : AbstractDCMapperVM<AiPromptbausteinRoutineDC>
2026-04-17 11:47:42 +02:00
{
private string _Title;
private string _Description;
private long? _ParentFolderOid;
private CompactEmployeeDC _Creator;
private bool _IsPublic;
private int _Position;
private bool _IsFavorite;
private AiActionType _ActionType;
2026-06-03 12:19:07 +02:00
private AiRoutineType _RoutineType;
2026-04-17 11:47:42 +02:00
private bool _CanEdit;
2026-04-21 14:34:54 +02:00
private AiPromptbausteinRoutineStepListVM _Steps;
2026-04-17 11:47:42 +02:00
2026-04-21 14:34:54 +02:00
public AiPromptbausteinRoutineVM(AiPromptbausteinRoutineDC dc) : base(dc, dc.Oid)
2026-04-17 11:47:42 +02:00
{
}
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 bool IsFavorite
{
get => _IsFavorite;
set => SetProperty(ref _IsFavorite, value, nameof(IsFavorite), () => DataContract.IsFavorite);
}
public AiActionType ActionType
{
get => _ActionType;
set => SetProperty(ref _ActionType, value, nameof(ActionType), () => DataContract.ActionType);
}
2026-06-03 12:19:07 +02:00
public AiRoutineType RoutineType
{
get => _RoutineType;
set => SetProperty(ref _RoutineType, value, nameof(RoutineType), () => DataContract.RoutineType);
}
2026-04-17 11:47:42 +02:00
public bool CanEdit
{
get => _CanEdit;
set => SetProperty(ref _CanEdit, value, nameof(CanEdit), () => DataContract.CanEdit);
}
2026-04-21 14:34:54 +02:00
public AiPromptbausteinRoutineStepListVM Steps
2026-04-17 11:47:42 +02:00
{
get => _Steps;
set => SetProperty(ref _Steps, value, nameof(Steps));
}
2026-05-12 11:47:04 +02:00
public string FavoritenHeader => IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen";
public override bool IsDirty => base.IsDirty || Steps.IsDirty;
public bool IsValid
{
get => Steps.Count > 0 && Steps.VMList.All(x => x.IsValid);
}
2026-04-21 14:34:54 +02:00
protected override void InitByDataContract(AiPromptbausteinRoutineDC pDataContract)
2026-04-17 11:47:42 +02:00
{
_Title = pDataContract.Title;
_Description = pDataContract.Description;
_ParentFolderOid = pDataContract.ParentFolderOid;
_Creator = pDataContract.Creator;
_IsPublic = pDataContract.IsPublic;
_Position = pDataContract.Position;
_IsFavorite = pDataContract.IsFavorite;
_ActionType = pDataContract.ActionType;
2026-06-03 12:19:07 +02:00
_RoutineType = pDataContract.RoutineType;
2026-04-17 11:47:42 +02:00
_CanEdit = pDataContract.CanEdit;
2026-04-21 14:34:54 +02:00
_Steps = new AiPromptbausteinRoutineStepListVM(pDataContract.Steps);
2026-04-17 11:47:42 +02:00
}
2026-04-21 14:34:54 +02:00
protected override AiPromptbausteinRoutineDC MapToDataContract(AiPromptbausteinRoutineDC pDataContract, bool doCommit)
2026-04-17 11:47:42 +02:00
{
pDataContract.Title = _Title;
pDataContract.Description = _Description;
pDataContract.ParentFolderOid = _ParentFolderOid;
pDataContract.Creator = _Creator;
pDataContract.IsPublic = _IsPublic;
pDataContract.Position = _Position;
pDataContract.IsFavorite = _IsFavorite;
pDataContract.ActionType = _ActionType;
2026-06-03 12:19:07 +02:00
pDataContract.RoutineType = _RoutineType;
2026-04-17 11:47:42 +02:00
pDataContract.CanEdit = _CanEdit;
pDataContract.Steps = _Steps.CopyToDCList(true);
2026-04-17 11:47:42 +02:00
return pDataContract;
}
public override void UpdateByDataContract(AiPromptbausteinRoutineDC pDataContract)
{
2026-06-05 15:46:56 +02:00
if (IsNew)
IsNew = false;
2026-05-12 11:47:04 +02:00
DataContract = pDataContract;
Title = pDataContract.Title;
Description = pDataContract.Description;
IsPublic = pDataContract.IsPublic;
IsFavorite = pDataContract.IsFavorite;
RoutineType = pDataContract.RoutineType;
2026-05-07 15:50:21 +02:00
Steps.UpdateByDataContracts(pDataContract.Steps);
}
2026-04-17 11:47:42 +02:00
}
}