/// <summary> /// Build a ProductPerson from a PersonInProduct. /// </summary> public static ProductPerson CreateProductPerson(PersonInProduct personInProduct, int productId) => new ProductPerson { PersonId = personInProduct.Id, ProductId = productId, Role = personInProduct.Role };
public void TestShouldGetPersonFromIdAndGetNull() { // Arrange var persons = SamplePersonInProduct.CreatePersonsInProduct(); // Act var result = PersonInProduct.Get(2, Role.Producer); // Assert var person = persons.SingleOrDefault(result); Assert.IsNull(person); }
public void TestShouldGetPersonFromId() { // Arrange var persons = SamplePersonInProduct.CreatePersonsInProduct(); // Act var result = PersonInProduct.Get(1, Role.Producer); // Assert var person = persons.SingleOrDefault(result); Assert.IsNotNull(person); Assert.AreEqual("First Person", person.Name); }
/// <summary> /// Remove a person from a product. /// </summary> public void RemovePersonFromProduct(int personId, int productId, Role role) { try { var product = _queries.GetProduct(productId); Entity.CheckNull(product); var personInProduct = product.Persons.SingleOrDefault(PersonInProduct.Get(personId, role)); Entity.CheckNull(personInProduct); product.Persons.Remove(personInProduct); _commands.UpdateProduct(product); } catch (ArgumentNullException ex) { _logger.LogWarning($"RemovePersonFromProduct failed: {ex.Message}"); throw; } }
/// <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; } }