<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ExtraTruckInfo StructType
 * @subpackage Structs
 */
class ExtraTruckInfo extends AbstractStructBase
{
    /**
     * The InDuty
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var string
     */
    public $InDuty;
    /**
     * The OutDuty
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var string
     */
    public $OutDuty;
    /**
     * The Country
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Country;
    /**
     * The VinNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $VinNumber;
    /**
     * The Category
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Category;
    /**
     * The Brand
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Brand;
    /**
     * The Make
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Make;
    /**
     * The Statuses
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\VehicleStatuses
     */
    public $Statuses;
    /**
     * The Tags
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\VehicleTags
     */
    public $Tags;
    /**
     * Constructor method for ExtraTruckInfo
     * @uses ExtraTruckInfo::setInDuty()
     * @uses ExtraTruckInfo::setOutDuty()
     * @uses ExtraTruckInfo::setCountry()
     * @uses ExtraTruckInfo::setVinNumber()
     * @uses ExtraTruckInfo::setCategory()
     * @uses ExtraTruckInfo::setBrand()
     * @uses ExtraTruckInfo::setMake()
     * @uses ExtraTruckInfo::setStatuses()
     * @uses ExtraTruckInfo::setTags()
     * @param string $inDuty
     * @param string $outDuty
     * @param string $country
     * @param string $vinNumber
     * @param string $category
     * @param string $brand
     * @param string $make
     * @param \StructType\VehicleStatuses $statuses
     * @param \StructType\VehicleTags $tags
     */
    public function __construct($inDuty = null, $outDuty = null, $country = null, $vinNumber = null, $category = null, $brand = null, $make = null, \StructType\VehicleStatuses $statuses = null, \StructType\VehicleTags $tags = null)
    {
        $this
            ->setInDuty($inDuty)
            ->setOutDuty($outDuty)
            ->setCountry($country)
            ->setVinNumber($vinNumber)
            ->setCategory($category)
            ->setBrand($brand)
            ->setMake($make)
            ->setStatuses($statuses)
            ->setTags($tags);
    }
    /**
     * Get InDuty value
     * @return string
     */
    public function getInDuty()
    {
        return $this->InDuty;
    }
    /**
     * Set InDuty value
     * @param string $inDuty
     * @return \StructType\ExtraTruckInfo
     */
    public function setInDuty($inDuty = null)
    {
        // validation for constraint: string
        if (!is_null($inDuty) && !is_string($inDuty)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($inDuty, true), gettype($inDuty)), __LINE__);
        }
        $this->InDuty = $inDuty;
        return $this;
    }
    /**
     * Get OutDuty value
     * @return string
     */
    public function getOutDuty()
    {
        return $this->OutDuty;
    }
    /**
     * Set OutDuty value
     * @param string $outDuty
     * @return \StructType\ExtraTruckInfo
     */
    public function setOutDuty($outDuty = null)
    {
        // validation for constraint: string
        if (!is_null($outDuty) && !is_string($outDuty)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($outDuty, true), gettype($outDuty)), __LINE__);
        }
        $this->OutDuty = $outDuty;
        return $this;
    }
    /**
     * Get Country value
     * @return string|null
     */
    public function getCountry()
    {
        return $this->Country;
    }
    /**
     * Set Country value
     * @param string $country
     * @return \StructType\ExtraTruckInfo
     */
    public function setCountry($country = null)
    {
        // validation for constraint: string
        if (!is_null($country) && !is_string($country)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($country, true), gettype($country)), __LINE__);
        }
        $this->Country = $country;
        return $this;
    }
    /**
     * Get VinNumber value
     * @return string|null
     */
    public function getVinNumber()
    {
        return $this->VinNumber;
    }
    /**
     * Set VinNumber value
     * @param string $vinNumber
     * @return \StructType\ExtraTruckInfo
     */
    public function setVinNumber($vinNumber = null)
    {
        // validation for constraint: string
        if (!is_null($vinNumber) && !is_string($vinNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($vinNumber, true), gettype($vinNumber)), __LINE__);
        }
        $this->VinNumber = $vinNumber;
        return $this;
    }
    /**
     * Get Category value
     * @return string|null
     */
    public function getCategory()
    {
        return $this->Category;
    }
    /**
     * Set Category value
     * @param string $category
     * @return \StructType\ExtraTruckInfo
     */
    public function setCategory($category = null)
    {
        // validation for constraint: string
        if (!is_null($category) && !is_string($category)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($category, true), gettype($category)), __LINE__);
        }
        $this->Category = $category;
        return $this;
    }
    /**
     * Get Brand value
     * @return string|null
     */
    public function getBrand()
    {
        return $this->Brand;
    }
    /**
     * Set Brand value
     * @param string $brand
     * @return \StructType\ExtraTruckInfo
     */
    public function setBrand($brand = null)
    {
        // validation for constraint: string
        if (!is_null($brand) && !is_string($brand)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($brand, true), gettype($brand)), __LINE__);
        }
        $this->Brand = $brand;
        return $this;
    }
    /**
     * Get Make value
     * @return string|null
     */
    public function getMake()
    {
        return $this->Make;
    }
    /**
     * Set Make value
     * @param string $make
     * @return \StructType\ExtraTruckInfo
     */
    public function setMake($make = null)
    {
        // validation for constraint: string
        if (!is_null($make) && !is_string($make)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($make, true), gettype($make)), __LINE__);
        }
        $this->Make = $make;
        return $this;
    }
    /**
     * Get Statuses value
     * @return \StructType\VehicleStatuses|null
     */
    public function getStatuses()
    {
        return $this->Statuses;
    }
    /**
     * Set Statuses value
     * @param \StructType\VehicleStatuses $statuses
     * @return \StructType\ExtraTruckInfo
     */
    public function setStatuses(\StructType\VehicleStatuses $statuses = null)
    {
        $this->Statuses = $statuses;
        return $this;
    }
    /**
     * Get Tags value
     * @return \StructType\VehicleTags|null
     */
    public function getTags()
    {
        return $this->Tags;
    }
    /**
     * Set Tags value
     * @param \StructType\VehicleTags $tags
     * @return \StructType\ExtraTruckInfo
     */
    public function setTags(\StructType\VehicleTags $tags = null)
    {
        $this->Tags = $tags;
        return $this;
    }
}
