<?php

namespace App\Http\Controllers\WapAlipay\Order;

use App\Http\Controllers\WapAlipay\BaseController;
use Illuminate\Http\Request;
use App\Modules\Subscribe\Services\BookOrderService;
use App\Modules\Subscribe\Services\ChapterOrderService;
use App\Modules\Subscribe\Services\OrderService;
use App\Http\Controllers\WapAlipay\Order\Transformers\BookOrderTransformer;
use App\Http\Controllers\WapAlipay\Order\Transformers\ChapterOrderTransformer;
use App\Http\Controllers\WapAlipay\Order\Transformers\ChargeListTransformer;


use App\Modules\Product\Services\ProductService;

class OrdersController extends BaseController
{
    /**
     * @apiDefine Order 订单
     */


    /**
     * @apiVersion 1.0.0
     * @apiDescription 充值列表
     * @api {get} order/chargeList 充值列表
     * @apiGroup Order
     * @apiName chargeList
     * @apiSuccess {int}         code 状态码
     * @apiSuccess {String}      msg  信息
     * @apiSuccess {object}      data 结果集
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *       code: 0,
     *       msg: "",
     *       data: [
     *               {
     *                   product_id: 1,
     *                   price: "30.00元",
     *                   vip: 0,
     *                   intro: [
     *                       {
     *                           label: 3000,
     *                           important: false
     *                       },
     *                       {
     *                           label: "书币",
     *                           important: true
     *                       }
     *                   ]
     *               },
     *               {
     *                   product_id: 2,
     *                   price: "50.00元",
     *                   vip: 1,
     *                   intro: [
     *                       {
     *                           label: 5000,
     *                           important: false
     *                       },
     *                       {
     *                           label: "1000+",
     *                           important: true
     *                       },
     *                       {
     *                           label: "书币",
     *                           important: false
     *                       }
     *                       ]
     *               },
     *               {
     *                   product_id: 5,
     *                   price: "365.00元",
     *                   vip: 0,
     *                   intro: [
     *                       {
     *                       label: "年费VIP会员",
     *                       important: true
     *                       }
     *                   ]
     *               }
     *               ]
     *       }
     */
    public function chargeList(Request $request)
    {
        if (!$this->checkUid()) {
            return response()->error('WAP_NOT_LOGIN');
        }
        $res = ProductService::getChargeProduct();
        if (!$res->isEmpty()) {
            $data = [];
            foreach ($res as $v) {
                $intro = [];
                if ($v->given > 0 && $v->type == 'TICKET_RECHARGE') {
                    $intro = [
                        [
                            'label' => ($v->price * 100) . "+",
                            'important' => false,
                        ],
                        [
                            'label' => $v->given,
                            'important' => true,
                        ],
                        [
                            'label' => '书币',
                            'important' => false,
                        ]

                    ];
                    $intro2 = [
                        ['label'=>'多送','important'=>false],
                        ['label'=>(int)($v->given/100),'important'=>true],
                        ['label'=>'元','important'=>false],
                    ];
                    $v->vip = 0;
                }
                if ($v->given == 0 && $v->type == 'TICKET_RECHARGE') {
                    $intro = [
                        [
                            'label' => $v->price * 100,
                            'important' => false,
                        ],
                        [
                            'label' => '书币',
                            'important' => false,
                        ]
                    ];
                    $v->vip = 0;
                    $intro2 = [];
                }
                if ($v->given == 0 && $v->type == 'YEAR_ORDER') {
                    $intro = [
                        [
                            'label' => '年费VIP会员',
                            'important' => true,
                        ]
                    ];
                    $v->vip = 1;
                    $intro2 = [
                        ['label'=>'每天1元,全年免费看','important'=>false],
                    ];
                }
                $data[] = [
                    'product_id' => $v->id,
                    'price' => (int)$v->price . '元',
                    'vip' => $v->vip,
                    'intro' => $intro,
                    'intro2'=>$intro2,
                    'is_default' => $v->is_default,
                ];
            }
            return response()->success($data);
        } else {
            return response()->error('WAP_SYS_ERROR');
        }
    }


