<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for InterfaceGeoZoneResult_V2 StructType
 * @subpackage Structs
 */
class InterfaceGeoZoneResult_V2 extends GeoZone
{
    /**
     * The GeoZoneSeq
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $GeoZoneSeq;
    /**
     * The GeoZoneID
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $GeoZoneID;
    /**
     * The POI
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\POI
     */
    public $POI;
    /**
     * Constructor method for InterfaceGeoZoneResult_V2
     * @uses InterfaceGeoZoneResult_V2::setGeoZoneSeq()
     * @uses InterfaceGeoZoneResult_V2::setGeoZoneID()
     * @uses InterfaceGeoZoneResult_V2::setPOI()
     * @param int $geoZoneSeq
     * @param int $geoZoneID
     * @param \StructType\POI $pOI
     */
    public function __construct($geoZoneSeq = null, $geoZoneID = null, \StructType\POI $pOI = null)
    {
        $this
            ->setGeoZoneSeq($geoZoneSeq)
            ->setGeoZoneID($geoZoneID)
            ->setPOI($pOI);
    }
    /**
     * Get GeoZoneSeq value
     * @return int
     */
    public function getGeoZoneSeq()
    {
        return $this->GeoZoneSeq;
    }
    /**
     * Set GeoZoneSeq value
     * @param int $geoZoneSeq
     * @return \StructType\InterfaceGeoZoneResult_V2
     */
    public function setGeoZoneSeq($geoZoneSeq = null)
    {
        // validation for constraint: int
        if (!is_null($geoZoneSeq) && !(is_int($geoZoneSeq) || ctype_digit($geoZoneSeq))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($geoZoneSeq, true), gettype($geoZoneSeq)), __LINE__);
        }
        $this->GeoZoneSeq = $geoZoneSeq;
        return $this;
    }
    /**
     * Get GeoZoneID value
     * @return int
     */
    public function getGeoZoneID()
    {
        return $this->GeoZoneID;
    }
    /**
     * Set GeoZoneID value
     * @param int $geoZoneID
     * @return \StructType\InterfaceGeoZoneResult_V2
     */
    public function setGeoZoneID($geoZoneID = null)
    {
        // validation for constraint: int
        if (!is_null($geoZoneID) && !(is_int($geoZoneID) || ctype_digit($geoZoneID))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($geoZoneID, true), gettype($geoZoneID)), __LINE__);
        }
        $this->GeoZoneID = $geoZoneID;
        return $this;
    }
    /**
     * Get POI value
     * @return \StructType\POI|null
     */
    public function getPOI()
    {
        return $this->POI;
    }
    /**
     * Set POI value
     * @param \StructType\POI $pOI
     * @return \StructType\InterfaceGeoZoneResult_V2
     */
    public function setPOI(\StructType\POI $pOI = null)
    {
        $this->POI = $pOI;
        return $this;
    }
}
