books/backend/Books.Api/Commands/Orders/OrderCommandHandlers.cs

137 lines
3.6 KiB
C#
Raw Normal View History

using Books.Api.Domain.Orders;
using EventFlow.Commands;
namespace Books.Api.Commands.Orders;
public class CreateOrderCommandHandler
: CommandHandler<OrderAggregate, OrderId, CreateOrderCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
CreateOrderCommand command,
CancellationToken cancellationToken)
{
aggregate.Create(
command.CompanyId,
command.FiscalYearId,
command.CustomerId,
command.CustomerName,
command.CustomerNumber,
command.OrderNumber,
command.OrderDate,
command.ExpectedDeliveryDate,
command.Currency,
command.VatCode,
command.Notes,
command.Reference,
command.CreatedBy);
return Task.CompletedTask;
}
}
public class AddOrderLineCommandHandler
: CommandHandler<OrderAggregate, OrderId, AddOrderLineCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
AddOrderLineCommand command,
CancellationToken cancellationToken)
{
aggregate.AddLine(
command.Description,
command.Quantity,
command.UnitPrice,
command.VatCode,
command.AccountId,
command.Unit,
command.DiscountPercent,
command.ProductId);
return Task.CompletedTask;
}
}
public class UpdateOrderLineCommandHandler
: CommandHandler<OrderAggregate, OrderId, UpdateOrderLineCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
UpdateOrderLineCommand command,
CancellationToken cancellationToken)
{
aggregate.UpdateLine(
command.LineNumber,
command.Description,
command.Quantity,
command.UnitPrice,
command.VatCode,
command.AccountId,
command.Unit,
command.DiscountPercent,
command.ProductId);
return Task.CompletedTask;
}
}
public class RemoveOrderLineCommandHandler
: CommandHandler<OrderAggregate, OrderId, RemoveOrderLineCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
RemoveOrderLineCommand command,
CancellationToken cancellationToken)
{
aggregate.RemoveLine(command.LineNumber);
return Task.CompletedTask;
}
}
public class ConfirmOrderCommandHandler
: CommandHandler<OrderAggregate, OrderId, ConfirmOrderCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
ConfirmOrderCommand command,
CancellationToken cancellationToken)
{
aggregate.Confirm(command.ConfirmedBy);
return Task.CompletedTask;
}
}
public class MarkOrderLinesInvoicedCommandHandler
: CommandHandler<OrderAggregate, OrderId, MarkOrderLinesInvoicedCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
MarkOrderLinesInvoicedCommand command,
CancellationToken cancellationToken)
{
aggregate.MarkLinesAsInvoiced(
command.InvoiceId,
command.InvoiceNumber,
command.LineNumbers,
command.InvoicedBy);
return Task.CompletedTask;
}
}
public class CancelOrderCommandHandler
: CommandHandler<OrderAggregate, OrderId, CancelOrderCommand>
{
public override Task ExecuteAsync(
OrderAggregate aggregate,
CancelOrderCommand command,
CancellationToken cancellationToken)
{
aggregate.Cancel(command.Reason, command.CancelledBy);
return Task.CompletedTask;
}
}