<?php

namespace Sabre\PassengerDetailsRQ\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Fare Structs
 * @subpackage Structs
 */
class Fare extends AbstractStructBase
{
    /**
     * The PassengerReferences
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\PassengerDetailsRQ\Structs\PassengerReferences
     */
    public $PassengerReferences;
    /**
     * The SegmentReferences
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\PassengerDetailsRQ\Structs\SegmentReferences
     */
    public $SegmentReferences;
    /**
     * The ClassOfService
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $ClassOfService;
    /**
     * The FareDescription
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\PassengerDetailsRQ\Structs\FareDescription
     */
    public $FareDescription;
    /**
     * The FarePrice
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\PassengerDetailsRQ\Structs\PriceType
     */
    public $FarePrice;
    /**
     * Constructor method for Fare
     * @uses Fare::setPassengerReferences()
     * @uses Fare::setSegmentReferences()
     * @uses Fare::setClassOfService()
     * @uses Fare::setFareDescription()
     * @uses Fare::setFarePrice()
     * @param \Sabre\PassengerDetailsRQ\Structs\PassengerReferences $passengerReferences
     * @param \Sabre\PassengerDetailsRQ\Structs\SegmentReferences $segmentReferences
     * @param string $classOfService
     * @param \Sabre\PassengerDetailsRQ\Structs\FareDescription $fareDescription
     * @param \Sabre\PassengerDetailsRQ\Structs\PriceType $farePrice
     */
    public function __construct(\Sabre\PassengerDetailsRQ\Structs\PassengerReferences $passengerReferences = null, \Sabre\PassengerDetailsRQ\Structs\SegmentReferences $segmentReferences = null, $classOfService = null, \Sabre\PassengerDetailsRQ\Structs\FareDescription $fareDescription = null, \Sabre\PassengerDetailsRQ\Structs\PriceType $farePrice = null)
    {
        $this
            ->setPassengerReferences($passengerReferences)
            ->setSegmentReferences($segmentReferences)
            ->setClassOfService($classOfService)
            ->setFareDescription($fareDescription)
            ->setFarePrice($farePrice);
    }
    /**
     * Get PassengerReferences value
     * @return \Sabre\PassengerDetailsRQ\Structs\PassengerReferences|null
     */
    public function getPassengerReferences()
    {
        return $this->PassengerReferences;
    }
    /**
     * Set PassengerReferences value
     * @param \Sabre\PassengerDetailsRQ\Structs\PassengerReferences $passengerReferences
     * @return \Sabre\PassengerDetailsRQ\Structs\Fare
     */
    public function setPassengerReferences(\Sabre\PassengerDetailsRQ\Structs\PassengerReferences $passengerReferences = null)
    {
        $this->PassengerReferences = $passengerReferences;
        return $this;
    }
    /**
     * Get SegmentReferences value
     * @return \Sabre\PassengerDetailsRQ\Structs\SegmentReferences|null
     */
    public function getSegmentReferences()
    {
        return $this->SegmentReferences;
    }
    /**
     * Set SegmentReferences value
     * @param \Sabre\PassengerDetailsRQ\Structs\SegmentReferences $segmentReferences
     * @return \Sabre\PassengerDetailsRQ\Structs\Fare
     */
    public function setSegmentReferences(\Sabre\PassengerDetailsRQ\Structs\SegmentReferences $segmentReferences = null)
    {
        $this->SegmentReferences = $segmentReferences;
        return $this;
    }
    /**
     * Get ClassOfService value
     * @return string|null
     */
    public function getClassOfService()
    {
        return $this->ClassOfService;
    }
    /**
     * Set ClassOfService value
     * @param string $classOfService
     * @return \Sabre\PassengerDetailsRQ\Structs\Fare
     */
    public function setClassOfService($classOfService = null)
    {
        $this->ClassOfService = $classOfService;
        return $this;
    }
    /**
     * Get FareDescription value
     * @return \Sabre\PassengerDetailsRQ\Structs\FareDescription|null
     */
    public function getFareDescription()
    {
        return $this->FareDescription;
    }
    /**
     * Set FareDescription value
     * @param \Sabre\PassengerDetailsRQ\Structs\FareDescription $fareDescription
     * @return \Sabre\PassengerDetailsRQ\Structs\Fare
     */
    public function setFareDescription(\Sabre\PassengerDetailsRQ\Structs\FareDescription $fareDescription = null)
    {
        $this->FareDescription = $fareDescription;
        return $this;
    }
    /**
     * Get FarePrice value
     * @return \Sabre\PassengerDetailsRQ\Structs\PriceType|null
     */
    public function getFarePrice()
    {
        return $this->FarePrice;
    }
    /**
     * Set FarePrice value
     * @param \Sabre\PassengerDetailsRQ\Structs\PriceType $farePrice
     * @return \Sabre\PassengerDetailsRQ\Structs\Fare
     */
    public function setFarePrice(\Sabre\PassengerDetailsRQ\Structs\PriceType $farePrice = null)
    {
        $this->FarePrice = $farePrice;
        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\PassengerDetailsRQ\Structs\Fare
     */
    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__;
    }
}
