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