using Books.Api.Domain.Products; using EventFlow.Commands; namespace Books.Api.Commands.Products; public class CreateProductCommandHandler : CommandHandler { public override Task ExecuteAsync( ProductAggregate aggregate, CreateProductCommand command, CancellationToken cancellationToken) { aggregate.Create( command.CompanyId, command.ProductNumber, command.Name, command.Description, command.UnitPrice, command.VatCode, command.Unit, command.DefaultAccountId, command.Ean, command.Manufacturer); return Task.CompletedTask; } } public class UpdateProductCommandHandler : CommandHandler { public override Task ExecuteAsync( ProductAggregate aggregate, UpdateProductCommand command, CancellationToken cancellationToken) { aggregate.Update( command.ProductNumber, command.Name, command.Description, command.UnitPrice, command.VatCode, command.Unit, command.DefaultAccountId, command.Ean, command.Manufacturer); return Task.CompletedTask; } } public class DeactivateProductCommandHandler : CommandHandler { public override Task ExecuteAsync( ProductAggregate aggregate, DeactivateProductCommand command, CancellationToken cancellationToken) { aggregate.Deactivate(); return Task.CompletedTask; } } public class ReactivateProductCommandHandler : CommandHandler { public override Task ExecuteAsync( ProductAggregate aggregate, ReactivateProductCommand command, CancellationToken cancellationToken) { aggregate.Reactivate(); return Task.CompletedTask; } }