Files
BeWoPlaner/Service/DCEntityMapper/AiPromptbausteinRoutineDC_AiPromptbausteinRoutine.cs
2026-06-15 09:36:28 +02:00

74 lines
2.5 KiB
C#

using System.Collections.Generic;
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;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Feature.AI;
namespace BeWo.Service.DCEntityMapper
{
public class AiPromptbausteinRoutineDC_AiPromptbausteinRoutine : BeWoDataContract_BeWoEntityBase<AiPromptbausteinRoutine, AiPromptbausteinRoutineDC>
{
public Employee CurrentUser => UserRightHelper.GetLoggedInEmployee();
public override AiPromptbausteinRoutineDC MergeWithDC(AiPromptbausteinRoutine pEntity, AiPromptbausteinRoutineDC pDataContract)
{
base.MergeWithDC(pEntity, pDataContract);
pDataContract.Title = pEntity.Title;
pDataContract.Description = pEntity.Description;
pDataContract.ParentFolderOid = pEntity.ParentFolderOid;
pDataContract.IsPublic = pEntity.IsPublic;
pDataContract.Position = pEntity.Position;
pDataContract.IsFavorite = pEntity.UserFavorites.Contains(CurrentUser);
pDataContract.ActionType = pEntity.ActionType;
pDataContract.RoutineType = pEntity.RoutineType;
pDataContract.Steps = MapperFactory.AiPromptbausteinRoutineStep.MapToNewDCs(pEntity.Steps);
if (pEntity.CreatorOid is long oid)
pDataContract.Creator = new EmployeeServiceImp().GetActiveCompactEmployeeWithOid(oid);
return pDataContract;
}
public override AiPromptbausteinRoutine MergeWithEntity(AiPromptbausteinRoutineDC pDataContract, AiPromptbausteinRoutine pEntity)
{
base.MergeWithEntity(pDataContract, pEntity);
pEntity.Title = pDataContract.Title;
pEntity.Description = pDataContract.Description;
pEntity.CreatorOid = pDataContract.Creator.EmployeeOid;
pEntity.IsPublic = pDataContract.IsPublic;
pEntity.Position = pDataContract.Position;
pEntity.ActionType = pDataContract.ActionType;
pEntity.RoutineType = pDataContract.RoutineType;
var user = CurrentUser;
if (pDataContract.IsFavorite && !pEntity.UserFavorites.Contains(user))
{
pEntity.UserFavorites.Add(user);
}
else if (!pDataContract.IsFavorite && pEntity.UserFavorites.Contains(user))
{
pEntity.UserFavorites.Remove(user);
}
if (pEntity.Steps is null)
pEntity.Steps = new List<AiPromptbausteinRoutineStep>();
MapperFactory.AiPromptbausteinRoutineStep.MergeWithEntitys(pDataContract.Steps, pEntity.Steps);
if (pDataContract.ParentFolderOid is long oid && oid >= 0)
pEntity.ParentFolderOid = pDataContract.ParentFolderOid;
return pEntity;
}
}
}