<?php

namespace App\Classes\Modules\PackingLists\DataTransferObjects;

use App\Classes\General\Interfaces\DataTransferObject;

class PackageObject implements DataTransferObject
{

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

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

    /** @var float  */
    private $width;

    /** @var float  */
    private $height;

    /** @var float  */
    private $length;

    /** @var float  */
    private $weight;

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

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

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

    /**
     * PackageObject constructor.
     * @param int $type
     * @param null|string $description
     * @param float $width
     * @param float $height
     * @param float $length
     * @param float $weight
     * @param int $quantity
     * @param int $status
     * @param null|string $reference
     */
    public function __construct(int $type, ?string $description, float $width, float $height, float $length, float $weight, int $quantity, int $status, ?string $reference=null)
    {
        $this->type = $type;
        $this->description = $description;
        $this->width = $width;
        $this->height = $height;
        $this->length = $length;
        $this->weight = $weight;
        $this->quantity = $quantity;
        $this->status = $status;
        $this->reference = $reference;
    }

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

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

    /**
     * @return float
     */
    public function getWidth(): float
    {
        return $this->width;
    }

    /**
     * @return float
     */
    public function getHeight(): float
    {
        return $this->height;
    }

    /**
     * @return float
     */
    public function getLength(): float
    {
        return $this->length;
    }

    /**
     * @return float
     */
    public function getWeight(): float
    {
        return $this->weight;
    }

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

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

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


}
