<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for WhoTracksWhatSelection StructType
 * @subpackage Structs
 */
class WhoTracksWhatSelection extends AbstractStructBase
{
    /**
     * The VisualizeVehicleGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeVehicleGroups;
    /**
     * The VisualizeTrailerGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeTrailerGroups;
    /**
     * The VisualizeDriverGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeDriverGroups;
    /**
     * The VisualizeCompanyPOIGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeCompanyPOIGroups;
    /**
     * The VisualizeAssetsGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeAssetsGroups;
    /**
     * The VisualizeTrackedItems
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $VisualizeTrackedItems;
    /**
     * The Dispatchers
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfIdentifier
     */
    public $Dispatchers;
    /**
     * Constructor method for WhoTracksWhatSelection
     * @uses WhoTracksWhatSelection::setVisualizeVehicleGroups()
     * @uses WhoTracksWhatSelection::setVisualizeTrailerGroups()
     * @uses WhoTracksWhatSelection::setVisualizeDriverGroups()
     * @uses WhoTracksWhatSelection::setVisualizeCompanyPOIGroups()
     * @uses WhoTracksWhatSelection::setVisualizeAssetsGroups()
     * @uses WhoTracksWhatSelection::setVisualizeTrackedItems()
     * @uses WhoTracksWhatSelection::setDispatchers()
     * @param bool $visualizeVehicleGroups
     * @param bool $visualizeTrailerGroups
     * @param bool $visualizeDriverGroups
     * @param bool $visualizeCompanyPOIGroups
     * @param bool $visualizeAssetsGroups
     * @param bool $visualizeTrackedItems
     * @param \ArrayType\ArrayOfIdentifier $dispatchers
     */
    public function __construct($visualizeVehicleGroups = null, $visualizeTrailerGroups = null, $visualizeDriverGroups = null, $visualizeCompanyPOIGroups = null, $visualizeAssetsGroups = null, $visualizeTrackedItems = null, \ArrayType\ArrayOfIdentifier $dispatchers = null)
    {
        $this
            ->setVisualizeVehicleGroups($visualizeVehicleGroups)
            ->setVisualizeTrailerGroups($visualizeTrailerGroups)
            ->setVisualizeDriverGroups($visualizeDriverGroups)
            ->setVisualizeCompanyPOIGroups($visualizeCompanyPOIGroups)
            ->setVisualizeAssetsGroups($visualizeAssetsGroups)
            ->setVisualizeTrackedItems($visualizeTrackedItems)
            ->setDispatchers($dispatchers);
    }
    /**
     * Get VisualizeVehicleGroups value
     * @return bool
     */
    public function getVisualizeVehicleGroups()
    {
        return $this->VisualizeVehicleGroups;
    }
    /**
     * Set VisualizeVehicleGroups value
     * @param bool $visualizeVehicleGroups
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeVehicleGroups($visualizeVehicleGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeVehicleGroups) && !is_bool($visualizeVehicleGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeVehicleGroups, true), gettype($visualizeVehicleGroups)), __LINE__);
        }
        $this->VisualizeVehicleGroups = $visualizeVehicleGroups;
        return $this;
    }
    /**
     * Get VisualizeTrailerGroups value
     * @return bool
     */
    public function getVisualizeTrailerGroups()
    {
        return $this->VisualizeTrailerGroups;
    }
    /**
     * Set VisualizeTrailerGroups value
     * @param bool $visualizeTrailerGroups
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeTrailerGroups($visualizeTrailerGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeTrailerGroups) && !is_bool($visualizeTrailerGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeTrailerGroups, true), gettype($visualizeTrailerGroups)), __LINE__);
        }
        $this->VisualizeTrailerGroups = $visualizeTrailerGroups;
        return $this;
    }
    /**
     * Get VisualizeDriverGroups value
     * @return bool
     */
    public function getVisualizeDriverGroups()
    {
        return $this->VisualizeDriverGroups;
    }
    /**
     * Set VisualizeDriverGroups value
     * @param bool $visualizeDriverGroups
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeDriverGroups($visualizeDriverGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeDriverGroups) && !is_bool($visualizeDriverGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeDriverGroups, true), gettype($visualizeDriverGroups)), __LINE__);
        }
        $this->VisualizeDriverGroups = $visualizeDriverGroups;
        return $this;
    }
    /**
     * Get VisualizeCompanyPOIGroups value
     * @return bool
     */
    public function getVisualizeCompanyPOIGroups()
    {
        return $this->VisualizeCompanyPOIGroups;
    }
    /**
     * Set VisualizeCompanyPOIGroups value
     * @param bool $visualizeCompanyPOIGroups
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeCompanyPOIGroups($visualizeCompanyPOIGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeCompanyPOIGroups) && !is_bool($visualizeCompanyPOIGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeCompanyPOIGroups, true), gettype($visualizeCompanyPOIGroups)), __LINE__);
        }
        $this->VisualizeCompanyPOIGroups = $visualizeCompanyPOIGroups;
        return $this;
    }
    /**
     * Get VisualizeAssetsGroups value
     * @return bool
     */
    public function getVisualizeAssetsGroups()
    {
        return $this->VisualizeAssetsGroups;
    }
    /**
     * Set VisualizeAssetsGroups value
     * @param bool $visualizeAssetsGroups
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeAssetsGroups($visualizeAssetsGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeAssetsGroups) && !is_bool($visualizeAssetsGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeAssetsGroups, true), gettype($visualizeAssetsGroups)), __LINE__);
        }
        $this->VisualizeAssetsGroups = $visualizeAssetsGroups;
        return $this;
    }
    /**
     * Get VisualizeTrackedItems value
     * @return bool
     */
    public function getVisualizeTrackedItems()
    {
        return $this->VisualizeTrackedItems;
    }
    /**
     * Set VisualizeTrackedItems value
     * @param bool $visualizeTrackedItems
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setVisualizeTrackedItems($visualizeTrackedItems = null)
    {
        // validation for constraint: boolean
        if (!is_null($visualizeTrackedItems) && !is_bool($visualizeTrackedItems)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($visualizeTrackedItems, true), gettype($visualizeTrackedItems)), __LINE__);
        }
        $this->VisualizeTrackedItems = $visualizeTrackedItems;
        return $this;
    }
    /**
     * Get Dispatchers value
     * @return \ArrayType\ArrayOfIdentifier|null
     */
    public function getDispatchers()
    {
        return $this->Dispatchers;
    }
    /**
     * Set Dispatchers value
     * @param \ArrayType\ArrayOfIdentifier $dispatchers
     * @return \StructType\WhoTracksWhatSelection
     */
    public function setDispatchers(\ArrayType\ArrayOfIdentifier $dispatchers = null)
    {
        $this->Dispatchers = $dispatchers;
        return $this;
    }
}