    /**
     * @apiVersion 1.0.0
     * @apiDescription 单本消费记录
     * @api {get} order/bookOrderList 单本消费记录
     * @apiGroup Order
     * @apiName bookOrderList
     * @apiSuccess {int}         code 状态码
     * @apiSuccess {String}      msg  信息
     * @apiSuccess {object}      data 结果集
     * @apiSuccess {Int}         uid uid
     * @apiSuccess {Int}         bid bid
     * @apiSuccess {Int}         book_name 书名
     * @apiSuccess {Int}         fee 钱
     * @apiSuccess {String}      created_at 时间
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *       code: 0,
     *       msg: "",
     *       data: list:[
     *               {
     *                   uid: 4,
     *                   bid: 1,
     *                   book_name: "dfsedfertrwet",
     *                   fee: 100,
     *                   created_at: "2017-12-02 16:24:54"
     *                   }
     *               ]
     *            meta: {
     *                       total: 1,
     *                       per_page: 15,
     *                       current_page: 1,
     *                       last_page: 1,
     *                       next_page_url: "",
     *                       prev_page_url: ""
     *               }
     *       }
     */
    public function bookOrderList(Request $request)
    {
        if (!$this->checkUid()) {
            return response()->error('WAP_NOT_LOGIN');
        }
        $page_size = $request->input('page_size', 15);
        $book_order = BookOrderService::getRecord($this->uid, $page_size);
        //$book_order = BookOrder::where('uid', $this->uid)->select('bid', 'uid', 'book_name', 'created_at', 'fee')->paginate($page_size);

        return response()->pagination(new BookOrderTransformer(), $book_order);
    }


    /**
     * @apiVersion 1.0.0
     * @apiDescription 章节消费记录
     * @api {get} order/chapterOrderList 章节消费记录
     * @apiGroup Order
     * @apiName chapterOrderList
     * @apiSuccess {int}         code 状态码
     * @apiSuccess {String}      msg  信息
     * @apiSuccess {object}      data 结果集
     * @apiSuccess {Int}         uid uid
     * @apiSuccess {Int}         bid bid
     * @apiSuccess {Int}         cid cid
     * @apiSuccess {Int}         chapter_name 章节名
     * @apiSuccess {Int}         book_name 书名
     * @apiSuccess {Int}         fee 钱
     * @apiSuccess {String}      created_at 时间
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *     {
     *       code: 0,
     *       msg: "",
     *       data: list:[
     *               {
     *                   uid: 4,
     *                   bid: 1,
     *                   cid: 1,
     *                   chapter_name: "sdfsd",
     *                   book_name: "dfsedfertrwet",
     *                   fee: 100,
     *                   created_at: "2017-12-02 16:24:54"
     *                   }
     *               ]
     *            meta: {
     *                       total: 1,
     *                       per_page: 15,
     *                       current_page: 1,
     *                       last_page: 1,
     *                       next_page_url: "",
     *                       prev_page_url: ""
     *               }
     *       }
     */
    public function chapterOrderList(Request $request)
    {
        if (!$this->checkUid()) {
            return response()->error('WAP_NOT_LOGIN');
        }
        $chapter_model = new ChapterOrderService();
        $page_size = $request->input('page_size', 15);
        $chapter_order = $chapter_model->getByUid($this->uid, $page_size);
        return response()->pagination(new ChapterOrderTransformer(), $chapter_order);
    }


    /**
     * @apiVersion 1.0.0
     * @apiDescription 充值记录
     * @api {get} order/chargeRecordLists 充值记录
     * @apiGroup Order
     * @apiName chargeRecordLists
     * @apiSuccess {int}         code 状态码
     * @apiSuccess {String}      msg  信息
     * @apiSuccess {object}      data 结果集
     * @apiSuccess {String}      data.price       价格
     * @apiSuccess {String}      data.status      状态
     * @apiSuccess {String}      data.trade_no    订单号
     * @apiSuccess {String}      data.created_at  时间
     * @apiSuccessExample {json} Success-Response:
     *     HTTP/1.1 200 OK
     *    {
     *       code: 0,
     *       msg: "",
     *           data: {
     *               list: [
     *               {
     *                    id: 134,
     *                    price: "1.00",
     *                    status: "PAID",
     *                    trade_no: "201712021915481585670623626232",
     *                    created_at: "2017-12-02 19:15:56"
     *           }
     *       ],
     *           meta: {
     *               total: 1,
     *               per_page: 15,
     *               current_page: 1,
     *               last_page: 1,
     *               next_page_url: "",
     *               prev_page_url: ""
     *           }
     *       }
     *    }
     */
    public function chargeRecordLists(Request $request)
    {
        $page_size = $request->input('page_size', 15);
        $res = OrderService::getOrderList($this->uid, $page_size);
        return response()->pagination(new ChargeListTransformer(), $res);
    }

    //订单是否成功
    public function isSuccess(Request $request){
        $order = $request->input('order');
        $order_info = OrderService::getByTradeNo($order);
        if($order_info && $order_info->status == 'PAID'){
            return response()->success();
        }
        return response()->error('WAP_SYS_ERROR');
    }

}