using Pilz.Data; using Pilz.Net.Api.Messages; using Pilz.Net.Extensions; namespace Pilz.Net.Api.Client; public abstract class BaseChildItemClient(IApiClient client) : BaseClient(client), IBaseChildItemClient where T : IDataObject { public virtual async Task> GetAll(int parentId) { return (await client.SendRequest.Items>(ApiEndpoint, HttpMethod.Get, new ApiParameterCollection { ["parent"] = parentId, })).EnsureOk().Items; } public override async Task Save(T item) { if (item.Id == 0) throw new NullReferenceException("Item has no parent yet!"); return await base.Save(item); } public virtual async Task Save(T item, int parentId) { if (item.Id != 0) return await Save(item); return (await client.SendRequest.Item>( ApiEndpoint, HttpMethod.Post, GenerateUpdateMessage(item, true), new ApiParameterCollection { ["parent"] = parentId, })).EnsureOk().Item; } }