public IList <ProductOrderCharm> CreateProductOrderCharms(IEnumerable <CharmOrderDto> charmsOrderDto, IList <Charm> charms) { var productOrderCharms = new List <ProductOrderCharm>(); foreach (var charmOrder in charmsOrderDto) { var charm = charms.SingleOrDefault(s => s.Id == charmOrder.CharmId); if (charm == null) { throw new StreetwoodException(ErrorCode.OrderCharmsNotFound); } var productOrderCharm = new ProductOrderCharm(charm, charmOrder.Sequence); productOrderCharms.Add(productOrderCharm); } return(productOrderCharms.OrderBy(s => s.Sequence).ToList()); }
public void When_Creating_Product_Order_Charms_Then_Returns_Correct_Ordered_Product_Order_Charms() { // Arrange var(charmsOrderDto, charms) = CreateData(); var productOrderCharms = new List <ProductOrderCharm>(); foreach (var charmOrder in charmsOrderDto) { var charm = charms.SingleOrDefault(s => s.Id == charmOrder.CharmId); var productOrderCharm = new ProductOrderCharm(charm, charmOrder.Sequence); productOrderCharms.Add(productOrderCharm); } var expected = productOrderCharms.OrderBy(x => x.Sequence).ToList(); // Act var result = sut.CreateProductOrderCharms(charmsOrderDto, charms); // Assert result.Should().BeEquivalentTo(expected, x => x.Excluding(y => y.Id)); }
public IList <(ProductOrderCharm, int productId)> Create(IList <ProductWithCharmsOrderDto> ordersDto, IList <Charm> charms) { var result = new List <(ProductOrderCharm, int)>(); foreach (var orderDto in ordersDto) { var charmsIds = orderDto.Charms.Select(s => s.CharmId); var orderCharms = charms.Where(s => charmsIds.Contains(s.Id)).ToList(); if (orderCharms.Any()) { foreach (var orderCharm in orderCharms) { var charSequence = orderDto.Charms.Single(s => s.CharmId == orderCharm.Id).Sequence; var productOrderCharm = new ProductOrderCharm(orderCharm, charSequence); result.Add((productOrderCharm, orderDto.ProductId)); } } } return(result); }