using System; using System.Collections.Generic; using System.Linq; namespace BoundaryLab.Domain; public record OrderAccepted(string Id, int Units); public record OrderTransition(OrderState State, OrderAccepted Event); public record OrderState(string Id, int Units, bool Accepted) { public OrderTransition? Accept() => Accepted || Units < 1 ? null : new(this with { Accepted = true }, new OrderAccepted(Id, Units)); }