<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for JP_RoomOccupancy StructType
 * @subpackage Structs
 */
class JP_RoomOccupancy extends AbstractStructBase
{
    /**
     * The Occupancy
     * @var int
     */
    public $Occupancy;
    /**
     * The MaxOccupancy
     * @var int
     */
    public $MaxOccupancy;
    /**
     * The MinOccupancy
     * @var int
     */
    public $MinOccupancy;
    /**
     * The Adults
     * @var int
     */
    public $Adults;
    /**
     * The MaxAdults
     * @var int
     */
    public $MaxAdults;
    /**
     * The MinAdults
     * @var int
     */
    public $MinAdults;
    /**
     * The Children
     * @var int
     */
    public $Children;
    /**
     * The MaxChildren
     * @var int
     */
    public $MaxChildren;
    /**
     * The MinChildren
     * @var int
     */
    public $MinChildren;
    /**
     * Constructor method for JP_RoomOccupancy
     * @uses JP_RoomOccupancy::setOccupancy()
     * @uses JP_RoomOccupancy::setMaxOccupancy()
     * @uses JP_RoomOccupancy::setMinOccupancy()
     * @uses JP_RoomOccupancy::setAdults()
     * @uses JP_RoomOccupancy::setMaxAdults()
     * @uses JP_RoomOccupancy::setMinAdults()
     * @uses JP_RoomOccupancy::setChildren()
     * @uses JP_RoomOccupancy::setMaxChildren()
     * @uses JP_RoomOccupancy::setMinChildren()
     * @param int $occupancy
     * @param int $maxOccupancy
     * @param int $minOccupancy
     * @param int $adults
     * @param int $maxAdults
     * @param int $minAdults
     * @param int $children
     * @param int $maxChildren
     * @param int $minChildren
     */
    public function __construct($occupancy = null, $maxOccupancy = null, $minOccupancy = null, $adults = null, $maxAdults = null, $minAdults = null, $children = null, $maxChildren = null, $minChildren = null)
    {
        $this
            ->setOccupancy($occupancy)
            ->setMaxOccupancy($maxOccupancy)
            ->setMinOccupancy($minOccupancy)
            ->setAdults($adults)
            ->setMaxAdults($maxAdults)
            ->setMinAdults($minAdults)
            ->setChildren($children)
            ->setMaxChildren($maxChildren)
            ->setMinChildren($minChildren);
    }
    /**
     * Get Occupancy value
     * @return int|null
     */
    public function getOccupancy()
    {
        return $this->Occupancy;
    }
    /**
     * Set Occupancy value
     * @param int $occupancy
     * @return \StructType\JP_RoomOccupancy
     */
    public function setOccupancy($occupancy = null)
    {
        // validation for constraint: int
        if (!is_null($occupancy) && !is_numeric($occupancy)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($occupancy)), __LINE__);
        }
        $this->Occupancy = $occupancy;
        return $this;
    }
    /**
     * Get MaxOccupancy value
     * @return int|null
     */
    public function getMaxOccupancy()
    {
        return $this->MaxOccupancy;
    }
    /**
     * Set MaxOccupancy value
     * @param int $maxOccupancy
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMaxOccupancy($maxOccupancy = null)
    {
        // validation for constraint: int
        if (!is_null($maxOccupancy) && !is_numeric($maxOccupancy)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($maxOccupancy)), __LINE__);
        }
        $this->MaxOccupancy = $maxOccupancy;
        return $this;
    }
    /**
     * Get MinOccupancy value
     * @return int|null
     */
    public function getMinOccupancy()
    {
        return $this->MinOccupancy;
    }
    /**
     * Set MinOccupancy value
     * @param int $minOccupancy
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMinOccupancy($minOccupancy = null)
    {
        // validation for constraint: int
        if (!is_null($minOccupancy) && !is_numeric($minOccupancy)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($minOccupancy)), __LINE__);
        }
        $this->MinOccupancy = $minOccupancy;
        return $this;
    }
    /**
     * Get Adults value
     * @return int|null
     */
    public function getAdults()
    {
        return $this->Adults;
    }
    /**
     * Set Adults value
     * @param int $adults
     * @return \StructType\JP_RoomOccupancy
     */
    public function setAdults($adults = null)
    {
        // validation for constraint: int
        if (!is_null($adults) && !is_numeric($adults)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($adults)), __LINE__);
        }
        $this->Adults = $adults;
        return $this;
    }
    /**
     * Get MaxAdults value
     * @return int|null
     */
    public function getMaxAdults()
    {
        return $this->MaxAdults;
    }
    /**
     * Set MaxAdults value
     * @param int $maxAdults
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMaxAdults($maxAdults = null)
    {
        // validation for constraint: int
        if (!is_null($maxAdults) && !is_numeric($maxAdults)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($maxAdults)), __LINE__);
        }
        $this->MaxAdults = $maxAdults;
        return $this;
    }
    /**
     * Get MinAdults value
     * @return int|null
     */
    public function getMinAdults()
    {
        return $this->MinAdults;
    }
    /**
     * Set MinAdults value
     * @param int $minAdults
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMinAdults($minAdults = null)
    {
        // validation for constraint: int
        if (!is_null($minAdults) && !is_numeric($minAdults)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($minAdults)), __LINE__);
        }
        $this->MinAdults = $minAdults;
        return $this;
    }
    /**
     * Get Children value
     * @return int|null
     */
    public function getChildren()
    {
        return $this->Children;
    }
    /**
     * Set Children value
     * @param int $children
     * @return \StructType\JP_RoomOccupancy
     */
    public function setChildren($children = null)
    {
        // validation for constraint: int
        if (!is_null($children) && !is_numeric($children)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($children)), __LINE__);
        }
        $this->Children = $children;
        return $this;
    }
    /**
     * Get MaxChildren value
     * @return int|null
     */
    public function getMaxChildren()
    {
        return $this->MaxChildren;
    }
    /**
     * Set MaxChildren value
     * @param int $maxChildren
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMaxChildren($maxChildren = null)
    {
        // validation for constraint: int
        if (!is_null($maxChildren) && !is_numeric($maxChildren)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($maxChildren)), __LINE__);
        }
        $this->MaxChildren = $maxChildren;
        return $this;
    }
    /**
     * Get MinChildren value
     * @return int|null
     */
    public function getMinChildren()
    {
        return $this->MinChildren;
    }
    /**
     * Set MinChildren value
     * @param int $minChildren
     * @return \StructType\JP_RoomOccupancy
     */
    public function setMinChildren($minChildren = null)
    {
        // validation for constraint: int
        if (!is_null($minChildren) && !is_numeric($minChildren)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($minChildren)), __LINE__);
        }
        $this->MinChildren = $minChildren;
        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_RoomOccupancy
     */
    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__;
    }
}
