using Books.Api.Domain.JournalEntryDrafts; using EventFlow.Commands; namespace Books.Api.Commands.JournalEntryDrafts; public class CreateJournalEntryDraftCommandHandler : CommandHandler { public override Task ExecuteAsync( JournalEntryDraftAggregate aggregate, CreateJournalEntryDraftCommand command, CancellationToken cancellationToken) { aggregate.Create( command.CompanyId, command.Name, command.CreatedBy, command.VoucherNumber, command.ExtractionData); return Task.CompletedTask; } } public class UpdateJournalEntryDraftCommandHandler : CommandHandler { public override Task ExecuteAsync( JournalEntryDraftAggregate aggregate, UpdateJournalEntryDraftCommand command, CancellationToken cancellationToken) { aggregate.Update( command.Name, command.DocumentDate, command.Description, command.FiscalYearId, command.Lines, command.AttachmentIds); return Task.CompletedTask; } } public class MarkJournalEntryDraftPostedCommandHandler : CommandHandler { public override Task ExecuteAsync( JournalEntryDraftAggregate aggregate, MarkJournalEntryDraftPostedCommand command, CancellationToken cancellationToken) { aggregate.MarkPosted( command.TransactionId, command.PostedBy); return Task.CompletedTask; } } public class DiscardJournalEntryDraftCommandHandler : CommandHandler { public override Task ExecuteAsync( JournalEntryDraftAggregate aggregate, DiscardJournalEntryDraftCommand command, CancellationToken cancellationToken) { aggregate.Discard(command.DiscardedBy); return Task.CompletedTask; } }