Пример #1
0
        public IHttpActionResult Get(int lengthInMm, int breadthInMm, int heightinMm, int weight)
        {
            if (lengthInMm < 1 || breadthInMm < 1 || heightinMm < 1)
            {
                return(BadRequest("Package dimensions must be greater than 1 mm"));
            }
            if (weight < 0)
            {
                return(BadRequest("Weight must be greater than 0 kg"));
            }

            var criteria = new PackageTypeAdvisorCriteria(lengthInMm, breadthInMm, heightinMm, weight);

            BasePackageType packageType = _packageTypeAdvisorService.AdvisePackageType(criteria);

            if (packageType == null)
            {
                return(Ok("This package size doesn't fit our current package offerings"));
            }

            return(Ok(new GetPackageTypeModel
            {
                Id = packageType.Id,
                Name = packageType.Name,
                Cost = packageType.Cost
            }));
        }
        public void Should_return_correct_package_type(int length, int breadth, int height, Type expectedType)
        {
            var service = new PackageTypeAdvisorService(_packageTypes);
            PackageTypeAdvisorCriteria criteria    = new PackageTypeAdvisorCriteria(length, breadth, height, 10);
            BasePackageType            packageType = service.AdvisePackageType(criteria);

            packageType.Should().BeOfType(expectedType);
        }
Пример #3
0
        public BasePackageType AdvisePackageType(PackageTypeAdvisorCriteria criteria)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException(nameof(criteria));
            }

            foreach (BasePackageType packageType in _packageTypes)
            {
                if (packageType.DoesPackageFit(criteria.LengthInMm, criteria.BreadthInMm, criteria.HeightInMm))
                {
                    return(packageType);
                }
            }

            return(null);
        }