<?php

namespace KupShop\KupShopBundle\Util\Delivery;

class RestrictionParams
{
    protected ?float $maxPrice = null;

    protected ?float $minPrice = null;

    protected ?float $maxCOD = null;

    /** in kg */
    protected ?float $maxWeight = null;

    /** in kg */
    protected ?float $minWeight = null;

    /** in cm */
    protected ?float $maxLength = null;

    /** in cm */
    protected ?float $minLength = null;

    /** in cm */
    protected ?float $maxSumOfDimensions = null;

    /** in cm */
    protected ?float $minSumOfDimensions = null;

    protected ?float $maxPieces = null;

    /** @var float[]|null three numbers [0 => highest .. 2 => lowest] each in cm */
    protected $maxDimensions;

    /** @var float[]|null three numbers [0 => lowest .. 2 => highest] each in cm */
    protected $minDimensions;

    /** in liters */
    protected ?float $maxVolume = null;

    /** @var float[]|null three numbers, each in cm */
    protected $maxSumOfEachDimension;

    /** @var float[]|null three numbers, each in cm */
    protected $minSumOfEachDimension;

    public function getMaxPrice(): ?float
    {
        return $this->maxPrice;
    }

    public function setMaxPrice(?float $maxPrice): RestrictionParams
    {
        $this->maxPrice = $maxPrice;

        return $this;
    }

    public function getMinPrice(): ?float
    {
        return $this->minPrice;
    }

    public function setMinPrice(?float $minPrice): RestrictionParams
    {
        $this->minPrice = $minPrice;

        return $this;
    }

    public function getMaxCOD(): ?float
    {
        return $this->maxCOD;
    }

    public function setMaxCOD(?float $maxCOD): RestrictionParams
    {
        $this->maxCOD = $maxCOD;

        return $this;
    }

    /**
     * @return float|null in kg
     */
    public function getMaxWeight(): ?float
    {
        return $this->maxWeight;
    }

    /**
     * @param float|null $maxWeight in kg
     */
    public function setMaxWeight(?float $maxWeight): RestrictionParams
    {
        $this->maxWeight = $maxWeight;

        return $this;
    }

    public function getMinWeight(): ?float
    {
        return $this->minWeight;
    }

    public function setMinWeight(?float $minWeight): RestrictionParams
    {
        $this->minWeight = $minWeight;

        return $this;
    }

    public function getMaxLength(): ?float
    {
        return $this->maxLength;
    }

    public function setMaxLength(?float $maxLength): RestrictionParams
    {
        $this->maxLength = $maxLength;

        return $this;
    }

    public function getMaxSumOfDimensions(): ?float
    {
        return $this->maxSumOfDimensions;
    }

    public function setMaxSumOfDimensions(?float $maxSumOfDimensions): RestrictionParams
    {
        $this->maxSumOfDimensions = $maxSumOfDimensions;

        return $this;
    }

    /**
     * @return float[]|null three numbers [0 => highest .. 2 => lowest] each in cm
     */
    public function getMaxDimensions(): ?array
    {
        return $this->maxDimensions;
    }

    /**
     * @param float[]|null $maxDimensions three numbers [0 => highest .. 2 => lowest] each in cm
     */
    public function setMaxDimensions(?array $maxDimensions): RestrictionParams
    {
        $this->maxDimensions = $maxDimensions;

        return $this;
    }

    /**
     * @return float[]|null
     */
    public function getMaxSumOfEachDimension(): ?array
    {
        return $this->maxSumOfEachDimension;
    }

    /**
     * @param float[]|null $maxSumOfEachDimension
     */
    public function setMaxSumOfEachDimension(?array $maxSumOfEachDimension): RestrictionParams
    {
        $this->maxSumOfEachDimension = $maxSumOfEachDimension;

        return $this;
    }

    public function getMaxVolume(): ?float
    {
        return $this->maxVolume;
    }

    public function setMaxVolume(?float $maxVolume): RestrictionParams
    {
        $this->maxVolume = $maxVolume;

        return $this;
    }

    public function getMinLength(): ?float
    {
        return $this->minLength;
    }

    public function setMinLength(?float $minLength): RestrictionParams
    {
        $this->minLength = $minLength;

        return $this;
    }

    public function getMinSumOfDimensions(): ?float
    {
        return $this->minSumOfDimensions;
    }

    public function setMinSumOfDimensions(?float $minSumOfDimensions): RestrictionParams
    {
        $this->minSumOfDimensions = $minSumOfDimensions;

        return $this;
    }

    public function getMinSumOfEachDimension(): ?array
    {
        return $this->minSumOfEachDimension;
    }

    public function setMinSumOfEachDimension(?array $minSumOfEachDimension): RestrictionParams
    {
        $this->minSumOfEachDimension = $minSumOfEachDimension;

        return $this;
    }

    /**
     * @return float[]|null three numbers [0 => highest .. 2 => lowest] each in cm
     */
    public function getMinDimensions(): ?array
    {
        return $this->minDimensions;
    }

    /**
     * @param float[]|null $minDimensions three numbers [0 => lowest .. 2 => highest] each in cm
     */
    public function setMinDimensions(?array $minDimensions): RestrictionParams
    {
        $this->minDimensions = $minDimensions;

        return $this;
    }

    public function setMaxPieces(?float $pieces): RestrictionParams
    {
        $this->maxPieces = $pieces;

        return $this;
    }

    public function getMaxPieces(): ?float
    {
        return $this->maxPieces;
    }
}
