Пример #1
0
        public void Test3()
        {
            var sizeVariation = new SizeVariation()
            {
                ListParams = new List <Size>()
                {
                    new Size()
                    {
                        TypeSize = SizesEnum.Breast, Value = 90, MaxValue = 100
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.Waist, Value = 65, MaxValue = 70
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.Hips, Value = 95, MaxValue = 100
                    },
                    new Size()
                    {
                        TypeSize = SizesEnum.WidthOfTheShoulders, Value = 70, MaxValue = 75
                    }
                }
            };
            var pv = new ProductVariation()
            {
                SizeVariation = new List <SizeVariation>()
                {
                    sizeVariation
                }
            };
            var customerSize = new UserSizes()
            {
                Breast         = 92,
                Waist          = 66,
                Thigh          = 97,
                ShouldersWidth = 69,
            };
            double expected = 7.28;

            pv = SizeResponseController.CalculateRating(pv, customerSize);
            var actual = pv.SizeVariation.FirstOrDefault().Rating;

            Assert.IsTrue(Math.Abs(expected - actual) < 0.1);
        }
        public static ProductVariation CalculateRating(ProductVariation pv, UserSizes user)
        {
            foreach (var sizeVariation in pv.SizeVariation)
            {
                double arrange = 0;
                foreach (var size in sizeVariation.ListParams)
                {
                    switch (size.TypeSize)
                    {
                    case SizesEnum.Breast:
                    {
                        if (user.Breast < size.Value)
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Breast,
                                                                                 (double)size.Value, (double)size.Value * 0.95);
                        }
                        else
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Breast,
                                                                                 (double)size.Value, (double)size.MaxValue);
                        }

                        size.UserSize     = (double)user.Breast;
                        size.SizeResponse = SizeResponseController.GetResponse(size.Rating);
                    }
                    break;

                    case SizesEnum.Waist:
                    {
                        if (user.Waist < size.Value)
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Waist,
                                                                                 (double)size.Value, (double)size.Value * 0.95);
                        }
                        else
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Waist,
                                                                                 (double)size.Value, (double)size.MaxValue);
                        }
                        size.UserSize     = (double)user.Waist;
                        size.SizeResponse = SizeResponseController.GetResponse(size.Rating);
                    }
                    break;

                    case SizesEnum.Hips:
                    {
                        if (user.Thigh < size.Value)
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Thigh,
                                                                                 (double)size.Value, (double)size.Value * 0.95);
                        }
                        else
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.Thigh,
                                                                                 (double)size.Value, (double)size.MaxValue);
                        }
                        size.UserSize     = (double)user.Thigh;
                        size.SizeResponse = SizeResponseController.GetResponse(size.Rating);
                    }
                    break;

                    case SizesEnum.WidthOfTheShoulders:
                    {
                        if (user.ShouldersWidth < size.Value)
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.ShouldersWidth,
                                                                                 (double)size.Value, (double)size.Value * 0.95);
                        }
                        else
                        {
                            size.Rating = SizeResponseController.CalculateRating((double)user.ShouldersWidth,
                                                                                 (double)size.Value, (double)size.MaxValue);
                        }
                        size.UserSize     = (double)user.ShouldersWidth;
                        size.SizeResponse = SizeResponseController.GetResponse(size.Rating);
                    }
                    break;
                    }

                    arrange += size.Rating;
                }

                arrange /= 4.0;
                sizeVariation.Rating       = arrange;
                sizeVariation.SizeResponse = SizeResponseController.GetResponse(arrange);
            }

            return(pv);
        }