<?php

namespace ebay\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetStoreOptionsResponseType StructType
 * Meta informations extracted from the WSDL
 * - documentation: Contains the current list of options for Store configurations.
 * @subpackage Structs
 * @date 2017-04-07 16
 */
class GetStoreOptionsResponseType extends AbstractResponseType
{
    /**
     * The BasicThemeArray
     * Meta informations extracted from the WSDL
     * - documentation: The current set of basic themes. Each basic theme definition specifies a valid color scheme for the theme.
     * - minOccurs: 0
     * @var \ebay\StructType\StoreThemeArrayType
     */
    public $BasicThemeArray;
    /**
     * The AdvancedThemeArray
     * Meta informations extracted from the WSDL
     * - documentation: The current set of advances themes. Unlike basic themes, you can use any color scheme with an advanced theme. These themes are suitable for more advanced customization.
     * - minOccurs: 0
     * @var \ebay\StructType\StoreThemeArrayType
     */
    public $AdvancedThemeArray;
    /**
     * The LogoArray
     * Meta informations extracted from the WSDL
     * - documentation: The current set of Store logos. These logos are used in the Store header.
     * - minOccurs: 0
     * @var \ebay\ArrayType\StoreLogoArrayType
     */
    public $LogoArray;
    /**
     * The SubscriptionArray
     * Meta informations extracted from the WSDL
     * - documentation: The current set of eBay Store subscription tiers and corresponding subscription prices.
     * - minOccurs: 0
     * @var \ebay\ArrayType\StoreSubscriptionArrayType
     */
    public $SubscriptionArray;
    /**
     * The MaxCategories
     * Meta informations extracted from the WSDL
     * - documentation: The maximum number of categories in this store.
     * - minOccurs: 0
     * @var int
     */
    public $MaxCategories;
    /**
     * The MaxCategoryLevels
     * Meta informations extracted from the WSDL
     * - documentation: The maximum number of category levels in this store.
     * - minOccurs: 0
     * @var int
     */
    public $MaxCategoryLevels;
    /**
     * Constructor method for GetStoreOptionsResponseType
     * @uses GetStoreOptionsResponseType::setBasicThemeArray()
     * @uses GetStoreOptionsResponseType::setAdvancedThemeArray()
     * @uses GetStoreOptionsResponseType::setLogoArray()
     * @uses GetStoreOptionsResponseType::setSubscriptionArray()
     * @uses GetStoreOptionsResponseType::setMaxCategories()
     * @uses GetStoreOptionsResponseType::setMaxCategoryLevels()
     * @param \ebay\StructType\StoreThemeArrayType $basicThemeArray
     * @param \ebay\StructType\StoreThemeArrayType $advancedThemeArray
     * @param \ebay\ArrayType\StoreLogoArrayType $logoArray
     * @param \ebay\ArrayType\StoreSubscriptionArrayType $subscriptionArray
     * @param int $maxCategories
     * @param int $maxCategoryLevels
     */
    public function __construct(\ebay\StructType\StoreThemeArrayType $basicThemeArray = null, \ebay\StructType\StoreThemeArrayType $advancedThemeArray = null, \ebay\ArrayType\StoreLogoArrayType $logoArray = null, \ebay\ArrayType\StoreSubscriptionArrayType $subscriptionArray = null, $maxCategories = null, $maxCategoryLevels = null)
    {
        $this
            ->setBasicThemeArray($basicThemeArray)
            ->setAdvancedThemeArray($advancedThemeArray)
            ->setLogoArray($logoArray)
            ->setSubscriptionArray($subscriptionArray)
            ->setMaxCategories($maxCategories)
            ->setMaxCategoryLevels($maxCategoryLevels);
    }
    /**
     * Get BasicThemeArray value
     * @return \ebay\StructType\StoreThemeArrayType|null
     */
    public function getBasicThemeArray()
    {
        return $this->BasicThemeArray;
    }
    /**
     * Set BasicThemeArray value
     * @param \ebay\StructType\StoreThemeArrayType $basicThemeArray
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setBasicThemeArray(\ebay\StructType\StoreThemeArrayType $basicThemeArray = null)
    {
        $this->BasicThemeArray = $basicThemeArray;
        return $this;
    }
    /**
     * Get AdvancedThemeArray value
     * @return \ebay\StructType\StoreThemeArrayType|null
     */
    public function getAdvancedThemeArray()
    {
        return $this->AdvancedThemeArray;
    }
    /**
     * Set AdvancedThemeArray value
     * @param \ebay\StructType\StoreThemeArrayType $advancedThemeArray
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setAdvancedThemeArray(\ebay\StructType\StoreThemeArrayType $advancedThemeArray = null)
    {
        $this->AdvancedThemeArray = $advancedThemeArray;
        return $this;
    }
    /**
     * Get LogoArray value
     * @return \ebay\ArrayType\StoreLogoArrayType|null
     */
    public function getLogoArray()
    {
        return $this->LogoArray;
    }
    /**
     * Set LogoArray value
     * @param \ebay\ArrayType\StoreLogoArrayType $logoArray
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setLogoArray(\ebay\ArrayType\StoreLogoArrayType $logoArray = null)
    {
        $this->LogoArray = $logoArray;
        return $this;
    }
    /**
     * Get SubscriptionArray value
     * @return \ebay\ArrayType\StoreSubscriptionArrayType|null
     */
    public function getSubscriptionArray()
    {
        return $this->SubscriptionArray;
    }
    /**
     * Set SubscriptionArray value
     * @param \ebay\ArrayType\StoreSubscriptionArrayType $subscriptionArray
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setSubscriptionArray(\ebay\ArrayType\StoreSubscriptionArrayType $subscriptionArray = null)
    {
        $this->SubscriptionArray = $subscriptionArray;
        return $this;
    }
    /**
     * Get MaxCategories value
     * @return int|null
     */
    public function getMaxCategories()
    {
        return $this->MaxCategories;
    }
    /**
     * Set MaxCategories value
     * @param int $maxCategories
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setMaxCategories($maxCategories = null)
    {
        // validation for constraint: int
        if (!is_null($maxCategories) && !is_numeric($maxCategories)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($maxCategories)), __LINE__);
        }
        $this->MaxCategories = $maxCategories;
        return $this;
    }
    /**
     * Get MaxCategoryLevels value
     * @return int|null
     */
    public function getMaxCategoryLevels()
    {
        return $this->MaxCategoryLevels;
    }
    /**
     * Set MaxCategoryLevels value
     * @param int $maxCategoryLevels
     * @return \ebay\StructType\GetStoreOptionsResponseType
     */
    public function setMaxCategoryLevels($maxCategoryLevels = null)
    {
        // validation for constraint: int
        if (!is_null($maxCategoryLevels) && !is_numeric($maxCategoryLevels)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($maxCategoryLevels)), __LINE__);
        }
        $this->MaxCategoryLevels = $maxCategoryLevels;
        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 \ebay\StructType\GetStoreOptionsResponseType
     */
    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__;
    }
}
