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