public IList <Card> AddCards(IList <Card> cards, int userId) { if (cards == null || !cards.Any()) { throw new ArgumentNullException("Invalid cards"); } if (IsAnAdmin(userId)) { if (CardAlreadyExist(cards)) { throw new InvalidOperationException("Duplicate cards are not allowed to be added"); } foreach (var card in cards) { card.LinkToCatalog(Id); } var addedCards = _catalogRepository.AddCards(cards); addedCards.ToList().ForEach(d => _cardEventHandler.Raise(new CardLinkedEvent(Id, d.Id, d.Version))); return(cards); } return(null); }