using Toolkit.Foundation; namespace Bitvault; public class AggregateItemContentFromCategoryViewModelHandler(IItemConfigurationCollection configurations, IServiceFactory serviceFactory, IMediator mediator, IPublisher publisher) : INotificationHandler> { public async Task Handle(AggerateEventArgs args) { if (args.Value is string category) { if (configurations.TryGetValue(category, out Func? factory)) { if (factory.Invoke() is ItemConfiguration configuration) { foreach (ItemSectionConfiguration configurationSection in configuration.Sections) { string section = $"{nameof(ItemSection)}:{Guid.NewGuid}"; if (serviceFactory.Create(section) is ItemSectionViewModel sectionViewModel) { publisher.Publish(Create.As(sectionViewModel), nameof(ItemContentViewModel)); foreach (ItemEntryConfiguration entryConfiguration in configurationSection.Entries) { if (await mediator.Handle(entryConfiguration, entryConfiguration.GetType().Name) is IItemEntryViewModel entryViewModel) { publisher.Publish(Create.As(entryViewModel), section); } } } } } } } } }