<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ActivityReportSelectionDetail_With_TimePeriodType_V2
 * StructType
 * @subpackage Structs
 */
class ActivityReportSelectionDetail_With_TimePeriodType_V2 extends ActivityReportSelection_With_TimePeriodType_V2
{
    /**
     * The PathInfoReturnType
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $PathInfoReturnType;
    /**
     * The PathInfoDetailSelection
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\ActivityReportPathDetailSelection
     */
    public $PathInfoDetailSelection;
    /**
     * Constructor method for ActivityReportSelectionDetail_With_TimePeriodType_V2
     * @uses ActivityReportSelectionDetail_With_TimePeriodType_V2::setPathInfoReturnType()
     * @uses ActivityReportSelectionDetail_With_TimePeriodType_V2::setPathInfoDetailSelection()
     * @param string $pathInfoReturnType
     * @param \StructType\ActivityReportPathDetailSelection $pathInfoDetailSelection
     */
    public function __construct($pathInfoReturnType = null, \StructType\ActivityReportPathDetailSelection $pathInfoDetailSelection = null)
    {
        $this
            ->setPathInfoReturnType($pathInfoReturnType)
            ->setPathInfoDetailSelection($pathInfoDetailSelection);
    }
    /**
     * Get PathInfoReturnType value
     * @return string
     */
    public function getPathInfoReturnType()
    {
        return $this->PathInfoReturnType;
    }
    /**
     * Set PathInfoReturnType value
     * @uses \EnumType\EnumPathInfoReturnType::valueIsValid()
     * @uses \EnumType\EnumPathInfoReturnType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $pathInfoReturnType
     * @return \StructType\ActivityReportSelectionDetail_With_TimePeriodType_V2
     */
    public function setPathInfoReturnType($pathInfoReturnType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\EnumPathInfoReturnType::valueIsValid($pathInfoReturnType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\EnumPathInfoReturnType', is_array($pathInfoReturnType) ? implode(', ', $pathInfoReturnType) : var_export($pathInfoReturnType, true), implode(', ', \EnumType\EnumPathInfoReturnType::getValidValues())), __LINE__);
        }
        $this->PathInfoReturnType = $pathInfoReturnType;
        return $this;
    }
    /**
     * Get PathInfoDetailSelection value
     * @return \StructType\ActivityReportPathDetailSelection|null
     */
    public function getPathInfoDetailSelection()
    {
        return $this->PathInfoDetailSelection;
    }
    /**
     * Set PathInfoDetailSelection value
     * @param \StructType\ActivityReportPathDetailSelection $pathInfoDetailSelection
     * @return \StructType\ActivityReportSelectionDetail_With_TimePeriodType_V2
     */
    public function setPathInfoDetailSelection(\StructType\ActivityReportPathDetailSelection $pathInfoDetailSelection = null)
    {
        $this->PathInfoDetailSelection = $pathInfoDetailSelection;
        return $this;
    }
}
