<?php

namespace Sabre\CreatePassengerNameRecord\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MiscQualifiers Structs
 * @subpackage Structs
 */
class MiscQualifiers extends AbstractStructBase
{
    /**
     * The AirExtras
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\AirExtras
     */
    public $AirExtras;
    /**
     * The BaggageAllowance
     * Meta informations extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance[]
     */
    public $BaggageAllowance;
    /**
     * The Commission
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\Commission
     */
    public $Commission;
    /**
     * The Customer
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\Customer
     */
    public $Customer;
    /**
     * The Endorsements
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\Endorsements
     */
    public $Endorsements;
    /**
     * The HemisphereCode
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $HemisphereCode;
    /**
     * The JourneyCode
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $JourneyCode;
    /**
     * The MultiTicket
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\MultiTicket
     */
    public $MultiTicket;
    /**
     * The TourCode
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\CreatePassengerNameRecord\Structs\TourCode
     */
    public $TourCode;
    /**
     * The ValidationMethod
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $ValidationMethod;
    /**
     * Constructor method for MiscQualifiers
     * @uses MiscQualifiers::setAirExtras()
     * @uses MiscQualifiers::setBaggageAllowance()
     * @uses MiscQualifiers::setCommission()
     * @uses MiscQualifiers::setCustomer()
     * @uses MiscQualifiers::setEndorsements()
     * @uses MiscQualifiers::setHemisphereCode()
     * @uses MiscQualifiers::setJourneyCode()
     * @uses MiscQualifiers::setMultiTicket()
     * @uses MiscQualifiers::setTourCode()
     * @uses MiscQualifiers::setValidationMethod()
     * @param \Sabre\CreatePassengerNameRecord\Structs\AirExtras $airExtras
     * @param \Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance[] $baggageAllowance
     * @param \Sabre\CreatePassengerNameRecord\Structs\Commission $commission
     * @param \Sabre\CreatePassengerNameRecord\Structs\Customer $customer
     * @param \Sabre\CreatePassengerNameRecord\Structs\Endorsements $endorsements
     * @param string $hemisphereCode
     * @param string $journeyCode
     * @param \Sabre\CreatePassengerNameRecord\Structs\MultiTicket $multiTicket
     * @param \Sabre\CreatePassengerNameRecord\Structs\TourCode $tourCode
     * @param string $validationMethod
     */
    public function __construct(\Sabre\CreatePassengerNameRecord\Structs\AirExtras $airExtras = null, array $baggageAllowance = array(), \Sabre\CreatePassengerNameRecord\Structs\Commission $commission = null, \Sabre\CreatePassengerNameRecord\Structs\Customer $customer = null, \Sabre\CreatePassengerNameRecord\Structs\Endorsements $endorsements = null, $hemisphereCode = null, $journeyCode = null, \Sabre\CreatePassengerNameRecord\Structs\MultiTicket $multiTicket = null, \Sabre\CreatePassengerNameRecord\Structs\TourCode $tourCode = null, $validationMethod = null)
    {
        $this
            ->setAirExtras($airExtras)
            ->setBaggageAllowance($baggageAllowance)
            ->setCommission($commission)
            ->setCustomer($customer)
            ->setEndorsements($endorsements)
            ->setHemisphereCode($hemisphereCode)
            ->setJourneyCode($journeyCode)
            ->setMultiTicket($multiTicket)
            ->setTourCode($tourCode)
            ->setValidationMethod($validationMethod);
    }
    /**
     * Get AirExtras value
     * @return \Sabre\CreatePassengerNameRecord\Structs\AirExtras|null
     */
    public function getAirExtras()
    {
        return $this->AirExtras;
    }
    /**
     * Set AirExtras value
     * @param \Sabre\CreatePassengerNameRecord\Structs\AirExtras $airExtras
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setAirExtras(\Sabre\CreatePassengerNameRecord\Structs\AirExtras $airExtras = null)
    {
        $this->AirExtras = $airExtras;
        return $this;
    }
    /**
     * Get BaggageAllowance value
     * @return \Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance[]|null
     */
    public function getBaggageAllowance()
    {
        return $this->BaggageAllowance;
    }
    /**
     * Set BaggageAllowance value
     * @throws \InvalidArgumentException
     * @param \Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance[] $baggageAllowance
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setBaggageAllowance(array $baggageAllowance = array())
    {
        $this->BaggageAllowance = $baggageAllowance;
        return $this;
    }
    /**
     * Add item to BaggageAllowance value
     * @throws \InvalidArgumentException
     * @param \Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance $item
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function addToBaggageAllowance(\Sabre\CreatePassengerNameRecord\Structs\BaggageAllowance $item)
    {
        $this->BaggageAllowance[] = $item;
        return $this;
    }
    /**
     * Get Commission value
     * @return \Sabre\CreatePassengerNameRecord\Structs\Commission|null
     */
    public function getCommission()
    {
        return $this->Commission;
    }
    /**
     * Set Commission value
     * @param \Sabre\CreatePassengerNameRecord\Structs\Commission $commission
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setCommission(\Sabre\CreatePassengerNameRecord\Structs\Commission $commission = null)
    {
        $this->Commission = $commission;
        return $this;
    }
    /**
     * Get Customer value
     * @return \Sabre\CreatePassengerNameRecord\Structs\Customer|null
     */
    public function getCustomer()
    {
        return $this->Customer;
    }
    /**
     * Set Customer value
     * @param \Sabre\CreatePassengerNameRecord\Structs\Customer $customer
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setCustomer(\Sabre\CreatePassengerNameRecord\Structs\Customer $customer = null)
    {
        $this->Customer = $customer;
        return $this;
    }
    /**
     * Get Endorsements value
     * @return \Sabre\CreatePassengerNameRecord\Structs\Endorsements|null
     */
    public function getEndorsements()
    {
        return $this->Endorsements;
    }
    /**
     * Set Endorsements value
     * @param \Sabre\CreatePassengerNameRecord\Structs\Endorsements $endorsements
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setEndorsements(\Sabre\CreatePassengerNameRecord\Structs\Endorsements $endorsements = null)
    {
        $this->Endorsements = $endorsements;
        return $this;
    }
    /**
     * Get HemisphereCode value
     * @return string|null
     */
    public function getHemisphereCode()
    {
        return $this->HemisphereCode;
    }
    /**
     * Set HemisphereCode value
     * @param string $hemisphereCode
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setHemisphereCode($hemisphereCode = null)
    {
        $this->HemisphereCode = $hemisphereCode;
        return $this;
    }
    /**
     * Get JourneyCode value
     * @return string|null
     */
    public function getJourneyCode()
    {
        return $this->JourneyCode;
    }
    /**
     * Set JourneyCode value
     * @param string $journeyCode
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setJourneyCode($journeyCode = null)
    {
        $this->JourneyCode = $journeyCode;
        return $this;
    }
    /**
     * Get MultiTicket value
     * @return \Sabre\CreatePassengerNameRecord\Structs\MultiTicket|null
     */
    public function getMultiTicket()
    {
        return $this->MultiTicket;
    }
    /**
     * Set MultiTicket value
     * @param \Sabre\CreatePassengerNameRecord\Structs\MultiTicket $multiTicket
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setMultiTicket(\Sabre\CreatePassengerNameRecord\Structs\MultiTicket $multiTicket = null)
    {
        $this->MultiTicket = $multiTicket;
        return $this;
    }
    /**
     * Get TourCode value
     * @return \Sabre\CreatePassengerNameRecord\Structs\TourCode|null
     */
    public function getTourCode()
    {
        return $this->TourCode;
    }
    /**
     * Set TourCode value
     * @param \Sabre\CreatePassengerNameRecord\Structs\TourCode $tourCode
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setTourCode(\Sabre\CreatePassengerNameRecord\Structs\TourCode $tourCode = null)
    {
        $this->TourCode = $tourCode;
        return $this;
    }
    /**
     * Get ValidationMethod value
     * @return string|null
     */
    public function getValidationMethod()
    {
        return $this->ValidationMethod;
    }
    /**
     * Set ValidationMethod value
     * @param string $validationMethod
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public function setValidationMethod($validationMethod = null)
    {
        $this->ValidationMethod = $validationMethod;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \Sabre\CreatePassengerNameRecord\Structs\MiscQualifiers
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
