using EventFlow.Aggregates;

namespace Books.Api.Domain.Orders.Events;

/// <summary>
/// Raised when a new order draft is created.
/// </summary>
public class OrderCreatedEvent(
    string companyId,
    string fiscalYearId,
    string customerId,
    string customerName,
    string customerNumber,
    string orderNumber,
    DateOnly orderDate,
    DateOnly? expectedDeliveryDate,
    string currency,
    string? vatCode,
    string? notes,
    string? reference,
    string createdBy) : AggregateEvent<OrderAggregate, OrderId>
{
    public string CompanyId { get; } = companyId;
    public string FiscalYearId { get; } = fiscalYearId;
    public string CustomerId { get; } = customerId;
    public string CustomerName { get; } = customerName;
    public string CustomerNumber { get; } = customerNumber;
    public string OrderNumber { get; } = orderNumber;
    public DateOnly OrderDate { get; } = orderDate;
    public DateOnly? ExpectedDeliveryDate { get; } = expectedDeliveryDate;
    public string Currency { get; } = currency;
    public string? VatCode { get; } = vatCode;
    public string? Notes { get; } = notes;
    public string? Reference { get; } = reference;
    public string CreatedBy { get; } = createdBy;
}
