using Bitvault.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Toolkit.Foundation; namespace Bitvault; public class EditItemHander(IDbContextFactory dbContextFactory) : IHandler, bool> { public async Task Handle(EditEventArgs<(int, ItemConfiguration)> args, CancellationToken cancellationToken) { //if (args.Value is ItemConfiguration configuration) //{ // try // { // using ContainerDbContext context = dbContextFactory.CreateDbContext(); // EntityEntry? result = null; // await Task.Run(async () => // { // result = await context.AddAsync(new ItemEntry { Name = configuration.Name }, cancellationToken); // await context.SaveChangesAsync(cancellationToken); // }, cancellationToken); // if (result is not null) // { // return true; // } // } // catch // { // } //} return false; } } public class CreateItemHander(IDbContextFactory dbContextFactory) : IHandler, (bool, int)> { public async Task<(bool, int)> Handle(CreateEventArgs args, CancellationToken cancellationToken) { if (args.Value is ItemConfiguration configuration) { try { using ContainerDbContext context = dbContextFactory.CreateDbContext(); EntityEntry? result = null; await Task.Run(async () => { result = await context.AddAsync(new ItemEntry { Name = configuration.Name }, cancellationToken); await context.SaveChangesAsync(cancellationToken); }, cancellationToken); if (result is not null) { return (false, -1); } } catch { } } return (false, -1); } } public class ConfirmItemHandler(IMediator mediator, IValueStore valueStore, IPublisher publisher) : INotificationHandler> { public async Task Handle(ConfirmEventArgs args) { (bool result, int index) result = await mediator.Handle, (bool, int)>(new CreateEventArgs(new ItemConfiguration())); ItemHeaderConfiguration? configuration = await mediator.Handle, ItemHeaderConfiguration>(args); } }