<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/3/4
 * Time: 11:53
 */
use Action\HuodongAction;
use Cuxiao\GirldayModel;
use Plugin\Helpers;
use LibModels\Wap\Cuxiao\ActivityData;
use Plugin\Cache;

/**
 *
 */
class GirldayController extends HuodongAction
{

    // const STATIC_FILE = 'http://localhost:2222/1.0.3';
    const STATIC_FILE = 'http://cdn.yoho.cn/huodong/2016xinshili-2/1.0.3';
    const STATIC_FILE_THREE = 'http://cdn.yoho.cn/huodong/2016xinshili-2';
    const SESSION_UID = 'coupon_uid';

    /**
     * 领券活动页面控制器
     */
    public function indexAction()
    {
        $this->checkLogin();

        //获取跳转到个人中心-我的优惠券链接,并调用接口,完成领券操作
        $myCouponUrl = Helpers::url('/home/coupons', null, 'default') . '?openby:yohobuy={"action":"go.coupon"}';

        $this->_view->display('index', array(
            'staticTitle' => 'YOHO!BUY有货【春潮新势力】',
            'staticFile' => self::STATIC_FILE,
            'staticJS' => array(
                'home.js'
            ),
            'couponUrl' => $myCouponUrl, // 个人中心优惠券地址
            'isApp' => $this->_isApp,
            'getCouponUrl' => Helpers::url('/cuxiao/girlday/sendCoupon', array('uid' => $this->getLoggedUid())),
            'banner' => array(
                'img' => 'http://img02.yohoboys.com/staticimg/2016/03/10/10/02b9827b20adc91409b5301f2232dc9144.jpg',
                'url' => 'http://feature.yoho.cn/0310/0310APPHOME/index.html?openby:yohobuy={"action":"go.h5","params":{"title":"YOHO!BUY有货【春潮新势力】", "url":"http://feature.yoho.cn/0310/0310APPHOME/index.html?","share":"\/operations\/api\/v5\/webshare\/getShare","shareparam":{"share_id":"382"},"param":{"share_id":"382"}}}'
            ),
            'selectUrl' => 'http://m.yohobuy.com/home/coupons?openby:yohobuy={"action":"go.coupon"}',
            'weixinUrl' => 'http://mp.weixin.qq.com/s?__biz=MjM5ODI5MDA4MA==&mid=201849402&idx=1&sn=c0089812f9769d82e0075f69d771f6e1#rd', // 微信关注地址
            'appUrl' => 'http://www.yohoshow.com/about/index/yohobuyqr', // APP 下载地址
            'shareTitle' => 'YOHO!BUY有货【春潮新势力】火力全开!320元优惠券限时派送中!',
            'shareDesc' => '换我做主,用新陪伴!白色情人节限时2件7折!',
            'shareImg' => 'http://img02.yohoboys.com/staticimg/2016/03/10/10/0298ef8fbbb543144af487fbcd6718041b.png',
            'shareLink' => 'http://feature.yoho.cn/0310/0310APPHOME/index.html'
        ));
    }

