<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for VehicleComfortInfo StructType
 * @subpackage Structs
 */
class VehicleComfortInfo extends AbstractStructBase
{
    /**
     * The Airco
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $Airco;
    /**
     * The Bar
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $Bar;
    /**
     * The Toilet
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var bool
     */
    public $Toilet;
    /**
     * The Seats
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var int
     */
    public $Seats;
    /**
     * Constructor method for VehicleComfortInfo
     * @uses VehicleComfortInfo::setAirco()
     * @uses VehicleComfortInfo::setBar()
     * @uses VehicleComfortInfo::setToilet()
     * @uses VehicleComfortInfo::setSeats()
     * @param bool $airco
     * @param bool $bar
     * @param bool $toilet
     * @param int $seats
     */
    public function __construct($airco = null, $bar = null, $toilet = null, $seats = null)
    {
        $this
            ->setAirco($airco)
            ->setBar($bar)
            ->setToilet($toilet)
            ->setSeats($seats);
    }
    /**
     * Get Airco value
     * @return bool
     */
    public function getAirco()
    {
        return $this->Airco;
    }
    /**
     * Set Airco value
     * @param bool $airco
     * @return \StructType\VehicleComfortInfo
     */
    public function setAirco($airco = null)
    {
        // validation for constraint: boolean
        if (!is_null($airco) && !is_bool($airco)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($airco, true), gettype($airco)), __LINE__);
        }
        $this->Airco = $airco;
        return $this;
    }
    /**
     * Get Bar value
     * @return bool
     */
    public function getBar()
    {
        return $this->Bar;
    }
    /**
     * Set Bar value
     * @param bool $bar
     * @return \StructType\VehicleComfortInfo
     */
    public function setBar($bar = null)
    {
        // validation for constraint: boolean
        if (!is_null($bar) && !is_bool($bar)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($bar, true), gettype($bar)), __LINE__);
        }
        $this->Bar = $bar;
        return $this;
    }
    /**
     * Get Toilet value
     * @return bool
     */
    public function getToilet()
    {
        return $this->Toilet;
    }
    /**
     * Set Toilet value
     * @param bool $toilet
     * @return \StructType\VehicleComfortInfo
     */
    public function setToilet($toilet = null)
    {
        // validation for constraint: boolean
        if (!is_null($toilet) && !is_bool($toilet)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($toilet, true), gettype($toilet)), __LINE__);
        }
        $this->Toilet = $toilet;
        return $this;
    }
    /**
     * Get Seats value
     * @return int
     */
    public function getSeats()
    {
        return $this->Seats;
    }
    /**
     * Set Seats value
     * @param int $seats
     * @return \StructType\VehicleComfortInfo
     */
    public function setSeats($seats = null)
    {
        // validation for constraint: int
        if (!is_null($seats) && !(is_int($seats) || ctype_digit($seats))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($seats, true), gettype($seats)), __LINE__);
        }
        $this->Seats = $seats;
        return $this;
    }
}
