public void RemoveBuddy(string buddyId) { if (!_buddyIds.Any()) { throw new InvalidOperationException("Group is already empty"); } if (Status != GroupStatus.Merging && _buddyIds.Count == 1) { throw new InvalidOperationException("Can't leave group when you're the only one in it"); } if (!_buddyIds.Contains(buddyId)) { throw new InvalidOperationException($"Buddy {buddyId} isn't present in the current group"); } var e = new BuddyRemoved(Id, buddyId); Publish(e); }
private void When(BuddyRemoved e) { _buddyIds.Remove(e.BuddyId); _buddyIdsBlackList.Add(e.BuddyId); }