/// <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;
            }
        }