internal bool TryReserveTicketsFor(Customer customer, int numTickets) { var requiredCapacity = _ticketsSold + numTickets; if (Capacity < requiredCapacity) return false; var fact = new TicketReservedFact { AggregateRootId = Id, CustomerId = customer.Id, NumTickets = numTickets, }; Append(fact); Apply(fact); return true; }
public void Apply(TicketReservedFact fact) { var ticketSale = new TicketSale(fact.CustomerId, fact.NumTickets); _ticketSales.Add(ticketSale); _ticketsSold += fact.NumTickets; }