<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Get_ActivityReport_V5 StructType
 * @subpackage Structs
 */
class Get_ActivityReport_V5 extends AbstractStructBase
{
    /**
     * The IncludeRegistrations
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $IncludeRegistrations;
    /**
     * The Login
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\Login
     */
    public $Login;
    /**
     * The ActivityReportSelection
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\ActivityReportSelection_With_TimePeriodType
     */
    public $ActivityReportSelection;
    /**
     * Constructor method for Get_ActivityReport_V5
     * @uses Get_ActivityReport_V5::setIncludeRegistrations()
     * @uses Get_ActivityReport_V5::setLogin()
     * @uses Get_ActivityReport_V5::setActivityReportSelection()
     * @param bool $includeRegistrations
     * @param \StructType\Login $login
     * @param \StructType\ActivityReportSelection_With_TimePeriodType $activityReportSelection
     */
    public function __construct($includeRegistrations = null, \StructType\Login $login = null, \StructType\ActivityReportSelection_With_TimePeriodType $activityReportSelection = null)
    {
        $this
            ->setIncludeRegistrations($includeRegistrations)
            ->setLogin($login)
            ->setActivityReportSelection($activityReportSelection);
    }
    /**
     * Get IncludeRegistrations value
     * @return bool
     */
    public function getIncludeRegistrations()
    {
        return $this->IncludeRegistrations;
    }
    /**
     * Set IncludeRegistrations value
     * @param bool $includeRegistrations
     * @return \StructType\Get_ActivityReport_V5
     */
    public function setIncludeRegistrations($includeRegistrations = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeRegistrations) && !is_bool($includeRegistrations)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeRegistrations, true), gettype($includeRegistrations)), __LINE__);
        }
        $this->IncludeRegistrations = $includeRegistrations;
        return $this;
    }
    /**
     * Get Login value
     * @return \StructType\Login|null
     */
    public function getLogin()
    {
        return $this->Login;
    }
    /**
     * Set Login value
     * @param \StructType\Login $login
     * @return \StructType\Get_ActivityReport_V5
     */
    public function setLogin(\StructType\Login $login = null)
    {
        $this->Login = $login;
        return $this;
    }
    /**
     * Get ActivityReportSelection value
     * @return \StructType\ActivityReportSelection_With_TimePeriodType|null
     */
    public function getActivityReportSelection()
    {
        return $this->ActivityReportSelection;
    }
    /**
     * Set ActivityReportSelection value
     * @param \StructType\ActivityReportSelection_With_TimePeriodType $activityReportSelection
     * @return \StructType\Get_ActivityReport_V5
     */
    public function setActivityReportSelection(\StructType\ActivityReportSelection_With_TimePeriodType $activityReportSelection = null)
    {
        $this->ActivityReportSelection = $activityReportSelection;
        return $this;
    }
}
