/** * @param Dimensions $dimensions * @return Dimensions */ public function normalize(Dimensions $dimensions) { $values = [$dimensions->getLength(), $dimensions->getWidth(), $dimensions->getHeight()]; usort($values, [$this, 'sort']); $normalized = new Dimensions(); $normalized->setUnit($dimensions->getUnit()); $normalized->setLength(reset($values)); $normalized->setWidth(next($values)); $normalized->setHeight(next($values)); return $normalized; }
/** * @param Dimensions $dimensions * @return Weight */ public function calculate(Dimensions $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; }