<?php
/**
 * 苏宁开放平台接口 - 店铺优惠券活动新增
 *
 * @author suning
 * @date   2015-10-14
 */
class ShopCouponAddRequest  extends SuningRequest{
	
	/**
	 * 活动名称。不超过32个字符
	 */
	private $activityName;
	
	/**
	 * 活动开始时间。即返券开始时间,不得早于系统当前时间
	 */
	private $startTime;
	
	/**
	 * 活动结束时间。即返券结束时间,不得早于开始时间,时间跨度180天
	 */
	private $endTime;
	
	/**
	 * 活动方式。1:顾客领取
	 */
	private $activityPattern;
	
	/**
	 * 展示区域。1:四级和聚合页展示
	 */
	private $showRegion;
	
	/**
	 * 发行量。券张数,1~999999999
	 */
	private $activityTimesLimit;
	
	/**
	 * 领券对象。选项:0不限、1仅限苏宁员工
	 */
	private $assignedRole;
	
	/**
	 * 券面额。1~1000的整数
	 */
	private $rewardAmount;
	
	/**
	 * 券类型。1:店铺易券
	 */
	private $couponType;
	
	/**
	 * 使用金额。券类型1:订单满X元使用,X为1~999999999(9个9)之间的金额;
	 */
	private $baseAmount;
	
	/**
	 * 每人限领。0代表不限、1、2、3、4、5
	 */
	private $peopleActivityTimesLimit;
	
	/**
	 * 券生效日期。精确到天;
	 */
	private $effectStartTime;
	
	/**
	 * 券失效日期。精确到天;
	 */
	private $effectEndTime;
	
	/**
	 * 用券渠道。1代表PC,2代表移动端,3PC和移动端
	 */
	private $channelInfo;
	
	/**
	 * 商品活动范围类型。1全店铺;2部分商品,最少添加1个商品(SKU),最多添加500个商品(SKU);3全店铺排除部分商品
	 */
	private $productRange;
	
	/**
	 * 
	 */
	private $productList;
	
	public function getActivityName() {
		return $this->activityName;
	}
	
	public function setActivityName($activityName) {
		$this->activityName = $activityName;
		$this->apiParams["activityName"] = $activityName;
	}
	
	public function getStartTime() {
		return $this->startTime;
	}
	
	public function setStartTime($startTime) {
		$this->startTime = $startTime;
		$this->apiParams["startTime"] = $startTime;
	}
	
	public function getEndTime() {
		return $this->endTime;
	}
	
	public function setEndTime($endTime) {
		$this->endTime = $endTime;
		$this->apiParams["endTime"] = $endTime;
	}
	
	public function getActivityPattern() {
		return $this->activityPattern;
	}
	
	public function setActivityPattern($activityPattern) {
		$this->activityPattern = $activityPattern;
		$this->apiParams["activityPattern"] = $activityPattern;
	}
	
	public function getShowRegion() {
		return $this->showRegion;
	}
	
	public function setShowRegion($showRegion) {
		$this->showRegion = $showRegion;
		$this->apiParams["showRegion"] = $showRegion;
	}
	
	public function getActivityTimesLimit() {
		return $this->activityTimesLimit;
	}
	
	public function setActivityTimesLimit($activityTimesLimit) {
		$this->activityTimesLimit = $activityTimesLimit;
		$this->apiParams["activityTimesLimit"] = $activityTimesLimit;
	}
	
	public function getAssignedRole() {
		return $this->assignedRole;
	}
	
	public function setAssignedRole($assignedRole) {
		$this->assignedRole = $assignedRole;
		$this->apiParams["assignedRole"] = $assignedRole;
	}
	
	public function getRewardAmount() {
		return $this->rewardAmount;
	}
	
	public function setRewardAmount($rewardAmount) {
		$this->rewardAmount = $rewardAmount;
		$this->apiParams["rewardAmount"] = $rewardAmount;
	}
	
	public function getCouponType() {
		return $this->couponType;
	}
	
