<?php

namespace Xentral\Modules\AmazonVendorDF\Data;

class ShippingLabel implements \JsonSerializable
{
    /** @var string */
    private $purchaseOrderNumber;
    /** @var string */
    private $encodedLabelData;
    /** @var string */
    private $labelFormat;
    /** @var string */
    private $trackingNumber;

    public function __construct(string $purchaseOrderNumber, string $encodedLabelData, string $labelFormat = 'PNG')
    {
        //@TODO check if we need to implement multiple labels per order
        $this->purchaseOrderNumber = $purchaseOrderNumber;
        $this->encodedLabelData = $encodedLabelData;
        $this->labelFormat = $labelFormat;
    }

    public function getTrackingNumber(): string
    {
        return $this->trackingNumber;
    }

    public function setTrackingNumber(string $trackingNumber): self
    {
        $this->trackingNumber = $trackingNumber;

        return $this;
    }

    public function hasTrackingNumber(): bool
    {
        return $this->trackingNumber !== null;
    }

    public function getEncodedLabelData(): string
    {
        return $this->encodedLabelData;
    }

    public function jsonSerialize(): array
    {
        return [
            'purchase_order_number' => $this->purchaseOrderNumber,
            'tracking_number' => $this->trackingNumber,
            'encodedLabelData' => $this->encodedLabelData
        ];
    }
}