<?php

namespace App\Classes\Modules\Transports\DataTransferObjects;

use App\Classes\General\Interfaces\DataTransferObject;
use Carbon\Carbon;

class TransportObject implements DataTransferObject
{

    /** @var string */
    private $type;

    /** @var null|string */
    private $courier;

    /** @var null|string */
    private $trackingNumber;

    /** @var Carbon|null */
    private $dispatchDate;

    /** @var Carbon|null */
    private $dropDate;

    /** @var int */
    private $status;

    /**
     * TransportObject constructor.
     * @param string $type
     * @param null|string $courier
     * @param null|string $trackingNumber
     * @param Carbon|null $dispatchDate
     * @param Carbon|null $dropDate
     * @param int $status
     */
    public function __construct(string $type, ?string $courier, ?string $trackingNumber, ?Carbon $dispatchDate, ?Carbon $dropDate, int $status)
    {
        $this->type = $type;
        $this->courier = $courier;
        $this->trackingNumber = $trackingNumber;
        $this->dispatchDate = $dispatchDate;
        $this->dropDate = $dropDate;
        $this->status = $status;
    }

    /**
     * @return string
     */
    public function getType(): string
    {
        return $this->type;
    }

    /**
     * @return null|string
     */
    public function getCourier(): ?string
    {
        return $this->courier;
    }

    /**
     * @return null|string
     */
    public function getTrackingNumber(): ?string
    {
        return $this->trackingNumber;
    }

    /**
     * @return Carbon|null
     */
    public function getDispatchDate(): ?Carbon
    {
        return $this->dispatchDate;
    }

    /**
     * @return Carbon|null
     */
    public function getDropDate(): ?Carbon
    {
        return $this->dropDate;
    }

    /**
     * @return int
     */
    public function getStatus(): int
    {
        return $this->status;
    }


}
