<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ActivityReportSelection_V3 StructType
 * @subpackage Structs
 */
class ActivityReportSelection_V3 extends ActivityReportSelection_V2
{
    /**
     * The IncludeInfoFields
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $IncludeInfoFields;
    /**
     * The InfoField
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\ActivityInfoFieldSelection
     */
    public $InfoField;
    /**
     * Constructor method for ActivityReportSelection_V3
     * @uses ActivityReportSelection_V3::setIncludeInfoFields()
     * @uses ActivityReportSelection_V3::setInfoField()
     * @param bool $includeInfoFields
     * @param \StructType\ActivityInfoFieldSelection $infoField
     */
    public function __construct($includeInfoFields = null, \StructType\ActivityInfoFieldSelection $infoField = null)
    {
        $this
            ->setIncludeInfoFields($includeInfoFields)
            ->setInfoField($infoField);
    }
    /**
     * Get IncludeInfoFields value
     * @return bool
     */
    public function getIncludeInfoFields()
    {
        return $this->IncludeInfoFields;
    }
    /**
     * Set IncludeInfoFields value
     * @param bool $includeInfoFields
     * @return \StructType\ActivityReportSelection_V3
     */
    public function setIncludeInfoFields($includeInfoFields = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeInfoFields) && !is_bool($includeInfoFields)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeInfoFields, true), gettype($includeInfoFields)), __LINE__);
        }
        $this->IncludeInfoFields = $includeInfoFields;
        return $this;
    }
    /**
     * Get InfoField value
     * @return \StructType\ActivityInfoFieldSelection|null
     */
    public function getInfoField()
    {
        return $this->InfoField;
    }
    /**
     * Set InfoField value
     * @param \StructType\ActivityInfoFieldSelection $infoField
     * @return \StructType\ActivityReportSelection_V3
     */
    public function setInfoField(\StructType\ActivityInfoFieldSelection $infoField = null)
    {
        $this->InfoField = $infoField;
        return $this;
    }
}
