Пример #1
0
        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);
        }