Files
BeWoPlaner/Service/Plugins/AiPromptbausteineService.cs
2025-12-12 14:15:58 +01:00

130 lines
4.3 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Data.Utils;
using BeWo.Service.Core;
using BeWo.Service.DCEntityMapper;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Feature.AI;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
namespace BeWo.Service.Plugins
{
public class AiPromptbausteineService
{
public IEnumerable<AiPromptbausteinDC> GetAiPromptbausteine()
{
var allAiPromptbausteine = DAOFactory.GenericDAO.GetAll<AiPromptbaustein>();
var dcs = MapperFactory.AiPromptbausteinDC_AiPromptbaustein.CreateDcList(allAiPromptbausteine);
return dcs;
}
public IEnumerable<AiPromptbausteinTreeDC> GetAiPromptbausteineTree()
{
var roots = DAOFactory.SearchDAO.GetActiveRootAiPromptbausteine();
var dcs = MapperFactory.AiPromptbausteinTreeTree.MapToNewDCs(roots);
return dcs;
var predefined = new PredefinedAiPromptbausteine();
return predefined.GetFullPromptbausteineTree();
}
public IEnumerable<AiPromptbausteinTreeDC> CreateAiPromptbausteineTree(IEnumerable<AiPromptbausteinTreeDC> aiPromptbausteinDCs)
{
var aiPromptbausteine = MapperFactory.AiPromptbausteinTreeTree.MapToNewEntities(aiPromptbausteinDCs);
DAOFactory.GenericDAO.Insert(aiPromptbausteine);
var dcs = MapperFactory.AiPromptbausteinTreeTree.MapToNewDCs(aiPromptbausteine);
return dcs;
}
public IEnumerable<AiPromptbausteinDC> CreateAiPromptbausteine(IEnumerable<AiPromptbausteinDC> aiPromptbausteinDCs)
{
var aiPromptbausteine = MapperFactory.AiPromptbausteinDC_AiPromptbaustein.MapToNewEntities(aiPromptbausteinDCs);
DAOFactory.GenericDAO.Insert(aiPromptbausteine);
var dcs = MapperFactory.AiPromptbausteinDC_AiPromptbaustein.MapToNewDCs(aiPromptbausteine);
return dcs;
}
public Dictionary<long, long> UpdateAiPromptbausteineTree(IEnumerable<AiPromptbausteinTreeDC> aiPromptbausteinDCs)
{
var originale = DAOFactory.GenericDAO.LoadByIDs<AiPromptbausteinTree>(aiPromptbausteinDCs.Select(sc => sc.Oid.Value));
var aiPromptbausteinDCs2 = aiPromptbausteinDCs.ToList();
MapperFactory.AiPromptbausteinTreeTree.MergeWithEntitys(aiPromptbausteinDCs2, originale);
DAOFactory.GenericDAO.Update(originale);
return originale.ToOidVersionDictionary();
}
public Dictionary<long, long> UpdateAiPromptbausteine(IEnumerable<AiPromptbausteinDC> aiPromptbausteinDCs)
{
var aiPromptbausteine = MapperFactory.AiPromptbausteinDC_AiPromptbaustein.MapToNewEntities(aiPromptbausteinDCs);
/*
var originale = DAOFactory.GenericDAO.LoadByIDs<AiPromptbaustein>(aiPromptbausteinDCs.Select(sc => sc.Oid.Value));
foreach (var item in aiPromptbausteinDCs)
{
item.ActivationType = ActivationTypeId.Active;
}
MapperFactory.AiPromptbausteinTree.MergeWithEntitys(aiPromptbausteinDCs, originale);
*/
DAOFactory.GenericDAO.Update(aiPromptbausteine);
// todo: dictionary erstellen
throw new System.NotImplementedException();
}
public void DeleteAiPromptbausteineTree(Dictionary<long, long> oid2version)
{
var originale = DAOFactory.GenericDAO.LoadByIDs<AiPromptbausteinTree>(oid2version.Select(e => e.Key));
originale.DoForEach(or => MapperFactory.AiPromptbausteinTreeTree.ConcurrencyCheck(oid2version[or.Oid.Value], or));
DAOFactory.GenericDAO.SetActivationType(originale, BS.Shared.ActivationTypeId.Deleted);
}
public void DeleteAiPromptbausteine(Dictionary<long, long> oid2version)
{
try
{
var originale = DAOFactory.GenericDAO.LoadByIDs<AiPromptbaustein>(oid2version.Select(e => e.Key));
originale.DoForEach(or => MapperFactory.AiPromptbausteinDC_AiPromptbaustein.ConcurrencyCheck(oid2version[or.Oid.Value], or));
IList<AiPromptbaustein> toBeDeleted = new List<AiPromptbaustein>();
foreach (var aiPromptbaustein in originale)
{
AddAiPromptbausteinAndChildsToList(aiPromptbaustein, toBeDeleted);
}
DAOFactory.GenericDAO.Delete(toBeDeleted);
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
private void AddAiPromptbausteinAndChildsToList(AiPromptbaustein aiPromptbaustein, IList<AiPromptbaustein> aiPromptbausteinListe)
{
var children = DAOFactory.SearchDAO.GetChildAiPromptbausteine(aiPromptbaustein);
foreach (var child in children)
{
AddAiPromptbausteinAndChildsToList(child, aiPromptbausteinListe);
}
aiPromptbausteinListe.Add(aiPromptbaustein);
}
}
}