    /**
     * 领券活动-第三波页面控制器
     */
    public function girlthreeBoyAction()
    {
        // 判断是否是应用访问, 拼接APP需要的URL参数
        $isApp = null !== $this->get('app_version');
        $isAppLogged = true;
        if ($isApp) {
            $isLogged = $this->get('uid') !== null;
            $isAppLogged = $this->checkIsLogin();
        } else {
            $isLogged = $this->getUid();
        }
        $urlKids = Helpers::url('/cuxiao/girlday/girlthreeBoy');
        $urlEncode = strtr($urlKids, array('/' => '\\/'));

        $this->_view->display('girlsday-three', array(
            'staticTitle' => 'YOHO!BUY有货【春潮新势力】',
            'staticFile' => self::STATIC_FILE_THREE,
            'staticJS' => array(
                'main.js'
            ),
            'jumpUrl' => $isAppLogged ? 'javascript:;' : $urlKids . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $urlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}',
            'pageType' => 'boy',
            'isOnline' => $this->getisOnline(),
            'tab' => array('us', 'bag', 'yohope', 'shoes', 'more'),
            'moreBrand' => 'http://feature.yoho.cn/0318/TICKETSBOY/index.html',
            'isApp' => $this->_isApp,
            'isAppLogin' => $isAppLogged,
            'getCouponUrl' => Helpers::url('/cuxiao/girlday/getnamed', array('uid' => $this->getLoggedUid())),
            'shareTitle' => 'YOHO!BUY有货【春潮新势力】千万元优惠券限时派送中!',
            'shareDesc' => '全球1000+潮牌春季上新,万款新品首发,唤醒潮流尽在有货【春潮新势力】!',
            'shareImg' => 'http://img02.yohoboys.com/staticimg/2016/03/17/13/0264ec1aeb9e50d21b90460b2f28a3201a.png',
            'shareLink' => 'http://feature.yoho.cn/0318/0318APPHOME/index.html',
        ));
    }

    /**
     * 女生节第3波-女生的品牌领券
     */
    public function girlthreeGirlAction()
    {
        // 判断是否是应用访问, 拼接APP需要的URL参数
        $isApp = null !== $this->get('app_version');
        $isAppLogged = true;
        if ($isApp) {
            $isLogged = $this->get('uid') !== null;
            $isAppLogged = $this->checkIsLogin();
        } else {
            $isLogged = $this->getUid();
        }
        $urlKids = Helpers::url('/cuxiao/girlday/girlthreeGirl');
        $urlEncode = strtr($urlKids, array('/' => '\\/'));

        $isOnline = $this->getisOnline();
        $this->_view->display('girlsday-three', array(
            'staticTitle' => 'YOHO!BUY有货【春潮新势力】',
            'staticFile' => self::STATIC_FILE_THREE,
            'staticJS' => array(
                'main.js'
            ),
            'jumpUrl' => $isAppLogged ? 'javascript:;' : $urlKids . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $urlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}',
            'isOnline' => $isOnline,
            'pageType' => 'girl',
            'tab' => array('us', 'huimei', 'sport', 'yohope', 'more'),
            'moreBrand' => 'http://feature.yoho.cn/0318/TICKETSGIRL/index.html',
            'isApp' => $this->_isApp,
            'isAppLogin' => $isAppLogged,
            'getCouponUrl' => Helpers::url('/cuxiao/girlday/getnamed', array('uid' => $this->getLoggedUid())),
            'shareTitle' => 'YOHO!BUY有货【春潮新势力】千万元优惠券限时派送中!',
            'shareDesc' => '全球1000+潮牌春季上新,万款新品首发,唤醒潮流尽在有货【春潮新势力】!',
            'shareImg' => 'http://img02.yohoboys.com/staticimg/2016/03/17/13/0264ec1aeb9e50d21b90460b2f28a3201a.png',
            'shareLink' => 'http://feature.yoho.cn/0318/0318APPHOME/index.html',
        ));
    }

    /**
     * 女生节第3波-童品牌领券
     */
    public function girlthreeKidAction()
    {
        // 判断是否是应用访问, 拼接APP需要的URL参数
        $isApp = null !== $this->get('app_version');
        $isAppLogged = true;
        if ($isApp) {
            $isLogged = $this->get('uid') !== null;
            $isAppLogged = $this->checkIsLogin();
        } else {
            $isLogged = $this->getUid();
        }
        $urlKids = Helpers::url('/cuxiao/girlday/girlthreeKid');
        $urlEncode = strtr($urlKids, array('/' => '\\/'));

        $this->_view->display('girlsday-three', array(
            //'activityId' => 496, // 活动ID
            'staticTitle' => 'YOHO!BUY有货【春潮新势力】',
            'staticFile' => self::STATIC_FILE_THREE,
            'staticJS' => array(
                'main.js'
            ),
            'jumpUrl' => $isAppLogged ? 'javascript:;' : $urlKids . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $urlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}',
            'isOnline' => $this->getisOnline(),
            'pageType' => 'kid',
            // 'tab' => array('us', 'bag', 'yohope', 'shoes', 'more'),
            'moreBrand' => '',
            'isApp' => $this->_isApp,
            'isAppLogin' => $isAppLogged,
            'getCouponUrl' => Helpers::url('/cuxiao/girlday/getnamed', array('uid' => $this->getLoggedUid())),
            'shareTitle' => 'YOHO!BUY有货【春潮新势力】千万元优惠券限时派送中!',
            'shareDesc' => '全球1000+潮牌春季上新,万款新品首发,唤醒潮流尽在有货【春潮新势力】!',
            'shareImg' => 'http://img02.yohoboys.com/staticimg/2016/03/17/13/0264ec1aeb9e50d21b90460b2f28a3201a.png',
            'shareLink' => 'http://feature.yoho.cn/0318/0318APPHOME/index.html',
        ));
    }

    /**
     * 女生节第3波-创意生活品牌领券
     */
    public function girlthreeLifestyleAction()
    {
        // 判断是否是应用访问, 拼接APP需要的URL参数
        $isApp = null !== $this->get('app_version');
        $isAppLogged = true;
        if ($isApp) {
            $isLogged = $this->get('uid') !== null;
            $isAppLogged = $this->checkIsLogin();
        } else {
            $isLogged = $this->getUid();
        }
        $urlKids = Helpers::url('/cuxiao/girlday/girlthreeLifestyle');
        $urlEncode = strtr($urlKids, array('/' => '\\/'));

        $isOnline = $this->getisOnline();
        $this->_view->display('girlsday-three', array(
            'staticTitle' => 'YOHO!BUY有货【春潮新势力】',
            'staticFile' => self::STATIC_FILE_THREE,
            'staticJS' => array(
                'main.js'
            ),
            'jumpUrl' => $isAppLogged ? 'javascript:;' : $urlKids . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $urlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}',
            'isOnline' => $isOnline,
            'pageType' => 'lifestyle',
            'tab' => array('us', 'hot', 'more'),
            'moreBrand' => 'http://feature.yoho.cn/0318/TICKETSLIFE/index.html',
            'isApp' => $this->_isApp,
            'isAppLogin' => $isAppLogged,
            'getCouponUrl' => Helpers::url('/cuxiao/girlday/getnamed', array('uid' => $this->getLoggedUid())),
            'shareTitle' => 'YOHO!BUY有货【春潮新势力】千万元优惠券限时派送中!',
            'shareDesc' => '全球1000+潮牌春季上新,万款新品首发,唤醒潮流尽在有货【春潮新势力】!',
            'shareImg' => 'http://img02.yohoboys.com/staticimg/2016/03/17/13/0264ec1aeb9e50d21b90460b2f28a3201a.png',
            'shareLink' => 'http://feature.yoho.cn/0318/0318APPHOME/index.html',
        ));
    }

    /**
     * 领券接口
     */
    public function sendCouponthreeAction()
    {
        $result = array('code' => 201);

        do {
            if (!$this->isAjax()) {
                break;
            }

            $activityId = $this->getthreeActivityId();
            $uid = $this->getLoggedUid();
            $result = GirldayModel::getGirldayCouponthree($uid, $activityId);
        } while (false);

        $this->echoJson($result);
    }

    /**
     * 领取指定的优惠券
     *
     * @param int activityId 活动ID
     * @param int couponId 优惠券ID
     * @return json
     */
    public function getnamedAction()
    {
        $result = array('code' => 401, 'message' => '领取失败', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            /* 判断参数是否有效 */
            $activityId = $this->getthreeActivityId();
            $couponId = $this->post('couponId');
            if (!is_numeric($activityId) || !is_numeric($couponId)) {
                break;
            }

            $uid = $this->getLoggedUid();
            if (!$uid) {
                $result['code'] = 400;
                $result['message'] = '请先登录';
                $result['data'] = Helpers::url('/signin.html', array('refer' => $this->server('HTTP_REFERER', '/')), 'default');
                break;
            }

            /* 领取指定的优惠券操作 */
            $result = ActivityData::getCouponNamed($uid, $activityId, $couponId);
            if ($uid && isset($result['code']) && $result['code'] == 200) {
                //领取成功, 发送站内信消息
                $couponuid = 'couponnvshengjiedisanbo' . $uid;
                $status = Cache::get($couponuid);
                if (!$status) {
                    $this->sendMessage($uid, '【优惠券】您已成功领取春潮新势力-品牌优惠券。', '尊敬的客户:恭喜您成功获得春潮新势力-品牌优惠券 !您可以在个人中心查看优惠券详情。');
                    Cache::set($couponuid, true, 3600 * 24 * 5);
                }
            }
        } while (false);

        $this->echoJson($result);
    }

    /**
     * 领券接口
     */
    public function sendCouponAction()
    {
        $result = array('code' => 201);

        do {
            if (!$this->isAjax()) {
                break;
            }

            $activityId = $this->getActivityId();
            $uid = $this->getLoggedUid();
            $result = GirldayModel::getGirldayCoupon($uid, $activityId);
        } while (false);

        $this->echoJson($result);
    }

    /**
     * 检测登录状态
     *
     */
    private function getLoggedUid()
    {
        if ($this->_isApp) {
            $uid = $this->get('uid');
        } else {
            $uid = $this->getUid();
        }

        return $uid;
    }

    /**
     * 判断是否登陆
     */
    private function checkLogin()
    {
        $playUrl = Helpers::url('/cuxiao/girlday/index');

        if (!$this->getLoggedUid()) {
            if (!$this->_isApp) {
                $this->go(Helpers::url('/signin.html', array('refer' => $playUrl), 'default'));
            } else {
                $playUrlEncode = strtr($playUrl, array('/' => '\\/'));
                $this->go($playUrl . '?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"' . $playUrlEncode . '","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}');
            }
        }
    }

    /**
     * 根据环境来获取活动ID
     *
     * @return int
     */
    private function getActivityId()
    {
        // 设置环境变量
        switch (APPLICATION_ENV) {
            case 'production': // 生产
                return 528;
            case 'preview':      // 预览
            case 'testing':      // 测试
            case 'develop':      // 开发
            default:
                return 490;
        }
    }

    /**
     * 发送站内信
     *
     * @param int $uid 用户ID
     */
    private function sendMessage($uid, $title, $content)
    {
        try {
            ActivityData::message($uid, $title, $content);
        } catch (Exception $e) {
            // do nothing
        }
    }

    /**
     * 根据环境来获取活动ID
     *
     * @return int
     */
    private function getthreeActivityId()
    {
        // 设置环境变量
        switch (APPLICATION_ENV) {
            case 'production': // 生产
                return 544;
            case 'preview':      // 预览
            case 'testing':      // 测试
            case 'develop':      // 开发
            default:
                return 496;
        }
    }

    /**
     * 根据环境来获取线上线下
     *
     * @return int
     */
    private function getisOnline()
    {
        // 设置环境变量
        switch (APPLICATION_ENV) {
            case 'production': // 生产
                return 1;
            case 'preview':      // 预览
            case 'testing':      // 测试
            case 'develop':      // 开发
            default:
                return 0;
        }
    }

    /**
     * 检查用户是否登录
     *
     * @return bool (false:表示未登录,true:表示已登录)
     */
    private function checkIsLogin()
    {
        do {
            /* 判断是否有参数 */
            $uid = $this->get('uid');
            if (empty($uid) || !is_numeric($uid)) {
                break;
            }

            /* 判断参数是否有效 */
            $secret = $this->get('client_secret');
            if (!isset($secret)) {
                break;
            }

            $this->setSession(self::SESSION_UID, $uid);

            return true;
            
        } while (false);

        return false;
    }

}