<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for WhoTracksWhatPerDispatcherItem StructType
 * @subpackage Structs
 */
class WhoTracksWhatPerDispatcherItem extends AbstractStructBase
{
    /**
     * The Dispatcher
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\IdentifierPerson
     */
    public $Dispatcher;
    /**
     * The VehicleGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\FollowedVehicleCollection
     */
    public $VehicleGroups;
    /**
     * The TrailerGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\FollowedTrailerCollection
     */
    public $TrailerGroups;
    /**
     * The DriverGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\FollowedDriverCollection
     */
    public $DriverGroups;
    /**
     * The CompanyPOIGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\FollowedCompanyPOICollection
     */
    public $CompanyPOIGroups;
    /**
     * The AssetGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\FollowedAssetCollection
     */
    public $AssetGroups;
    /**
     * Constructor method for WhoTracksWhatPerDispatcherItem
     * @uses WhoTracksWhatPerDispatcherItem::setDispatcher()
     * @uses WhoTracksWhatPerDispatcherItem::setVehicleGroups()
     * @uses WhoTracksWhatPerDispatcherItem::setTrailerGroups()
     * @uses WhoTracksWhatPerDispatcherItem::setDriverGroups()
     * @uses WhoTracksWhatPerDispatcherItem::setCompanyPOIGroups()
     * @uses WhoTracksWhatPerDispatcherItem::setAssetGroups()
     * @param \StructType\IdentifierPerson $dispatcher
     * @param \StructType\FollowedVehicleCollection $vehicleGroups
     * @param \StructType\FollowedTrailerCollection $trailerGroups
     * @param \StructType\FollowedDriverCollection $driverGroups
     * @param \StructType\FollowedCompanyPOICollection $companyPOIGroups
     * @param \StructType\FollowedAssetCollection $assetGroups
     */
    public function __construct(\StructType\IdentifierPerson $dispatcher = null, \StructType\FollowedVehicleCollection $vehicleGroups = null, \StructType\FollowedTrailerCollection $trailerGroups = null, \StructType\FollowedDriverCollection $driverGroups = null, \StructType\FollowedCompanyPOICollection $companyPOIGroups = null, \StructType\FollowedAssetCollection $assetGroups = null)
    {
        $this
            ->setDispatcher($dispatcher)
            ->setVehicleGroups($vehicleGroups)
            ->setTrailerGroups($trailerGroups)
            ->setDriverGroups($driverGroups)
            ->setCompanyPOIGroups($companyPOIGroups)
            ->setAssetGroups($assetGroups);
    }
    /**
     * Get Dispatcher value
     * @return \StructType\IdentifierPerson|null
     */
    public function getDispatcher()
    {
        return $this->Dispatcher;
    }
    /**
     * Set Dispatcher value
     * @param \StructType\IdentifierPerson $dispatcher
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setDispatcher(\StructType\IdentifierPerson $dispatcher = null)
    {
        $this->Dispatcher = $dispatcher;
        return $this;
    }
    /**
     * Get VehicleGroups value
     * @return \StructType\FollowedVehicleCollection|null
     */
    public function getVehicleGroups()
    {
        return $this->VehicleGroups;
    }
    /**
     * Set VehicleGroups value
     * @param \StructType\FollowedVehicleCollection $vehicleGroups
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setVehicleGroups(\StructType\FollowedVehicleCollection $vehicleGroups = null)
    {
        $this->VehicleGroups = $vehicleGroups;
        return $this;
    }
    /**
     * Get TrailerGroups value
     * @return \StructType\FollowedTrailerCollection|null
     */
    public function getTrailerGroups()
    {
        return $this->TrailerGroups;
    }
    /**
     * Set TrailerGroups value
     * @param \StructType\FollowedTrailerCollection $trailerGroups
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setTrailerGroups(\StructType\FollowedTrailerCollection $trailerGroups = null)
    {
        $this->TrailerGroups = $trailerGroups;
        return $this;
    }
    /**
     * Get DriverGroups value
     * @return \StructType\FollowedDriverCollection|null
     */
    public function getDriverGroups()
    {
        return $this->DriverGroups;
    }
    /**
     * Set DriverGroups value
     * @param \StructType\FollowedDriverCollection $driverGroups
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setDriverGroups(\StructType\FollowedDriverCollection $driverGroups = null)
    {
        $this->DriverGroups = $driverGroups;
        return $this;
    }
    /**
     * Get CompanyPOIGroups value
     * @return \StructType\FollowedCompanyPOICollection|null
     */
    public function getCompanyPOIGroups()
    {
        return $this->CompanyPOIGroups;
    }
    /**
     * Set CompanyPOIGroups value
     * @param \StructType\FollowedCompanyPOICollection $companyPOIGroups
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setCompanyPOIGroups(\StructType\FollowedCompanyPOICollection $companyPOIGroups = null)
    {
        $this->CompanyPOIGroups = $companyPOIGroups;
        return $this;
    }
    /**
     * Get AssetGroups value
     * @return \StructType\FollowedAssetCollection|null
     */
    public function getAssetGroups()
    {
        return $this->AssetGroups;
    }
    /**
     * Set AssetGroups value
     * @param \StructType\FollowedAssetCollection $assetGroups
     * @return \StructType\WhoTracksWhatPerDispatcherItem
     */
    public function setAssetGroups(\StructType\FollowedAssetCollection $assetGroups = null)
    {
        $this->AssetGroups = $assetGroups;
        return $this;
    }
}
