/// <summary> /// Add a person to a product. /// </summary> public void AddPersonToProduct(int personId, int productId, Role role) { try { var person = _queries.GetPerson(personId); Entity.CheckNull(person); var product = _queries.GetProduct(productId); Entity.CheckNull(product); var personInProduct = product.Persons.SingleOrDefault(PersonInProduct.Get(personId, role)); Entity.CheckNotNull(personInProduct); product.Persons.Add(PersonFactory.CreatePersonInProduct(personId, person.Name, role)); _commands.UpdateProduct(product); } catch (Exception ex) when(ex is ArgumentNullException || ex is TooManyFoundException) { _logger.LogWarning($"AddPersonToProduct failed: {ex.Message}"); throw; } }