woo-postnl
/
includes
/
vendor
/
myparcelnl
/
sdk
/
src
/
Adapter
/
DeliveryOptions
/
DeliveryOptionsV2Adapter.php
DeliveryOptionsV2Adapter.php in PostNL for WooCommerce 4.0.1, at includes/vendor/myparcelnl/sdk/src/Adapter/DeliveryOptions/DeliveryOptionsV2Adapter.php
| 1 | <?php declare(strict_types=1); |
| 2 | |
| 3 | namespace MyParcelNL\Sdk\src\Adapter\DeliveryOptions; |
| 4 | |
| 5 | use Exception; |
| 6 | use MyParcelNL\Sdk\src\Model\Consignment\AbstractConsignment; |
| 7 | |
| 8 | class DeliveryOptionsV2Adapter extends AbstractDeliveryOptionsAdapter |
| 9 | { |
| 10 | /** |
| 11 | * Default values to use if there is no input. |
| 12 | */ |
| 13 | public const DEFAULTS = [ |
| 14 | "carrier" => null, |
| 15 | "deliveryType" => "standard", |
| 16 | "date" => "", |
| 17 | "shipmentOptions" => [], |
| 18 | ]; |
| 19 | |
| 20 | /** |
| 21 | * @param array $deliveryOptions |
| 22 | */ |
| 23 | public function __construct(array $deliveryOptions = []) |
| 24 | { |
| 25 | if (! count($deliveryOptions)) { |
| 26 | $deliveryOptions = self::DEFAULTS; |
| 27 | } |
| 28 | |
| 29 | $this->carrier = $deliveryOptions["carrier"] ?? null; |
| 30 | $this->date = $deliveryOptions["date"]; |
| 31 | $this->deliveryType = $this->normalizeDeliveryType($deliveryOptions["time"][0]["type"]); |
| 32 | $this->shipmentOptions = new ShipmentOptionsV2Adapter($deliveryOptions["options"] ?? []); |
| 33 | |
| 34 | if ($this->isPickup()) { |
| 35 | $this->pickupLocation = new PickupLocationV2Adapter($deliveryOptions); |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | /** |
| 40 | * @param $deliveryType |
| 41 | * |
| 42 | * @return string |
| 43 | */ |
| 44 | private function normalizeDeliveryType(int $deliveryType): string |
| 45 | { |
| 46 | return array_flip(AbstractConsignment::DELIVERY_TYPES_NAMES_IDS_MAP)[$deliveryType]; |
| 47 | } |
| 48 | } |
| 49 |