<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for JPSOAP_HotelInventoryHotel StructType
 * @subpackage Structs
 */
class JPSOAP_HotelInventoryHotel extends AbstractStructBase
{
    /**
     * The Name
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Name;
    /**
     * The HotelCodesEncrypt
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfString12
     */
    public $HotelCodesEncrypt;
    /**
     * The Category
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_IdTypeName
     */
    public $Category;
    /**
     * The Descriptions
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_HotelInventoryDescription
     */
    public $Descriptions;
    /**
     * The Address
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_HotelInventoryAddress
     */
    public $Address;
    /**
     * The ContactInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_HotelInventoryContactInfo
     */
    public $ContactInfo;
    /**
     * The RoomTypes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType
     */
    public $RoomTypes;
    /**
     * The Boards
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_IdTypeIntName
     */
    public $Boards;
    /**
     * The DirectPaymentCardTypes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_IdName
     */
    public $DirectPaymentCardTypes;
    /**
     * The Ages
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\JPSOAP_Ages
     */
    public $Ages;
    /**
     * The Images
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_Image
     */
    public $Images;
    /**
     * The SpecialNotes
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote
     */
    public $SpecialNotes;
    /**
     * The HotelCode
     * @var string
     */
    public $HotelCode;
    /**
     * The HotelCodeEncrypt
     * @var string
     */
    public $HotelCodeEncrypt;
    /**
     * The JPCode
     * @var string
     */
    public $JPCode;
    /**
     * The GIATACode
     * @var string
     */
    public $GIATACode;
    /**
     * The MinAge
     * @var int
     */
    public $MinAge;
    /**
     * The Currency
     * @var string
     */
    public $Currency;
    /**
     * The TimeZone
     * @var string
     */
    public $TimeZone;
    /**
     * Constructor method for JPSOAP_HotelInventoryHotel
     * @uses JPSOAP_HotelInventoryHotel::setName()
     * @uses JPSOAP_HotelInventoryHotel::setHotelCodesEncrypt()
     * @uses JPSOAP_HotelInventoryHotel::setCategory()
     * @uses JPSOAP_HotelInventoryHotel::setDescriptions()
     * @uses JPSOAP_HotelInventoryHotel::setAddress()
     * @uses JPSOAP_HotelInventoryHotel::setContactInfo()
     * @uses JPSOAP_HotelInventoryHotel::setRoomTypes()
     * @uses JPSOAP_HotelInventoryHotel::setBoards()
     * @uses JPSOAP_HotelInventoryHotel::setDirectPaymentCardTypes()
     * @uses JPSOAP_HotelInventoryHotel::setAges()
     * @uses JPSOAP_HotelInventoryHotel::setImages()
     * @uses JPSOAP_HotelInventoryHotel::setSpecialNotes()
     * @uses JPSOAP_HotelInventoryHotel::setHotelCode()
     * @uses JPSOAP_HotelInventoryHotel::setHotelCodeEncrypt()
     * @uses JPSOAP_HotelInventoryHotel::setJPCode()
     * @uses JPSOAP_HotelInventoryHotel::setGIATACode()
     * @uses JPSOAP_HotelInventoryHotel::setMinAge()
     * @uses JPSOAP_HotelInventoryHotel::setCurrency()
     * @uses JPSOAP_HotelInventoryHotel::setTimeZone()
     * @param string $name
     * @param \ArrayType\ArrayOfString12 $hotelCodesEncrypt
     * @param \StructType\JPSOAP_IdTypeName $category
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventoryDescription $descriptions
     * @param \StructType\JPSOAP_HotelInventoryAddress $address
     * @param \StructType\JPSOAP_HotelInventoryContactInfo $contactInfo
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType $roomTypes
     * @param \ArrayType\ArrayOfJPSOAP_IdTypeIntName $boards
     * @param \ArrayType\ArrayOfJPSOAP_IdName $directPaymentCardTypes
     * @param \StructType\JPSOAP_Ages $ages
     * @param \ArrayType\ArrayOfJPSOAP_Image $images
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote $specialNotes
     * @param string $hotelCode
     * @param string $hotelCodeEncrypt
     * @param string $jPCode
     * @param string $gIATACode
     * @param int $minAge
     * @param string $currency
     * @param string $timeZone
     */
    public function __construct($name = null, \ArrayType\ArrayOfString12 $hotelCodesEncrypt = null, \StructType\JPSOAP_IdTypeName $category = null, \ArrayType\ArrayOfJPSOAP_HotelInventoryDescription $descriptions = null, \StructType\JPSOAP_HotelInventoryAddress $address = null, \StructType\JPSOAP_HotelInventoryContactInfo $contactInfo = null, \ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType $roomTypes = null, \ArrayType\ArrayOfJPSOAP_IdTypeIntName $boards = null, \ArrayType\ArrayOfJPSOAP_IdName $directPaymentCardTypes = null, \StructType\JPSOAP_Ages $ages = null, \ArrayType\ArrayOfJPSOAP_Image $images = null, \ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote $specialNotes = null, $hotelCode = null, $hotelCodeEncrypt = null, $jPCode = null, $gIATACode = null, $minAge = null, $currency = null, $timeZone = null)
    {
        $this
            ->setName($name)
            ->setHotelCodesEncrypt($hotelCodesEncrypt)
            ->setCategory($category)
            ->setDescriptions($descriptions)
            ->setAddress($address)
            ->setContactInfo($contactInfo)
            ->setRoomTypes($roomTypes)
            ->setBoards($boards)
            ->setDirectPaymentCardTypes($directPaymentCardTypes)
            ->setAges($ages)
            ->setImages($images)
            ->setSpecialNotes($specialNotes)
            ->setHotelCode($hotelCode)
            ->setHotelCodeEncrypt($hotelCodeEncrypt)
            ->setJPCode($jPCode)
            ->setGIATACode($gIATACode)
            ->setMinAge($minAge)
            ->setCurrency($currency)
            ->setTimeZone($timeZone);
    }
    /**
     * Get Name value
     * @return string|null
     */
    public function getName()
    {
        return $this->Name;
    }
    /**
     * Set Name value
     * @param string $name
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name, true), gettype($name)), __LINE__);
        }
        $this->Name = $name;
        return $this;
    }
    /**
     * Get HotelCodesEncrypt value
     * @return \ArrayType\ArrayOfString12|null
     */
    public function getHotelCodesEncrypt()
    {
        return $this->HotelCodesEncrypt;
    }
    /**
     * Set HotelCodesEncrypt value
     * @param \ArrayType\ArrayOfString12 $hotelCodesEncrypt
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setHotelCodesEncrypt(\ArrayType\ArrayOfString12 $hotelCodesEncrypt = null)
    {
        $this->HotelCodesEncrypt = $hotelCodesEncrypt;
        return $this;
    }
    /**
     * Get Category value
     * @return \StructType\JPSOAP_IdTypeName|null
     */
    public function getCategory()
    {
        return $this->Category;
    }
    /**
     * Set Category value
     * @param \StructType\JPSOAP_IdTypeName $category
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setCategory(\StructType\JPSOAP_IdTypeName $category = null)
    {
        $this->Category = $category;
        return $this;
    }
    /**
     * Get Descriptions value
     * @return \ArrayType\ArrayOfJPSOAP_HotelInventoryDescription|null
     */
    public function getDescriptions()
    {
        return $this->Descriptions;
    }
    /**
     * Set Descriptions value
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventoryDescription $descriptions
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setDescriptions(\ArrayType\ArrayOfJPSOAP_HotelInventoryDescription $descriptions = null)
    {
        $this->Descriptions = $descriptions;
        return $this;
    }
    /**
     * Get Address value
     * @return \StructType\JPSOAP_HotelInventoryAddress|null
     */
    public function getAddress()
    {
        return $this->Address;
    }
    /**
     * Set Address value
     * @param \StructType\JPSOAP_HotelInventoryAddress $address
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setAddress(\StructType\JPSOAP_HotelInventoryAddress $address = null)
    {
        $this->Address = $address;
        return $this;
    }
    /**
     * Get ContactInfo value
     * @return \StructType\JPSOAP_HotelInventoryContactInfo|null
     */
    public function getContactInfo()
    {
        return $this->ContactInfo;
    }
    /**
     * Set ContactInfo value
     * @param \StructType\JPSOAP_HotelInventoryContactInfo $contactInfo
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setContactInfo(\StructType\JPSOAP_HotelInventoryContactInfo $contactInfo = null)
    {
        $this->ContactInfo = $contactInfo;
        return $this;
    }
    /**
     * Get RoomTypes value
     * @return \ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType|null
     */
    public function getRoomTypes()
    {
        return $this->RoomTypes;
    }
    /**
     * Set RoomTypes value
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType $roomTypes
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setRoomTypes(\ArrayType\ArrayOfJPSOAP_HotelInventoryRoomType $roomTypes = null)
    {
        $this->RoomTypes = $roomTypes;
        return $this;
    }
    /**
     * Get Boards value
     * @return \ArrayType\ArrayOfJPSOAP_IdTypeIntName|null
     */
    public function getBoards()
    {
        return $this->Boards;
    }
    /**
     * Set Boards value
     * @param \ArrayType\ArrayOfJPSOAP_IdTypeIntName $boards
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setBoards(\ArrayType\ArrayOfJPSOAP_IdTypeIntName $boards = null)
    {
        $this->Boards = $boards;
        return $this;
    }
    /**
     * Get DirectPaymentCardTypes value
     * @return \ArrayType\ArrayOfJPSOAP_IdName|null
     */
    public function getDirectPaymentCardTypes()
    {
        return $this->DirectPaymentCardTypes;
    }
    /**
     * Set DirectPaymentCardTypes value
     * @param \ArrayType\ArrayOfJPSOAP_IdName $directPaymentCardTypes
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setDirectPaymentCardTypes(\ArrayType\ArrayOfJPSOAP_IdName $directPaymentCardTypes = null)
    {
        $this->DirectPaymentCardTypes = $directPaymentCardTypes;
        return $this;
    }
    /**
     * Get Ages value
     * @return \StructType\JPSOAP_Ages|null
     */
    public function getAges()
    {
        return $this->Ages;
    }
    /**
     * Set Ages value
     * @param \StructType\JPSOAP_Ages $ages
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setAges(\StructType\JPSOAP_Ages $ages = null)
    {
        $this->Ages = $ages;
        return $this;
    }
    /**
     * Get Images value
     * @return \ArrayType\ArrayOfJPSOAP_Image|null
     */
    public function getImages()
    {
        return $this->Images;
    }
    /**
     * Set Images value
     * @param \ArrayType\ArrayOfJPSOAP_Image $images
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setImages(\ArrayType\ArrayOfJPSOAP_Image $images = null)
    {
        $this->Images = $images;
        return $this;
    }
    /**
     * Get SpecialNotes value
     * @return \ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote|null
     */
    public function getSpecialNotes()
    {
        return $this->SpecialNotes;
    }
    /**
     * Set SpecialNotes value
     * @param \ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote $specialNotes
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setSpecialNotes(\ArrayType\ArrayOfJPSOAP_HotelInventorySpecialNotesNote $specialNotes = null)
    {
        $this->SpecialNotes = $specialNotes;
        return $this;
    }
    /**
     * Get HotelCode value
     * @return string|null
     */
    public function getHotelCode()
    {
        return $this->HotelCode;
    }
    /**
     * Set HotelCode value
     * @param string $hotelCode
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setHotelCode($hotelCode = null)
    {
        // validation for constraint: string
        if (!is_null($hotelCode) && !is_string($hotelCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hotelCode, true), gettype($hotelCode)), __LINE__);
        }
        $this->HotelCode = $hotelCode;
        return $this;
    }
    /**
     * Get HotelCodeEncrypt value
     * @return string|null
     */
    public function getHotelCodeEncrypt()
    {
        return $this->HotelCodeEncrypt;
    }
    /**
     * Set HotelCodeEncrypt value
     * @param string $hotelCodeEncrypt
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setHotelCodeEncrypt($hotelCodeEncrypt = null)
    {
        // validation for constraint: string
        if (!is_null($hotelCodeEncrypt) && !is_string($hotelCodeEncrypt)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hotelCodeEncrypt, true), gettype($hotelCodeEncrypt)), __LINE__);
        }
        $this->HotelCodeEncrypt = $hotelCodeEncrypt;
        return $this;
    }
    /**
     * Get JPCode value
     * @return string|null
     */
    public function getJPCode()
    {
        return $this->JPCode;
    }
    /**
     * Set JPCode value
     * @param string $jPCode
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setJPCode($jPCode = null)
    {
        // validation for constraint: string
        if (!is_null($jPCode) && !is_string($jPCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($jPCode, true), gettype($jPCode)), __LINE__);
        }
        $this->JPCode = $jPCode;
        return $this;
    }
    /**
     * Get GIATACode value
     * @return string|null
     */
    public function getGIATACode()
    {
        return $this->GIATACode;
    }
    /**
     * Set GIATACode value
     * @param string $gIATACode
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setGIATACode($gIATACode = null)
    {
        // validation for constraint: string
        if (!is_null($gIATACode) && !is_string($gIATACode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($gIATACode, true), gettype($gIATACode)), __LINE__);
        }
        $this->GIATACode = $gIATACode;
        return $this;
    }
    /**
     * Get MinAge value
     * @return int|null
     */
    public function getMinAge()
    {
        return $this->MinAge;
    }
    /**
     * Set MinAge value
     * @param int $minAge
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setMinAge($minAge = null)
    {
        // validation for constraint: int
        if (!is_null($minAge) && !(is_int($minAge) || ctype_digit($minAge))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($minAge, true), gettype($minAge)), __LINE__);
        }
        $this->MinAge = $minAge;
        return $this;
    }
    /**
     * Get Currency value
     * @return string|null
     */
    public function getCurrency()
    {
        return $this->Currency;
    }
    /**
     * Set Currency value
     * @param string $currency
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setCurrency($currency = null)
    {
        // validation for constraint: string
        if (!is_null($currency) && !is_string($currency)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($currency, true), gettype($currency)), __LINE__);
        }
        $this->Currency = $currency;
        return $this;
    }
    /**
     * Get TimeZone value
     * @return string|null
     */
    public function getTimeZone()
    {
        return $this->TimeZone;
    }
    /**
     * Set TimeZone value
     * @param string $timeZone
     * @return \StructType\JPSOAP_HotelInventoryHotel
     */
    public function setTimeZone($timeZone = null)
    {
        // validation for constraint: string
        if (!is_null($timeZone) && !is_string($timeZone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($timeZone, true), gettype($timeZone)), __LINE__);
        }
        $this->TimeZone = $timeZone;
        return $this;
    }
}
