<?php
/**
 * ActivityListQueryActivityQueryInfoResult
 *
 * PHP version 5
 *
 * @category Class
 * @package  Yeepay\Yop\Sdk\
 * @author   Swagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * 营销
 *
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 * OpenAPI spec version: 1.0
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 * Swagger Codegen version: 3.0.13
 */

/**
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */

namespace Yeepay\Yop\Sdk\Service\Promtion\Model;

use \ArrayAccess;
use Yeepay\Yop\Sdk\Model\ModelInterface;
use Yeepay\Yop\Sdk\Utils\ObjectSerializer;

/**
 * ActivityListQueryActivityQueryInfoResult Class Doc Comment
 *
 * @category Class
 * @description 
 * @package  Yeepay\Yop\Sdk\
 * @author   Swagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */
class ActivityListQueryActivityQueryInfoResult implements ModelInterface, ArrayAccess
{
    const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $swaggerModelName = 'ActivityListQueryActivityQueryInfoResult';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerTypes = [
        'merchantActivityNo' => 'string',
        'marketingNo' => 'string',
        'activityName' => 'string',
        'activityStatus' => 'string',
        'activityStartTime' => 'string',
        'activityEndTime' => 'string',
        'activityRemark' => 'string',
        'activityToolType' => 'string',
        'couponName' => 'string',
        'couponType' => 'string',
        'minUseAmount' => 'string',
        'preferentialAmount' => 'string',
        'discountRatio' => 'string',
        'maxPreferentialAmount' => 'string',
        'applyProductType' => 'string',
        'applyProductId' => 'string',
        'validityType' => 'string',
        'dynamicValidityType' => 'string',
        'validityDays' => 'int',
        'effectiveTime' => 'string',
        'expirationTime' => 'string',
        'couponRemark' => 'string',
        'applyGrantNumber' => 'int',
        'actualGrantNumber' => 'int',
        'sameUserMaxJoinNumber' => 'int'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $swaggerFormats = [
        'merchantActivityNo' => null,
        'marketingNo' => null,
        'activityName' => null,
        'activityStatus' => null,
        'activityStartTime' => null,
        'activityEndTime' => null,
        'activityRemark' => null,
        'activityToolType' => null,
        'couponName' => null,
        'couponType' => null,
        'minUseAmount' => null,
        'preferentialAmount' => null,
        'discountRatio' => null,
        'maxPreferentialAmount' => null,
        'applyProductType' => null,
        'applyProductId' => null,
        'validityType' => null,
        'dynamicValidityType' => null,
        'validityDays' => 'int32',
        'effectiveTime' => null,
        'expirationTime' => null,
        'couponRemark' => null,
        'applyGrantNumber' => 'int32',
        'actualGrantNumber' => 'int32',
        'sameUserMaxJoinNumber' => 'int32'
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerTypes()
    {
        return self::$swaggerTypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function swaggerFormats()
    {
        return self::$swaggerFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'merchantActivityNo' => 'merchantActivityNo',
        'marketingNo' => 'marketingNo',
        'activityName' => 'activityName',
        'activityStatus' => 'activityStatus',
        'activityStartTime' => 'activityStartTime',
        'activityEndTime' => 'activityEndTime',
        'activityRemark' => 'activityRemark',
        'activityToolType' => 'activityToolType',
        'couponName' => 'couponName',
        'couponType' => 'couponType',
        'minUseAmount' => 'minUseAmount',
        'preferentialAmount' => 'preferentialAmount',
        'discountRatio' => 'discountRatio',
        'maxPreferentialAmount' => 'maxPreferentialAmount',
        'applyProductType' => 'applyProductType',
        'applyProductId' => 'applyProductId',
        'validityType' => 'validityType',
        'dynamicValidityType' => 'dynamicValidityType',
        'validityDays' => 'validityDays',
        'effectiveTime' => 'effectiveTime',
        'expirationTime' => 'expirationTime',
        'couponRemark' => 'couponRemark',
        'applyGrantNumber' => 'applyGrantNumber',
        'actualGrantNumber' => 'actualGrantNumber',
        'sameUserMaxJoinNumber' => 'sameUserMaxJoinNumber'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'merchantActivityNo' => 'setMerchantActivityNo',
        'marketingNo' => 'setMarketingNo',
        'activityName' => 'setActivityName',
        'activityStatus' => 'setActivityStatus',
        'activityStartTime' => 'setActivityStartTime',
        'activityEndTime' => 'setActivityEndTime',
        'activityRemark' => 'setActivityRemark',
        'activityToolType' => 'setActivityToolType',
        'couponName' => 'setCouponName',
        'couponType' => 'setCouponType',
        'minUseAmount' => 'setMinUseAmount',
        'preferentialAmount' => 'setPreferentialAmount',
        'discountRatio' => 'setDiscountRatio',
        'maxPreferentialAmount' => 'setMaxPreferentialAmount',
        'applyProductType' => 'setApplyProductType',
        'applyProductId' => 'setApplyProductId',
        'validityType' => 'setValidityType',
        'dynamicValidityType' => 'setDynamicValidityType',
        'validityDays' => 'setValidityDays',
        'effectiveTime' => 'setEffectiveTime',
        'expirationTime' => 'setExpirationTime',
        'couponRemark' => 'setCouponRemark',
        'applyGrantNumber' => 'setApplyGrantNumber',
        'actualGrantNumber' => 'setActualGrantNumber',
        'sameUserMaxJoinNumber' => 'setSameUserMaxJoinNumber'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'merchantActivityNo' => 'getMerchantActivityNo',
        'marketingNo' => 'getMarketingNo',
        'activityName' => 'getActivityName',
        'activityStatus' => 'getActivityStatus',
        'activityStartTime' => 'getActivityStartTime',
        'activityEndTime' => 'getActivityEndTime',
        'activityRemark' => 'getActivityRemark',
        'activityToolType' => 'getActivityToolType',
        'couponName' => 'getCouponName',
        'couponType' => 'getCouponType',
        'minUseAmount' => 'getMinUseAmount',
        'preferentialAmount' => 'getPreferentialAmount',
        'discountRatio' => 'getDiscountRatio',
        'maxPreferentialAmount' => 'getMaxPreferentialAmount',
        'applyProductType' => 'getApplyProductType',
        'applyProductId' => 'getApplyProductId',
        'validityType' => 'getValidityType',
        'dynamicValidityType' => 'getDynamicValidityType',
        'validityDays' => 'getValidityDays',
        'effectiveTime' => 'getEffectiveTime',
        'expirationTime' => 'getExpirationTime',
        'couponRemark' => 'getCouponRemark',
        'applyGrantNumber' => 'getApplyGrantNumber',
        'actualGrantNumber' => 'getActualGrantNumber',
        'sameUserMaxJoinNumber' => 'getSameUserMaxJoinNumber'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$swaggerModelName;
    }

    

    

    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['merchantActivityNo'] = isset($data['merchantActivityNo']) ? $data['merchantActivityNo'] : null;
        $this->container['marketingNo'] = isset($data['marketingNo']) ? $data['marketingNo'] : null;
        $this->container['activityName'] = isset($data['activityName']) ? $data['activityName'] : null;
        $this->container['activityStatus'] = isset($data['activityStatus']) ? $data['activityStatus'] : null;
        $this->container['activityStartTime'] = isset($data['activityStartTime']) ? $data['activityStartTime'] : null;
        $this->container['activityEndTime'] = isset($data['activityEndTime']) ? $data['activityEndTime'] : null;
        $this->container['activityRemark'] = isset($data['activityRemark']) ? $data['activityRemark'] : null;
        $this->container['activityToolType'] = isset($data['activityToolType']) ? $data['activityToolType'] : null;
        $this->container['couponName'] = isset($data['couponName']) ? $data['couponName'] : null;
        $this->container['couponType'] = isset($data['couponType']) ? $data['couponType'] : null;
        $this->container['minUseAmount'] = isset($data['minUseAmount']) ? $data['minUseAmount'] : null;
        $this->container['preferentialAmount'] = isset($data['preferentialAmount']) ? $data['preferentialAmount'] : null;
        $this->container['discountRatio'] = isset($data['discountRatio']) ? $data['discountRatio'] : null;
        $this->container['maxPreferentialAmount'] = isset($data['maxPreferentialAmount']) ? $data['maxPreferentialAmount'] : null;
        $this->container['applyProductType'] = isset($data['applyProductType']) ? $data['applyProductType'] : null;
        $this->container['applyProductId'] = isset($data['applyProductId']) ? $data['applyProductId'] : null;
        $this->container['validityType'] = isset($data['validityType']) ? $data['validityType'] : null;
        $this->container['dynamicValidityType'] = isset($data['dynamicValidityType']) ? $data['dynamicValidityType'] : null;
        $this->container['validityDays'] = isset($data['validityDays']) ? $data['validityDays'] : null;
        $this->container['effectiveTime'] = isset($data['effectiveTime']) ? $data['effectiveTime'] : null;
        $this->container['expirationTime'] = isset($data['expirationTime']) ? $data['expirationTime'] : null;
        $this->container['couponRemark'] = isset($data['couponRemark']) ? $data['couponRemark'] : null;
        $this->container['applyGrantNumber'] = isset($data['applyGrantNumber']) ? $data['applyGrantNumber'] : null;
        $this->container['actualGrantNumber'] = isset($data['actualGrantNumber']) ? $data['actualGrantNumber'] : null;
        $this->container['sameUserMaxJoinNumber'] = isset($data['sameUserMaxJoinNumber']) ? $data['sameUserMaxJoinNumber'] : null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets merchantActivityNo
     *
     * @return string
     */
    public function getMerchantActivityNo()
    {
        return $this->container['merchantActivityNo'];
    }

    /**
     * Sets merchantActivityNo
     *
     * @param string $merchantActivityNo 商户活动编号
     *
     * @return $this
     */
    public function setMerchantActivityNo($merchantActivityNo)
    {
        $this->container['merchantActivityNo'] = $merchantActivityNo;

        return $this;
    }

    /**
     * Gets marketingNo
     *
     * @return string
     */
    public function getMarketingNo()
    {
        return $this->container['marketingNo'];
    }

    /**
     * Sets marketingNo
     *
     * @param string $marketingNo 易宝活动编号
     *
     * @return $this
     */
    public function setMarketingNo($marketingNo)
    {
        $this->container['marketingNo'] = $marketingNo;

        return $this;
    }

    /**
     * Gets activityName
     *
     * @return string
     */
    public function getActivityName()
    {
        return $this->container['activityName'];
    }

    /**
     * Sets activityName
     *
     * @param string $activityName 活动名称
     *
     * @return $this
     */
    public function setActivityName($activityName)
    {
        $this->container['activityName'] = $activityName;

        return $this;
    }

    /**
     * Gets activityStatus
     *
     * @return string
     */
    public function getActivityStatus()
    {
        return $this->container['activityStatus'];
    }

    /**
     * Sets activityStatus
     *
     * @param string $activityStatus 活动状态
     *
     * @return $this
     */
    public function setActivityStatus($activityStatus)
    {
        $this->container['activityStatus'] = $activityStatus;

        return $this;
    }

    /**
     * Gets activityStartTime
     *
     * @return string
     */
    public function getActivityStartTime()
    {
        return $this->container['activityStartTime'];
    }

    /**
     * Sets activityStartTime
     *
     * @param string $activityStartTime 活动开始时间
     *
     * @return $this
     */
    public function setActivityStartTime($activityStartTime)
    {
        $this->container['activityStartTime'] = $activityStartTime;

        return $this;
    }

    /**
     * Gets activityEndTime
     *
     * @return string
     */
    public function getActivityEndTime()
    {
        return $this->container['activityEndTime'];
    }

    /**
     * Sets activityEndTime
     *
     * @param string $activityEndTime 活动结束时间
     *
     * @return $this
     */
    public function setActivityEndTime($activityEndTime)
    {
        $this->container['activityEndTime'] = $activityEndTime;

        return $this;
    }

    /**
     * Gets activityRemark
     *
     * @return string
     */
    public function getActivityRemark()
    {
        return $this->container['activityRemark'];
    }

    /**
     * Sets activityRemark
     *
     * @param string $activityRemark 活动说明
     *
     * @return $this
     */
    public function setActivityRemark($activityRemark)
    {
        $this->container['activityRemark'] = $activityRemark;

        return $this;
    }

    /**
     * Gets activityToolType
     *
     * @return string
     */
    public function getActivityToolType()
    {
        return $this->container['activityToolType'];
    }

    /**
     * Sets activityToolType
     *
     * @param string $activityToolType 活动工具类型
     *
     * @return $this
     */
    public function setActivityToolType($activityToolType)
    {
        $this->container['activityToolType'] = $activityToolType;

        return $this;
    }

    /**
     * Gets couponName
     *
     * @return string
     */
    public function getCouponName()
    {
        return $this->container['couponName'];
    }

    /**
     * Sets couponName
     *
     * @param string $couponName 优惠券名称
     *
     * @return $this
     */
    public function setCouponName($couponName)
    {
        $this->container['couponName'] = $couponName;

        return $this;
    }

    /**
     * Gets couponType
     *
     * @return string
     */
    public function getCouponType()
    {
        return $this->container['couponType'];
    }

    /**
     * Sets couponType
     *
     * @param string $couponType 优惠券类型
     *
     * @return $this
     */
    public function setCouponType($couponType)
    {
        $this->container['couponType'] = $couponType;

        return $this;
    }

    /**
     * Gets minUseAmount
     *
     * @return string
     */
    public function getMinUseAmount()
    {
        return $this->container['minUseAmount'];
    }

    /**
     * Sets minUseAmount
     *
     * @param string $minUseAmount 最小使用金额
     *
     * @return $this
     */
    public function setMinUseAmount($minUseAmount)
    {
        $this->container['minUseAmount'] = $minUseAmount;

        return $this;
    }

    /**
     * Gets preferentialAmount
     *
     * @return string
     */
    public function getPreferentialAmount()
    {
        return $this->container['preferentialAmount'];
    }

    /**
     * Sets preferentialAmount
     *
     * @param string $preferentialAmount 优惠金额
     *
     * @return $this
     */
    public function setPreferentialAmount($preferentialAmount)
    {
        $this->container['preferentialAmount'] = $preferentialAmount;

        return $this;
    }

    /**
     * Gets discountRatio
     *
     * @return string
     */
    public function getDiscountRatio()
    {
        return $this->container['discountRatio'];
    }

    /**
     * Sets discountRatio
     *
     * @param string $discountRatio 折扣比例
     *
     * @return $this
     */
    public function setDiscountRatio($discountRatio)
    {
        $this->container['discountRatio'] = $discountRatio;

        return $this;
    }

    /**
     * Gets maxPreferentialAmount
     *
     * @return string
     */
    public function getMaxPreferentialAmount()
    {
        return $this->container['maxPreferentialAmount'];
    }

    /**
     * Sets maxPreferentialAmount
     *
     * @param string $maxPreferentialAmount 最大优惠金额
     *
     * @return $this
     */
    public function setMaxPreferentialAmount($maxPreferentialAmount)
    {
        $this->container['maxPreferentialAmount'] = $maxPreferentialAmount;

        return $this;
    }

    /**
     * Gets applyProductType
     *
     * @return string
     */
    public function getApplyProductType()
    {
        return $this->container['applyProductType'];
    }

    /**
     * Sets applyProductType
     *
     * @param string $applyProductType 适用产品类型
     *
     * @return $this
     */
    public function setApplyProductType($applyProductType)
    {
        $this->container['applyProductType'] = $applyProductType;

        return $this;
    }

    /**
     * Gets applyProductId
     *
     * @return string
     */
    public function getApplyProductId()
    {
        return $this->container['applyProductId'];
    }

    /**
     * Sets applyProductId
     *
     * @param string $applyProductId 产品id
     *
     * @return $this
     */
    public function setApplyProductId($applyProductId)
    {
        $this->container['applyProductId'] = $applyProductId;

        return $this;
    }

    /**
     * Gets validityType
     *
     * @return string
     */
    public function getValidityType()
    {
        return $this->container['validityType'];
    }

    /**
     * Sets validityType
     *
     * @param string $validityType 可用时间类型
     *
     * @return $this
     */
    public function setValidityType($validityType)
    {
        $this->container['validityType'] = $validityType;

        return $this;
    }

    /**
     * Gets dynamicValidityType
     *
     * @return string
     */
    public function getDynamicValidityType()
    {
        return $this->container['dynamicValidityType'];
    }

    /**
     * Sets dynamicValidityType
     *
     * @param string $dynamicValidityType 动态生效类型
     *
     * @return $this
     */
    public function setDynamicValidityType($dynamicValidityType)
    {
        $this->container['dynamicValidityType'] = $dynamicValidityType;

        return $this;
    }

    /**
     * Gets validityDays
     *
     * @return int
     */
    public function getValidityDays()
    {
        return $this->container['validityDays'];
    }

    /**
     * Sets validityDays
     *
     * @param int $validityDays 有效期天数
     *
     * @return $this
     */
    public function setValidityDays($validityDays)
    {
        $this->container['validityDays'] = $validityDays;

        return $this;
    }

    /**
     * Gets effectiveTime
     *
     * @return string
     */
    public function getEffectiveTime()
    {
        return $this->container['effectiveTime'];
    }

    /**
     * Sets effectiveTime
     *
     * @param string $effectiveTime 生效日期
     *
     * @return $this
     */
    public function setEffectiveTime($effectiveTime)
    {
        $this->container['effectiveTime'] = $effectiveTime;

        return $this;
    }

    /**
     * Gets expirationTime
     *
     * @return string
     */
    public function getExpirationTime()
    {
        return $this->container['expirationTime'];
    }

    /**
     * Sets expirationTime
     *
     * @param string $expirationTime 失效日期
     *
     * @return $this
     */
    public function setExpirationTime($expirationTime)
    {
        $this->container['expirationTime'] = $expirationTime;

        return $this;
    }

    /**
     * Gets couponRemark
     *
     * @return string
     */
    public function getCouponRemark()
    {
        return $this->container['couponRemark'];
    }

    /**
     * Sets couponRemark
     *
     * @param string $couponRemark 优惠券说明
     *
     * @return $this
     */
    public function setCouponRemark($couponRemark)
    {
        $this->container['couponRemark'] = $couponRemark;

        return $this;
    }

    /**
     * Gets applyGrantNumber
     *
     * @return int
     */
    public function getApplyGrantNumber()
    {
        return $this->container['applyGrantNumber'];
    }

    /**
     * Sets applyGrantNumber
     *
     * @param int $applyGrantNumber 申请数量
     *
     * @return $this
     */
    public function setApplyGrantNumber($applyGrantNumber)
    {
        $this->container['applyGrantNumber'] = $applyGrantNumber;

        return $this;
    }

    /**
     * Gets actualGrantNumber
     *
     * @return int
     */
    public function getActualGrantNumber()
    {
        return $this->container['actualGrantNumber'];
    }

    /**
     * Sets actualGrantNumber
     *
     * @param int $actualGrantNumber 实际发放数量
     *
     * @return $this
     */
    public function setActualGrantNumber($actualGrantNumber)
    {
        $this->container['actualGrantNumber'] = $actualGrantNumber;

        return $this;
    }

    /**
     * Gets sameUserMaxJoinNumber
     *
     * @return int
     */
    public function getSameUserMaxJoinNumber()
    {
        return $this->container['sameUserMaxJoinNumber'];
    }

    /**
     * Sets sameUserMaxJoinNumber
     *
     * @param int $sameUserMaxJoinNumber 同一用户最大参与次数
     *
     * @return $this
     */
    public function setSameUserMaxJoinNumber($sameUserMaxJoinNumber)
    {
        $this->container['sameUserMaxJoinNumber'] = $sameUserMaxJoinNumber;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed
     */
    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    /**
     * Sets value based on offset.
     *
     * @param integer $offset Offset
     * @param mixed   $value  Value to be set
     *
     * @return void
     */
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
            return json_encode(
                ObjectSerializer::sanitizeForSerialization($this),
                JSON_PRETTY_PRINT
            );
        }

        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}


