public void Cancel() { IsCancelledOrArchived(); IsNotScheduled(); foreach (var bookedSlot in _slots.GetBookedSlots()) { Raise(new SlotBookingCancelled(Id, bookedSlot.Id, null)); } var events = _slots .All() .Select(slot => new SlotScheduleCancelled(Id, slot.Id)) .ToList(); events.ForEach(Raise); Raise(new DayScheduleCancelled(Id)); }