<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetGeoZoneEventsResult StructType
 * @subpackage Structs
 */
class GetGeoZoneEventsResult extends ExecutionResult
{
    /**
     * The SynchronizedUntilDate
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var string
     */
    public $SynchronizedUntilDate;
    /**
     * The SynchronizedUntilId
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var int
     */
    public $SynchronizedUntilId;
    /**
     * The GeoZoneId
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $GeoZoneId;
    /**
     * The GeoZoneName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $GeoZoneName;
    /**
     * The GeoZoneEvents
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \ArrayType\ArrayOfGetGeoZoneEventResult
     */
    public $GeoZoneEvents;
    /**
     * Constructor method for GetGeoZoneEventsResult
     * @uses GetGeoZoneEventsResult::setSynchronizedUntilDate()
     * @uses GetGeoZoneEventsResult::setSynchronizedUntilId()
     * @uses GetGeoZoneEventsResult::setGeoZoneId()
     * @uses GetGeoZoneEventsResult::setGeoZoneName()
     * @uses GetGeoZoneEventsResult::setGeoZoneEvents()
     * @param string $synchronizedUntilDate
     * @param int $synchronizedUntilId
     * @param int $geoZoneId
     * @param string $geoZoneName
     * @param \ArrayType\ArrayOfGetGeoZoneEventResult $geoZoneEvents
     */
    public function __construct($synchronizedUntilDate = null, $synchronizedUntilId = null, $geoZoneId = null, $geoZoneName = null, \ArrayType\ArrayOfGetGeoZoneEventResult $geoZoneEvents = null)
    {
        $this
            ->setSynchronizedUntilDate($synchronizedUntilDate)
            ->setSynchronizedUntilId($synchronizedUntilId)
            ->setGeoZoneId($geoZoneId)
            ->setGeoZoneName($geoZoneName)
            ->setGeoZoneEvents($geoZoneEvents);
    }
    /**
     * Get SynchronizedUntilDate value
     * @return string
     */
    public function getSynchronizedUntilDate()
    {
        return $this->SynchronizedUntilDate;
    }
    /**
     * Set SynchronizedUntilDate value
     * @param string $synchronizedUntilDate
     * @return \StructType\GetGeoZoneEventsResult
     */
    public function setSynchronizedUntilDate($synchronizedUntilDate = null)
    {
        // validation for constraint: string
        if (!is_null($synchronizedUntilDate) && !is_string($synchronizedUntilDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($synchronizedUntilDate, true), gettype($synchronizedUntilDate)), __LINE__);
        }
        $this->SynchronizedUntilDate = $synchronizedUntilDate;
        return $this;
    }
    /**
     * Get SynchronizedUntilId value
     * @return int
     */
    public function getSynchronizedUntilId()
    {
        return $this->SynchronizedUntilId;
    }
    /**
     * Set SynchronizedUntilId value
     * @param int $synchronizedUntilId
     * @return \StructType\GetGeoZoneEventsResult
     */
    public function setSynchronizedUntilId($synchronizedUntilId = null)
    {
        // validation for constraint: int
        if (!is_null($synchronizedUntilId) && !(is_int($synchronizedUntilId) || ctype_digit($synchronizedUntilId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($synchronizedUntilId, true), gettype($synchronizedUntilId)), __LINE__);
        }
        $this->SynchronizedUntilId = $synchronizedUntilId;
        return $this;
    }
    /**
     * Get GeoZoneId value
     * @return int
     */
    public function getGeoZoneId()
    {
        return $this->GeoZoneId;
    }
    /**
     * Set GeoZoneId value
     * @param int $geoZoneId
     * @return \StructType\GetGeoZoneEventsResult
     */
    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 GeoZoneName value
     * @return string|null
     */
    public function getGeoZoneName()
    {
        return $this->GeoZoneName;
    }
    /**
     * Set GeoZoneName value
     * @param string $geoZoneName
     * @return \StructType\GetGeoZoneEventsResult
     */
    public function setGeoZoneName($geoZoneName = null)
    {
        // validation for constraint: string
        if (!is_null($geoZoneName) && !is_string($geoZoneName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($geoZoneName, true), gettype($geoZoneName)), __LINE__);
        }
        $this->GeoZoneName = $geoZoneName;
        return $this;
    }
    /**
     * Get GeoZoneEvents value
     * @return \ArrayType\ArrayOfGetGeoZoneEventResult|null
     */
    public function getGeoZoneEvents()
    {
        return $this->GeoZoneEvents;
    }
    /**
     * Set GeoZoneEvents value
     * @param \ArrayType\ArrayOfGetGeoZoneEventResult $geoZoneEvents
     * @return \StructType\GetGeoZoneEventsResult
     */
    public function setGeoZoneEvents(\ArrayType\ArrayOfGetGeoZoneEventResult $geoZoneEvents = null)
    {
        $this->GeoZoneEvents = $geoZoneEvents;
        return $this;
    }
}
