public bool RemoveCard(IList <Card> cards, int userId) { if (cards == null || !cards.Any()) { throw new ArgumentNullException("Invalid cards"); } if (IsAnAdmin(userId)) { var cardsToBeDeleted = _catalogRepository.GetCards(cards, this.Id); if (cardsToBeDeleted == null || !cardsToBeDeleted.Any()) { throw new ArgumentException(string.Format("Invalid cards provided")); } var deletionSuccess = _catalogRepository.DeleteCards(cardsToBeDeleted); if (deletionSuccess) { cardsToBeDeleted.ToList().ForEach(d => _cardEventHandler.Raise(new CardUnlinkedEvent(Id, d.Id, d.Version))); return(deletionSuccess); } } return(false); }