/** * @param DimensionsInterface $dimensions * @return Dimensions */ public function normalize(DimensionsInterface $dimensions) { $values = [$dimensions->getLength()]; if ($this->math->greaterThan($dimensions->getWidth(), reset($values))) { array_unshift($values, $dimensions->getWidth()); } else { $values[] = $dimensions->getWidth(); } if ($this->math->greaterThan($dimensions->getHeight(), reset($values))) { array_unshift($values, $dimensions->getHeight()); } else { $values[] = $dimensions->getHeight(); } $normalized = new Dimensions(); $normalized->setUnit($dimensions->getUnit()); $normalized->setLength(reset($values)); $normalized->setWidth(next($values)); $normalized->setHeight(next($values)); return $normalized; }
/** * @param DimensionsInterface $dimensions * @return Weight */ public function calculate(DimensionsInterface $dimensions) { $length = $this->lengthConverter->convert($dimensions->getLength(), $dimensions->getUnit(), LengthUnits::IN); $width = $this->lengthConverter->convert($dimensions->getWidth(), $dimensions->getUnit(), LengthUnits::IN); $height = $this->lengthConverter->convert($dimensions->getHeight(), $dimensions->getUnit(), LengthUnits::IN); $volume = $this->math->mul($length, $width); $volume = $this->math->mul($volume, $height); $value = $this->math->div($volume, $this->getFactor()); $value = $this->math->roundUp($value, 3); $weight = new Weight(); $weight->setValue($value); $weight->setUnit(WeightUnits::LB); return $weight; }