<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for JP_CruiseServices StructType
 * @subpackage Structs
 */
class JP_CruiseServices extends AbstractStructBase
{
    /**
     * The Barlounges
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var int
     */
    public $Barlounges;
    /**
     * The Languages
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Languages;
    /**
     * The Jacuzzies
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var int
     */
    public $Jacuzzies;
    /**
     * The Restaurants
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var int
     */
    public $Restaurants;
    /**
     * The Stores
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var int
     */
    public $Stores;
    /**
     * The Lifts
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var int
     */
    public $Lifts;
    /**
     * The Casino
     * @var bool
     */
    public $Casino;
    /**
     * The Cinema
     * @var bool
     */
    public $Cinema;
    /**
     * The Beautysalons
     * @var bool
     */
    public $Beautysalons;
    /**
     * The Chapel
     * @var bool
     */
    public $Chapel;
    /**
     * The Library
     * @var bool
     */
    public $Library;
    /**
     * The Theater
     * @var bool
     */
    public $Theater;
    /**
     * The Disco
     * @var bool
     */
    public $Disco;
    /**
     * The Spa
     * @var bool
     */
    public $Spa;
    /**
     * The Playroom
     * @var bool
     */
    public $Playroom;
    /**
     * The Wedding
     * @var bool
     */
    public $Wedding;
    /**
     * The Internet
     * @var bool
     */
    public $Internet;
    /**
     * The Laundry
     * @var bool
     */
    public $Laundry;
    /**
     * The Autolaundry
     * @var bool
     */
    public $Autolaundry;
    /**
     * The Showroom
     * @var bool
     */
    public $Showroom;
    /**
     * Constructor method for JP_CruiseServices
     * @uses JP_CruiseServices::setBarlounges()
     * @uses JP_CruiseServices::setLanguages()
     * @uses JP_CruiseServices::setJacuzzies()
     * @uses JP_CruiseServices::setRestaurants()
     * @uses JP_CruiseServices::setStores()
     * @uses JP_CruiseServices::setLifts()
     * @uses JP_CruiseServices::setCasino()
     * @uses JP_CruiseServices::setCinema()
     * @uses JP_CruiseServices::setBeautysalons()
     * @uses JP_CruiseServices::setChapel()
     * @uses JP_CruiseServices::setLibrary()
     * @uses JP_CruiseServices::setTheater()
     * @uses JP_CruiseServices::setDisco()
     * @uses JP_CruiseServices::setSpa()
     * @uses JP_CruiseServices::setPlayroom()
     * @uses JP_CruiseServices::setWedding()
     * @uses JP_CruiseServices::setInternet()
     * @uses JP_CruiseServices::setLaundry()
     * @uses JP_CruiseServices::setAutolaundry()
     * @uses JP_CruiseServices::setShowroom()
     * @param int $barlounges
     * @param string $languages
     * @param int $jacuzzies
     * @param int $restaurants
     * @param int $stores
     * @param int $lifts
     * @param bool $casino
     * @param bool $cinema
     * @param bool $beautysalons
     * @param bool $chapel
     * @param bool $library
     * @param bool $theater
     * @param bool $disco
     * @param bool $spa
     * @param bool $playroom
     * @param bool $wedding
     * @param bool $internet
     * @param bool $laundry
     * @param bool $autolaundry
     * @param bool $showroom
     */
    public function __construct($barlounges = null, $languages = null, $jacuzzies = null, $restaurants = null, $stores = null, $lifts = null, $casino = null, $cinema = null, $beautysalons = null, $chapel = null, $library = null, $theater = null, $disco = null, $spa = null, $playroom = null, $wedding = null, $internet = null, $laundry = null, $autolaundry = null, $showroom = null)
    {
        $this
            ->setBarlounges($barlounges)
            ->setLanguages($languages)
            ->setJacuzzies($jacuzzies)
            ->setRestaurants($restaurants)
            ->setStores($stores)
            ->setLifts($lifts)
            ->setCasino($casino)
            ->setCinema($cinema)
            ->setBeautysalons($beautysalons)
            ->setChapel($chapel)
            ->setLibrary($library)
            ->setTheater($theater)
            ->setDisco($disco)
            ->setSpa($spa)
            ->setPlayroom($playroom)
            ->setWedding($wedding)
            ->setInternet($internet)
            ->setLaundry($laundry)
            ->setAutolaundry($autolaundry)
            ->setShowroom($showroom);
    }
    /**
     * Get Barlounges value
     * @return int|null
     */
    public function getBarlounges()
    {
        return $this->Barlounges;
    }
    /**
     * Set Barlounges value
     * @param int $barlounges
     * @return \StructType\JP_CruiseServices
     */
    public function setBarlounges($barlounges = null)
    {
        // validation for constraint: int
        if (!is_null($barlounges) && !is_numeric($barlounges)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($barlounges)), __LINE__);
        }
        $this->Barlounges = $barlounges;
        return $this;
    }
    /**
     * Get Languages value
     * @return string|null
     */
    public function getLanguages()
    {
        return $this->Languages;
    }
    /**
     * Set Languages value
     * @param string $languages
     * @return \StructType\JP_CruiseServices
     */
    public function setLanguages($languages = null)
    {
        // validation for constraint: string
        if (!is_null($languages) && !is_string($languages)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($languages)), __LINE__);
        }
        $this->Languages = $languages;
        return $this;
    }
    /**
     * Get Jacuzzies value
     * @return int|null
     */
    public function getJacuzzies()
    {
        return $this->Jacuzzies;
    }
    /**
     * Set Jacuzzies value
     * @param int $jacuzzies
     * @return \StructType\JP_CruiseServices
     */
    public function setJacuzzies($jacuzzies = null)
    {
        // validation for constraint: int
        if (!is_null($jacuzzies) && !is_numeric($jacuzzies)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($jacuzzies)), __LINE__);
        }
        $this->Jacuzzies = $jacuzzies;
        return $this;
    }
    /**
     * Get Restaurants value
     * @return int|null
     */
    public function getRestaurants()
    {
        return $this->Restaurants;
    }
    /**
     * Set Restaurants value
     * @param int $restaurants
     * @return \StructType\JP_CruiseServices
     */
    public function setRestaurants($restaurants = null)
    {
        // validation for constraint: int
        if (!is_null($restaurants) && !is_numeric($restaurants)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($restaurants)), __LINE__);
        }
        $this->Restaurants = $restaurants;
        return $this;
    }
    /**
     * Get Stores value
     * @return int|null
     */
    public function getStores()
    {
        return $this->Stores;
    }
    /**
     * Set Stores value
     * @param int $stores
     * @return \StructType\JP_CruiseServices
     */
    public function setStores($stores = null)
    {
        // validation for constraint: int
        if (!is_null($stores) && !is_numeric($stores)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($stores)), __LINE__);
        }
        $this->Stores = $stores;
        return $this;
    }
    /**
     * Get Lifts value
     * @return int|null
     */
    public function getLifts()
    {
        return $this->Lifts;
    }
    /**
     * Set Lifts value
     * @param int $lifts
     * @return \StructType\JP_CruiseServices
     */
    public function setLifts($lifts = null)
    {
        // validation for constraint: int
        if (!is_null($lifts) && !is_numeric($lifts)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($lifts)), __LINE__);
        }
        $this->Lifts = $lifts;
        return $this;
    }
    /**
     * Get Casino value
     * @return bool|null
     */
    public function getCasino()
    {
        return $this->Casino;
    }
    /**
     * Set Casino value
     * @param bool $casino
     * @return \StructType\JP_CruiseServices
     */
    public function setCasino($casino = null)
    {
        // validation for constraint: boolean
        if (!is_null($casino) && !is_bool($casino)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($casino)), __LINE__);
        }
        $this->Casino = $casino;
        return $this;
    }
    /**
     * Get Cinema value
     * @return bool|null
     */
    public function getCinema()
    {
        return $this->Cinema;
    }
    /**
     * Set Cinema value
     * @param bool $cinema
     * @return \StructType\JP_CruiseServices
     */
    public function setCinema($cinema = null)
    {
        // validation for constraint: boolean
        if (!is_null($cinema) && !is_bool($cinema)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($cinema)), __LINE__);
        }
        $this->Cinema = $cinema;
        return $this;
    }
    /**
     * Get Beautysalons value
     * @return bool|null
     */
    public function getBeautysalons()
    {
        return $this->Beautysalons;
    }
    /**
     * Set Beautysalons value
     * @param bool $beautysalons
     * @return \StructType\JP_CruiseServices
     */
    public function setBeautysalons($beautysalons = null)
    {
        // validation for constraint: boolean
        if (!is_null($beautysalons) && !is_bool($beautysalons)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($beautysalons)), __LINE__);
        }
        $this->Beautysalons = $beautysalons;
        return $this;
    }
    /**
     * Get Chapel value
     * @return bool|null
     */
    public function getChapel()
    {
        return $this->Chapel;
    }
    /**
     * Set Chapel value
     * @param bool $chapel
     * @return \StructType\JP_CruiseServices
     */
    public function setChapel($chapel = null)
    {
        // validation for constraint: boolean
        if (!is_null($chapel) && !is_bool($chapel)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($chapel)), __LINE__);
        }
        $this->Chapel = $chapel;
        return $this;
    }
    /**
     * Get Library value
     * @return bool|null
     */
    public function getLibrary()
    {
        return $this->Library;
    }
    /**
     * Set Library value
     * @param bool $library
     * @return \StructType\JP_CruiseServices
     */
    public function setLibrary($library = null)
    {
        // validation for constraint: boolean
        if (!is_null($library) && !is_bool($library)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($library)), __LINE__);
        }
        $this->Library = $library;
        return $this;
    }
    /**
     * Get Theater value
     * @return bool|null
     */
    public function getTheater()
    {
        return $this->Theater;
    }
    /**
     * Set Theater value
     * @param bool $theater
     * @return \StructType\JP_CruiseServices
     */
    public function setTheater($theater = null)
    {
        // validation for constraint: boolean
        if (!is_null($theater) && !is_bool($theater)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($theater)), __LINE__);
        }
        $this->Theater = $theater;
        return $this;
    }
    /**
     * Get Disco value
     * @return bool|null
     */
    public function getDisco()
    {
        return $this->Disco;
    }
    /**
     * Set Disco value
     * @param bool $disco
     * @return \StructType\JP_CruiseServices
     */
    public function setDisco($disco = null)
    {
        // validation for constraint: boolean
        if (!is_null($disco) && !is_bool($disco)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($disco)), __LINE__);
        }
        $this->Disco = $disco;
        return $this;
    }
    /**
     * Get Spa value
     * @return bool|null
     */
    public function getSpa()
    {
        return $this->Spa;
    }
    /**
     * Set Spa value
     * @param bool $spa
     * @return \StructType\JP_CruiseServices
     */
    public function setSpa($spa = null)
    {
        // validation for constraint: boolean
        if (!is_null($spa) && !is_bool($spa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($spa)), __LINE__);
        }
        $this->Spa = $spa;
        return $this;
    }
    /**
     * Get Playroom value
     * @return bool|null
     */
    public function getPlayroom()
    {
        return $this->Playroom;
    }
    /**
     * Set Playroom value
     * @param bool $playroom
     * @return \StructType\JP_CruiseServices
     */
    public function setPlayroom($playroom = null)
    {
        // validation for constraint: boolean
        if (!is_null($playroom) && !is_bool($playroom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($playroom)), __LINE__);
        }
        $this->Playroom = $playroom;
        return $this;
    }
    /**
     * Get Wedding value
     * @return bool|null
     */
    public function getWedding()
    {
        return $this->Wedding;
    }
    /**
     * Set Wedding value
     * @param bool $wedding
     * @return \StructType\JP_CruiseServices
     */
    public function setWedding($wedding = null)
    {
        // validation for constraint: boolean
        if (!is_null($wedding) && !is_bool($wedding)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($wedding)), __LINE__);
        }
        $this->Wedding = $wedding;
        return $this;
    }
    /**
     * Get Internet value
     * @return bool|null
     */
    public function getInternet()
    {
        return $this->Internet;
    }
    /**
     * Set Internet value
     * @param bool $internet
     * @return \StructType\JP_CruiseServices
     */
    public function setInternet($internet = null)
    {
        // validation for constraint: boolean
        if (!is_null($internet) && !is_bool($internet)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($internet)), __LINE__);
        }
        $this->Internet = $internet;
        return $this;
    }
    /**
     * Get Laundry value
     * @return bool|null
     */
    public function getLaundry()
    {
        return $this->Laundry;
    }
    /**
     * Set Laundry value
     * @param bool $laundry
     * @return \StructType\JP_CruiseServices
     */
    public function setLaundry($laundry = null)
    {
        // validation for constraint: boolean
        if (!is_null($laundry) && !is_bool($laundry)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($laundry)), __LINE__);
        }
        $this->Laundry = $laundry;
        return $this;
    }
    /**
     * Get Autolaundry value
     * @return bool|null
     */
    public function getAutolaundry()
    {
        return $this->Autolaundry;
    }
    /**
     * Set Autolaundry value
     * @param bool $autolaundry
     * @return \StructType\JP_CruiseServices
     */
    public function setAutolaundry($autolaundry = null)
    {
        // validation for constraint: boolean
        if (!is_null($autolaundry) && !is_bool($autolaundry)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($autolaundry)), __LINE__);
        }
        $this->Autolaundry = $autolaundry;
        return $this;
    }
    /**
     * Get Showroom value
     * @return bool|null
     */
    public function getShowroom()
    {
        return $this->Showroom;
    }
    /**
     * Set Showroom value
     * @param bool $showroom
     * @return \StructType\JP_CruiseServices
     */
    public function setShowroom($showroom = null)
    {
        // validation for constraint: boolean
        if (!is_null($showroom) && !is_bool($showroom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($showroom)), __LINE__);
        }
        $this->Showroom = $showroom;
        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 \StructType\JP_CruiseServices
     */
    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__;
    }
}