	public function setCouponType($couponType) {
		$this->couponType = $couponType;
		$this->apiParams["couponType"] = $couponType;
	}
	
	public function getBaseAmount() {
		return $this->baseAmount;
	}
	
	public function setBaseAmount($baseAmount) {
		$this->baseAmount = $baseAmount;
		$this->apiParams["baseAmount"] = $baseAmount;
	}
	
	public function getPeopleActivityTimesLimit() {
		return $this->peopleActivityTimesLimit;
	}
	
	public function setPeopleActivityTimesLimit($peopleActivityTimesLimit) {
		$this->peopleActivityTimesLimit = $peopleActivityTimesLimit;
		$this->apiParams["peopleActivityTimesLimit"] = $peopleActivityTimesLimit;
	}
	
	public function getEffectStartTime() {
		return $this->effectStartTime;
	}
	
	public function setEffectStartTime($effectStartTime) {
		$this->effectStartTime = $effectStartTime;
		$this->apiParams["effectStartTime"] = $effectStartTime;
	}
	
	public function getEffectEndTime() {
		return $this->effectEndTime;
	}
	
	public function setEffectEndTime($effectEndTime) {
		$this->effectEndTime = $effectEndTime;
		$this->apiParams["effectEndTime"] = $effectEndTime;
	}
	
	public function getChannelInfo() {
		return $this->channelInfo;
	}
	
	public function setChannelInfo($channelInfo) {
		$this->channelInfo = $channelInfo;
		$this->apiParams["channelInfo"] = $channelInfo;
	}
	
	public function getProductRange() {
		return $this->productRange;
	}
	
	public function setProductRange($productRange) {
		$this->productRange = $productRange;
		$this->apiParams["productRange"] = $productRange;
	}
	
	public function getProductList() {
		return $this->productList;
	}
	
	public function setProductList($productList) {
		$this->productList = $productList;
		$arr = array();
		foreach ($productList as $temp){
			array_push($arr,$temp->getApiParams());
		}
		$this->apiParams["productList"] = $arr;
	}
	
	public function getApiMethodName(){
		return 'suning.custom.shopcoupon.add';
	}
	
	public function getApiParams(){
		return $this->apiParams;
	}
	
	public function check(){
		//非空校验
		RequestCheckUtil::checkNotNull($this->activityName, 'activityName');
		RequestCheckUtil::checkNotNull($this->startTime, 'startTime');
		RequestCheckUtil::checkNotNull($this->endTime, 'endTime');
		RequestCheckUtil::checkNotNull($this->activityPattern, 'activityPattern');
		RequestCheckUtil::checkNotNull($this->showRegion, 'showRegion');
		RequestCheckUtil::checkNotNull($this->activityTimesLimit, 'activityTimesLimit');
		RequestCheckUtil::checkNotNull($this->assignedRole, 'assignedRole');
		RequestCheckUtil::checkNotNull($this->rewardAmount, 'rewardAmount');
		RequestCheckUtil::checkNotNull($this->couponType, 'couponType');
		RequestCheckUtil::checkNotNull($this->baseAmount, 'baseAmount');
		RequestCheckUtil::checkNotNull($this->peopleActivityTimesLimit, 'peopleActivityTimesLimit');
		RequestCheckUtil::checkNotNull($this->effectStartTime, 'effectStartTime');
		RequestCheckUtil::checkNotNull($this->effectEndTime, 'effectEndTime');
		RequestCheckUtil::checkNotNull($this->channelInfo, 'channelInfo');
		RequestCheckUtil::checkNotNull($this->productRange, 'productRange');
		RequestCheckUtil::checkNotNull($this->productList, 'productList');
	}
	
	public function getBizName(){
		return "addShopCoupon";
	}
	
}

class ProductList {

	private $apiParams = array();
	
	private $productCode;
	
	public function getProductCode() {
		return $this->productCode;
	}

	public function setProductCode($productCode) {
		$this->productCode = $productCode;
		$this->apiParams["productCode"] = $productCode;
	}
	
	public function getApiParams(){
		return $this->apiParams;
	}
	
}

?>