public void Cancel()
    {
        if (Status != ReservationStatus.Tentative)
        {
            throw new InvalidOperationException($"Only tentative reservation can be cancelled (current status: {Status}).");
        }

        var @event = new ReservationCancelled(Id);

        Enqueue(@event);
        Apply(@event);
    }
 public void Apply(ReservationCancelled @event)
 {
     Status = ReservationStatus.Cancelled;
     Version++;
 }