<?php

namespace App\Http\Controllers\Channel\OfficialAccount;

use App\Modules\OfficialAccount\Models\CustomMsgSwitchs;

use App\Modules\OfficialAccount\Services\CustomMsgService;

use App\Http\Controllers\Channel\BaseController as ChannelBaseController;
use App\Modules\OfficialAccount\Services\CustomSendStatsService;
use App\Http\Controllers\Channel\OfficialAccount\Transformers\CustomSendStatsTransformers;
use Illuminate\Http\Request;

class CustomSendStatsController extends ChannelBaseController
{

     /**
     * @apiDefine OfficialAccount 公众号
     */

    /**
     * @apiVersion 1.0.0
     * @api {GET} OfficialAccount/customSendDayStatsByChannelAndFrom 获取每日智能推送分析数据
     * @apiGroup OfficialAccount
     * @apiName customSendDayStatsByChannelAndFrom
     * @apiParam   {String}  from 智能分析类型  not_pay未支付提醒   recovery_push三天回本   hot_push热门推送   point_push书籍推荐.
     * @apiSuccess {String}  distribution_channel_id 渠道号.
     * @apiSuccess {String}  date 日期.
     * @apiSuccess {String}  push_user_num 推送次数.
     * @apiSuccess {String}  click_num 点击次数.
     * @apiSuccess {String}  amount 充值金额.
     * @apiSuccess {String}  success_pay_num 充值笔数.
     * @apiSuccess {String}  success_pay_rate 充值率.
     * @apiSuccess {String}  click_rate 点击率.
     * @apiSuccess {String}  from 智能分析类型  not_pay未支付提醒   recovery_push三天回本   hot_push热门推送   point_push书籍推荐..
     * @apiSuccessExample {json} Success-Response:
     *
     *      {
     *          "code": 0,
     *          "msg": "",
     *          "data": {
     *              "list": [
     *                  {
     *                      "id": 1,
     *                      "distribution_channel_id": 2,
     *                      "date": "2018-01-17",
     *                      "push_user_num": 1211,
     *                      "click_num": 211,
     *                      "click_rate": 0.000,
     *                      "amount": "2312.00",
     *                      "success_pay_num": 123,
     *                      "success_pay_rate": "0.5100",
     *                      "from": "not_pay"
     *                  },
     *                  {
     *                      "id": 2,
     *                      "distribution_channel_id": 2,
     *                      "date": "2018-01-16",
     *                      "push_user_num": 1312,
     *                      "click_num": 421,
     *                      "click_rate": 0.000,
     *                      "amount": "16421.00",
     *                      "success_pay_num": 3212,
     *                      "success_pay_rate": "0.2100",
     *                      "from": "not_pay"
     *                  }
     *              ],
     *              "meta": {
     *                  "total": 2,
     *                  "per_page": 15,
     *                  "current_page": 1,
     *                  "last_page": 1,
     *                  "next_page_url": "",
     *                  "prev_page_url": ""
     *              }
     *          }
     *      }   
     */
    function  customSendDayStatsByChannelAndFrom(Request $request) {


        $distribution_channel_id = $this->getChannelId();

        $from = $request->has('from') ? $request->input('from') : '';
        if(empty($from)) {
            return response()->error("PARAM_EMPTY");
        }

        \Log::info('日推送智能分析 渠道ID:'.$distribution_channel_id);
        \Log::info('日推送智能分析 类型：'.$from);

        $customMsgService = CustomSendStatsService::customSendDayStatsByChannelAndFrom($distribution_channel_id,$from);

        if (!empty($customMsgService)) {
            
            return response()->pagination(new CustomSendStatsTransformers(), $customMsgService);
        }else{

            $customMsgService['distribution_channel_id'] = $distribution_channel_id;
            $customMsgService['date'] = date("Y-m-d");
            $customMsgService['push_user_num'] = 0;
            $customMsgService['click_num'] = 0;
            $customMsgService['amount'] = 0;
            $customMsgService['success_pay_num'] = 0;
            $customMsgService['success_pay_rate'] = 0;
            $customMsgService['click_rate'] = 0;
            $customMsgService['from'] = $from;
            return response()->item(new CustomSendStatsTransformers(), $customMsgService);
        }
        
    }

    /**
     * @apiVersion 1.0.0
     * @api {GET} OfficialAccount/customSendStatsByChannelAndFrom 获取智能推送分析总数据
     * @apiGroup OfficialAccount
     * @apiName customSendStatsByChannelAndFrom
     * @apiParam   {String}  from 智能分析类型  not_pay未支付提醒   recovery_push三天回本   hot_push热门推送   point_push书籍推荐.
     * @apiSuccess {String}  distribution_channel_id 渠道号.
     * @apiSuccess {String}  date 日期.
     * @apiSuccess {String}  push_user_num 推送次数.
     * @apiSuccess {String}  click_num 点击次数.
     * @apiSuccess {String}  amount 充值金额.
     * @apiSuccess {String}  success_pay_num 充值笔数.
     * @apiSuccess {String}  success_pay_rate 充值率.
     * @apiSuccess {String}  click_rate 点击率.
     * @apiSuccess {String}  from 智能分析类型  not_pay未支付提醒   recovery_push三天回本   hot_push热门推送   point_push书籍推荐..
     * @apiSuccessExample {json} Success-Response:
     *
     *      {
     *          "code": 0,
     *          "msg": "",
     *          "data": {
     *              "id": 1,
     *              "distribution_channel_id": 2,
     *              "date": "2018-01-18",
     *              "push_user_num": 4123,
     *              "click_num": 543,
     *              "amount": "123141.00",
     *              "success_pay_num": 2132,
     *              "success_pay_rate": "0.3100",
     *              "click_rate": "0.0000",
     *              "from": "not_pay"
     *          }
     *      }  
     */
    function  customSendStatsByChannelAndFrom(Request $request) {


        $distribution_channel_id = $this->getChannelId();

        $from = $request->has('from') ? $request->input('from') : '';
        if(empty($from)) {
            return response()->error("PARAM_EMPTY");
        }

        \Log::info('日推送智能分析 渠道ID:'.$distribution_channel_id);
        \Log::info('日推送智能分析 类型：'.$from);

        $customMsgService = CustomSendStatsService::customSendStatsByChannelAndFrom($distribution_channel_id,$from);

        if (!empty($customMsgService)) {
            
            return response()->item(new CustomSendStatsTransformers(), $customMsgService);
        }else{

            $customMsgService['distribution_channel_id'] = $distribution_channel_id;
            $customMsgService['date'] = date("Y-m-d");
            $customMsgService['push_user_num'] = 0;
            $customMsgService['click_num'] = 0;
            $customMsgService['amount'] = 0;
            $customMsgService['success_pay_num'] = 0;
            $customMsgService['success_pay_rate'] = 0;
            $customMsgService['click_rate'] = 0;
            $customMsgService['from'] = $from;
            return response()->item(new CustomSendStatsTransformers(), $customMsgService);
        }
        
    }
    
    /**
     * 获取智能推送列表
     * @param Request $request
     */
    function  customSendStatsFromTypes(Request $request) {
    	$customMsgSwitchs = CustomMsgSwitchs::getCustomMsgSwitchs();

    	return response()->success($customMsgSwitchs);
    }
    
}