<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for PersonSelection_V4 StructType
 * @subpackage Structs
 */
class PersonSelection_V4 extends AbstractStructBase
{
    /**
     * The IncludeContactInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeContactInfo;
    /**
     * The IncludeGroups
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeGroups;
    /**
     * The IncludeInactiveDrivers
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeInactiveDrivers;
    /**
     * The IncludeLastVehicleInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeLastVehicleInfo;
    /**
     * The IncludeLicenseInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeLicenseInfo;
    /**
     * The IncludeTachoCardInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeTachoCardInfo;
    /**
     * The IncludeUpdateDates
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeUpdateDates;
    /**
     * The IncludeHRInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeHRInfo;
    /**
     * The Persons
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfIdentifier
     */
    public $Persons;
    /**
     * Constructor method for PersonSelection_V4
     * @uses PersonSelection_V4::setIncludeContactInfo()
     * @uses PersonSelection_V4::setIncludeGroups()
     * @uses PersonSelection_V4::setIncludeInactiveDrivers()
     * @uses PersonSelection_V4::setIncludeLastVehicleInfo()
     * @uses PersonSelection_V4::setIncludeLicenseInfo()
     * @uses PersonSelection_V4::setIncludeTachoCardInfo()
     * @uses PersonSelection_V4::setIncludeUpdateDates()
     * @uses PersonSelection_V4::setIncludeHRInfo()
     * @uses PersonSelection_V4::setPersons()
     * @param bool $includeContactInfo
     * @param bool $includeGroups
     * @param bool $includeInactiveDrivers
     * @param bool $includeLastVehicleInfo
     * @param bool $includeLicenseInfo
     * @param bool $includeTachoCardInfo
     * @param bool $includeUpdateDates
     * @param bool $includeHRInfo
     * @param \ArrayType\ArrayOfIdentifier $persons
     */
    public function __construct($includeContactInfo = null, $includeGroups = null, $includeInactiveDrivers = null, $includeLastVehicleInfo = null, $includeLicenseInfo = null, $includeTachoCardInfo = null, $includeUpdateDates = null, $includeHRInfo = null, \ArrayType\ArrayOfIdentifier $persons = null)
    {
        $this
            ->setIncludeContactInfo($includeContactInfo)
            ->setIncludeGroups($includeGroups)
            ->setIncludeInactiveDrivers($includeInactiveDrivers)
            ->setIncludeLastVehicleInfo($includeLastVehicleInfo)
            ->setIncludeLicenseInfo($includeLicenseInfo)
            ->setIncludeTachoCardInfo($includeTachoCardInfo)
            ->setIncludeUpdateDates($includeUpdateDates)
            ->setIncludeHRInfo($includeHRInfo)
            ->setPersons($persons);
    }
    /**
     * Get IncludeContactInfo value
     * @return bool
     */
    public function getIncludeContactInfo()
    {
        return $this->IncludeContactInfo;
    }
    /**
     * Set IncludeContactInfo value
     * @param bool $includeContactInfo
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeContactInfo($includeContactInfo = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeContactInfo) && !is_bool($includeContactInfo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeContactInfo, true), gettype($includeContactInfo)), __LINE__);
        }
        $this->IncludeContactInfo = $includeContactInfo;
        return $this;
    }
    /**
     * Get IncludeGroups value
     * @return bool
     */
    public function getIncludeGroups()
    {
        return $this->IncludeGroups;
    }
    /**
     * Set IncludeGroups value
     * @param bool $includeGroups
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeGroups($includeGroups = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeGroups) && !is_bool($includeGroups)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeGroups, true), gettype($includeGroups)), __LINE__);
        }
        $this->IncludeGroups = $includeGroups;
        return $this;
    }
    /**
     * Get IncludeInactiveDrivers value
     * @return bool
     */
    public function getIncludeInactiveDrivers()
    {
        return $this->IncludeInactiveDrivers;
    }
    /**
     * Set IncludeInactiveDrivers value
     * @param bool $includeInactiveDrivers
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeInactiveDrivers($includeInactiveDrivers = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeInactiveDrivers) && !is_bool($includeInactiveDrivers)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeInactiveDrivers, true), gettype($includeInactiveDrivers)), __LINE__);
        }
        $this->IncludeInactiveDrivers = $includeInactiveDrivers;
        return $this;
    }
    /**
     * Get IncludeLastVehicleInfo value
     * @return bool
     */
    public function getIncludeLastVehicleInfo()
    {
        return $this->IncludeLastVehicleInfo;
    }
    /**
     * Set IncludeLastVehicleInfo value
     * @param bool $includeLastVehicleInfo
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeLastVehicleInfo($includeLastVehicleInfo = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeLastVehicleInfo) && !is_bool($includeLastVehicleInfo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeLastVehicleInfo, true), gettype($includeLastVehicleInfo)), __LINE__);
        }
        $this->IncludeLastVehicleInfo = $includeLastVehicleInfo;
        return $this;
    }
    /**
     * Get IncludeLicenseInfo value
     * @return bool
     */
    public function getIncludeLicenseInfo()
    {
        return $this->IncludeLicenseInfo;
    }
    /**
     * Set IncludeLicenseInfo value
     * @param bool $includeLicenseInfo
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeLicenseInfo($includeLicenseInfo = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeLicenseInfo) && !is_bool($includeLicenseInfo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeLicenseInfo, true), gettype($includeLicenseInfo)), __LINE__);
        }
        $this->IncludeLicenseInfo = $includeLicenseInfo;
        return $this;
    }
    /**
     * Get IncludeTachoCardInfo value
     * @return bool
     */
    public function getIncludeTachoCardInfo()
    {
        return $this->IncludeTachoCardInfo;
    }
    /**
     * Set IncludeTachoCardInfo value
     * @param bool $includeTachoCardInfo
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeTachoCardInfo($includeTachoCardInfo = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeTachoCardInfo) && !is_bool($includeTachoCardInfo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeTachoCardInfo, true), gettype($includeTachoCardInfo)), __LINE__);
        }
        $this->IncludeTachoCardInfo = $includeTachoCardInfo;
        return $this;
    }
    /**
     * Get IncludeUpdateDates value
     * @return bool
     */
    public function getIncludeUpdateDates()
    {
        return $this->IncludeUpdateDates;
    }
    /**
     * Set IncludeUpdateDates value
     * @param bool $includeUpdateDates
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeUpdateDates($includeUpdateDates = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeUpdateDates) && !is_bool($includeUpdateDates)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeUpdateDates, true), gettype($includeUpdateDates)), __LINE__);
        }
        $this->IncludeUpdateDates = $includeUpdateDates;
        return $this;
    }
    /**
     * Get IncludeHRInfo value
     * @return bool
     */
    public function getIncludeHRInfo()
    {
        return $this->IncludeHRInfo;
    }
    /**
     * Set IncludeHRInfo value
     * @param bool $includeHRInfo
     * @return \StructType\PersonSelection_V4
     */
    public function setIncludeHRInfo($includeHRInfo = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeHRInfo) && !is_bool($includeHRInfo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeHRInfo, true), gettype($includeHRInfo)), __LINE__);
        }
        $this->IncludeHRInfo = $includeHRInfo;
        return $this;
    }
    /**
     * Get Persons value
     * @return \ArrayType\ArrayOfIdentifier|null
     */
    public function getPersons()
    {
        return $this->Persons;
    }
    /**
     * Set Persons value
     * @param \ArrayType\ArrayOfIdentifier $persons
     * @return \StructType\PersonSelection_V4
     */
    public function setPersons(\ArrayType\ArrayOfIdentifier $persons = null)
    {
        $this->Persons = $persons;
        return $this;
    }
}
