<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Get_Positions_RequestType StructType
 * Meta information extracted from the WSDL
 * - documentation: Request element to get position management positions and their associated data.
 * @subpackage Structs
 */
class Get_Positions_RequestType extends AbstractStructBase
{
    /**
     * The Request_References
     * Meta information extracted from the WSDL
     * - documentation: Utilize the Request References element to retrieve a specific instance(s) of Position and its associated data.
     * - minOccurs: 0
     * @var \StructType\Position_Request_ReferencesType
     */
    public $Request_References;
    /**
     * The Request_Criteria
     * Meta information extracted from the WSDL
     * - documentation: Utilize the Request Criteria element to search the transaction log for specific instance(s) of a Position.
     * - minOccurs: 0
     * @var \StructType\Position_Request_CriteriaType
     */
    public $Request_Criteria;
    /**
     * The Response_Filter
     * Meta information extracted from the WSDL
     * - documentation: The "Response_Filter" element contains common WWS information that allows you control the response data that you will be provided including As_Of_Date, As_Of_Entry_Moment, and Page attributes.
     * - minOccurs: 0
     * @var \StructType\Response_FilterType
     */
    public $Response_Filter;
    /**
     * The Response_Group
     * Meta information extracted from the WSDL
     * - documentation: The response group allows for the response data to be tailored to only included elements that the user is looking for. If no response group is provided in the request the only the following elements will be returned: Reference and
     * Position Definition Data
     * - minOccurs: 0
     * @var \StructType\Position_Response_GroupType
     */
    public $Response_Group;
    /**
     * The version
     * Meta information extracted from the WSDL
     * - ref: wd:version
     * @var string
     */
    public $version;
    /**
     * Constructor method for Get_Positions_RequestType
     * @uses Get_Positions_RequestType::setRequest_References()
     * @uses Get_Positions_RequestType::setRequest_Criteria()
     * @uses Get_Positions_RequestType::setResponse_Filter()
     * @uses Get_Positions_RequestType::setResponse_Group()
     * @uses Get_Positions_RequestType::setVersion()
     * @param \StructType\Position_Request_ReferencesType $request_References
     * @param \StructType\Position_Request_CriteriaType $request_Criteria
     * @param \StructType\Response_FilterType $response_Filter
     * @param \StructType\Position_Response_GroupType $response_Group
     * @param string $version
     */
    public function __construct(\StructType\Position_Request_ReferencesType $request_References = null, \StructType\Position_Request_CriteriaType $request_Criteria = null, \StructType\Response_FilterType $response_Filter = null, \StructType\Position_Response_GroupType $response_Group = null, $version = null)
    {
        $this
            ->setRequest_References($request_References)
            ->setRequest_Criteria($request_Criteria)
            ->setResponse_Filter($response_Filter)
            ->setResponse_Group($response_Group)
            ->setVersion($version);
    }
    /**
     * Get Request_References value
     * @return \StructType\Position_Request_ReferencesType|null
     */
    public function getRequest_References()
    {
        return $this->Request_References;
    }
    /**
     * Set Request_References value
     * @param \StructType\Position_Request_ReferencesType $request_References
     * @return \StructType\Get_Positions_RequestType
     */
    public function setRequest_References(\StructType\Position_Request_ReferencesType $request_References = null)
    {
        $this->Request_References = $request_References;
        return $this;
    }
    /**
     * Get Request_Criteria value
     * @return \StructType\Position_Request_CriteriaType|null
     */
    public function getRequest_Criteria()
    {
        return $this->Request_Criteria;
    }
    /**
     * Set Request_Criteria value
     * @param \StructType\Position_Request_CriteriaType $request_Criteria
     * @return \StructType\Get_Positions_RequestType
     */
    public function setRequest_Criteria(\StructType\Position_Request_CriteriaType $request_Criteria = null)
    {
        $this->Request_Criteria = $request_Criteria;
        return $this;
    }
    /**
     * Get Response_Filter value
     * @return \StructType\Response_FilterType|null
     */
    public function getResponse_Filter()
    {
        return $this->Response_Filter;
    }
    /**
     * Set Response_Filter value
     * @param \StructType\Response_FilterType $response_Filter
     * @return \StructType\Get_Positions_RequestType
     */
    public function setResponse_Filter(\StructType\Response_FilterType $response_Filter = null)
    {
        $this->Response_Filter = $response_Filter;
        return $this;
    }
    /**
     * Get Response_Group value
     * @return \StructType\Position_Response_GroupType|null
     */
    public function getResponse_Group()
    {
        return $this->Response_Group;
    }
    /**
     * Set Response_Group value
     * @param \StructType\Position_Response_GroupType $response_Group
     * @return \StructType\Get_Positions_RequestType
     */
    public function setResponse_Group(\StructType\Position_Response_GroupType $response_Group = null)
    {
        $this->Response_Group = $response_Group;
        return $this;
    }
    /**
     * Get version value
     * @return string|null
     */
    public function getVersion()
    {
        return $this->version;
    }
    /**
     * Set version value
     * @param string $version
     * @return \StructType\Get_Positions_RequestType
     */
    public function setVersion($version = null)
    {
        // validation for constraint: string
        if (!is_null($version) && !is_string($version)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($version, true), gettype($version)), __LINE__);
        }
        $this->version = $version;
        return $this;
    }
}
