<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MoveAudience-Request StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:MoveAudience-Request
 * @subpackage Structs
 */
class MoveAudience_Request extends AbstractStructBase
{
    /**
     * The AllowSplitSeatsIntendedToBeSoldTogether
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $AllowSplitSeatsIntendedToBeSoldTogether;
    /**
     * The TargetsInfo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfMoveAudienceTargetInfo
     */
    public $TargetsInfo;
    /**
     * The TicketIdsToMove
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfguid
     */
    public $TicketIdsToMove;
    /**
     * Constructor method for MoveAudience-Request
     * @uses MoveAudience_Request::setAllowSplitSeatsIntendedToBeSoldTogether()
     * @uses MoveAudience_Request::setTargetsInfo()
     * @uses MoveAudience_Request::setTicketIdsToMove()
     * @param bool $allowSplitSeatsIntendedToBeSoldTogether
     * @param \patest\ArrayType\ArrayOfMoveAudienceTargetInfo $targetsInfo
     * @param \patest\ArrayType\ArrayOfguid $ticketIdsToMove
     */
    public function __construct($allowSplitSeatsIntendedToBeSoldTogether = null, \patest\ArrayType\ArrayOfMoveAudienceTargetInfo $targetsInfo = null, \patest\ArrayType\ArrayOfguid $ticketIdsToMove = null)
    {
        $this
            ->setAllowSplitSeatsIntendedToBeSoldTogether($allowSplitSeatsIntendedToBeSoldTogether)
            ->setTargetsInfo($targetsInfo)
            ->setTicketIdsToMove($ticketIdsToMove);
    }
    /**
     * Get AllowSplitSeatsIntendedToBeSoldTogether value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return bool|null
     */
    public function getAllowSplitSeatsIntendedToBeSoldTogether()
    {
        return isset($this->AllowSplitSeatsIntendedToBeSoldTogether) ? $this->AllowSplitSeatsIntendedToBeSoldTogether : null;
    }
    /**
     * Set AllowSplitSeatsIntendedToBeSoldTogether value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param bool $allowSplitSeatsIntendedToBeSoldTogether
     * @return \patest\StructType\MoveAudience_Request
     */
    public function setAllowSplitSeatsIntendedToBeSoldTogether($allowSplitSeatsIntendedToBeSoldTogether = null)
    {
        // validation for constraint: boolean
        if (!is_null($allowSplitSeatsIntendedToBeSoldTogether) && !is_bool($allowSplitSeatsIntendedToBeSoldTogether)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allowSplitSeatsIntendedToBeSoldTogether, true), gettype($allowSplitSeatsIntendedToBeSoldTogether)), __LINE__);
        }
        if (is_null($allowSplitSeatsIntendedToBeSoldTogether) || (is_array($allowSplitSeatsIntendedToBeSoldTogether) && empty($allowSplitSeatsIntendedToBeSoldTogether))) {
            unset($this->AllowSplitSeatsIntendedToBeSoldTogether);
        } else {
            $this->AllowSplitSeatsIntendedToBeSoldTogether = $allowSplitSeatsIntendedToBeSoldTogether;
        }
        return $this;
    }
    /**
     * Get TargetsInfo value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfMoveAudienceTargetInfo|null
     */
    public function getTargetsInfo()
    {
        return isset($this->TargetsInfo) ? $this->TargetsInfo : null;
    }
    /**
     * Set TargetsInfo value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfMoveAudienceTargetInfo $targetsInfo
     * @return \patest\StructType\MoveAudience_Request
     */
    public function setTargetsInfo(\patest\ArrayType\ArrayOfMoveAudienceTargetInfo $targetsInfo = null)
    {
        if (is_null($targetsInfo) || (is_array($targetsInfo) && empty($targetsInfo))) {
            unset($this->TargetsInfo);
        } else {
            $this->TargetsInfo = $targetsInfo;
        }
        return $this;
    }
    /**
     * Get TicketIdsToMove value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfguid|null
     */
    public function getTicketIdsToMove()
    {
        return isset($this->TicketIdsToMove) ? $this->TicketIdsToMove : null;
    }
    /**
     * Set TicketIdsToMove value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfguid $ticketIdsToMove
     * @return \patest\StructType\MoveAudience_Request
     */
    public function setTicketIdsToMove(\patest\ArrayType\ArrayOfguid $ticketIdsToMove = null)
    {
        if (is_null($ticketIdsToMove) || (is_array($ticketIdsToMove) && empty($ticketIdsToMove))) {
            unset($this->TicketIdsToMove);
        } else {
            $this->TicketIdsToMove = $ticketIdsToMove;
        }
        return $this;
    }
}
