PackagingResponseMapper.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Rest\EntityMapper;
  6. use Temando\Shipping\Model\PackagingInterface;
  7. use Temando\Shipping\Model\PackagingInterfaceFactory;
  8. use Temando\Shipping\Rest\Response\DataObject\Container;
  9. /**
  10. * Map API data to application data object
  11. *
  12. * @package Temando\Shipping\Rest
  13. * @author Sebastian Ertner <sebastian.ertner@netresearch.de>
  14. * @author Christoph Aßmann <christoph.assmann@netresearch.de>
  15. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  16. * @link http://www.temando.com/
  17. */
  18. class PackagingResponseMapper
  19. {
  20. /**
  21. * @var PackagingInterfaceFactory
  22. */
  23. private $packagingFactory;
  24. /**
  25. * PackagingResponseMapper constructor.
  26. * @param PackagingInterfaceFactory $packagingFactory
  27. */
  28. public function __construct(PackagingInterfaceFactory $packagingFactory)
  29. {
  30. $this->packagingFactory = $packagingFactory;
  31. }
  32. /**
  33. * @param Container $apiContainer
  34. * @return PackagingInterface
  35. */
  36. public function map(Container $apiContainer)
  37. {
  38. $innerDimensions = $apiContainer->getAttributes()->getInnerDimensions();
  39. $tareWeight = $apiContainer->getAttributes()->getTareWeight();
  40. $maxWeight = $apiContainer->getAttributes()->getMaximumWeight();
  41. $packaging = $this->packagingFactory->create(['data' => [
  42. PackagingInterface::PACKAGING_ID => $apiContainer->getId(),
  43. PackagingInterface::NAME => $apiContainer->getAttributes()->getName(),
  44. PackagingInterface::TYPE => $apiContainer->getAttributes()->getType(),
  45. PackagingInterface::WIDTH => sprintf('%s %s', $innerDimensions->getWidth(), $innerDimensions->getUnit()),
  46. PackagingInterface::LENGTH => sprintf('%s %s', $innerDimensions->getLength(), $innerDimensions->getUnit()),
  47. PackagingInterface::HEIGHT => sprintf('%s %s', $innerDimensions->getHeight(), $innerDimensions->getUnit()),
  48. PackagingInterface::TARE_WEIGHT => sprintf('%s %s', $tareWeight->getValue(), $tareWeight->getUnit()),
  49. PackagingInterface::MAX_WEIGHT => sprintf('%s %s', $maxWeight->getValue(), $maxWeight->getUnit()),
  50. ]]);
  51. return $packaging;
  52. }
  53. }