<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JiGuang\JSMS as JSMS;
use Illuminate\Support\Facades\Redis;
use App\Models\Check;
use App\Models\Product;
use App\Models\UserAddress;
use App\Services\OrderService;
use App\Models\User;
use App\Models\Order;
use EasyWeChat;
use App\Models\QuestionOrder;
use App\Models\Doctors;

/**
 *
 * Copyright: Copyright (c) 2019
 *
 * @Description: 订单控制器
 * @version: v1.0.0
 * @author: fengyichao
 * @date: 2019年8月14日 下午3:14:34
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2019年8月14日     fengyichao           v1.0.0               修改原因
 */
class QuestionOrderController extends ApiController {
	public function __construct(OrderService $orderService) {
		$this->orderService = $orderService;
	}



	/**
	 *
	 * @api {post} question_order/create 咨询-订单提交
	 * @apiName question_order/create
	 * @apiGroup question_order
	 * @apiParam  {int}  doctor_id 医生id
	 * @apiSuccess {int}  order_no 订单编号，支付成功后，如果要直接开始咨询，需要带此参数打开咨询页
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/question_order/create?token=c81e728d9d4c2f636f067f89cc14862c&doctor_id=1
	 */
	function create(Request $request) {
		$user = User::find ( $request->user_id );
		$order = new QuestionOrder(  );
		$doctor=Doctors::find($request->doctor_id);
		$order->total_amount=$doctor->price;
		$order->doctor_id=$request->doctor_id;
		$order->user ()->associate ( $user );
		$order->save();
		// 生成预付单
		$app = EasyWeChat::payment ();
		$result = $app->order->unify ( [ 
				'body' => '主妇无忧-普通商品',
				'out_trade_no' => $order->no,
				'total_fee' => $order->total_amount * 100,
				'spbill_create_ip' => '123.12.12.123', // 可选，如不传该参数，SDK 将会自动获取相应 IP 地址
				'notify_url' => 'https://www.zhufuwuyou.net/order/notify', // 支付结果通知网址，如果不设置则会使用配置里的默认地址
				'trade_type' => 'APP'
			// 'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o'
		] );
		$result ['out_trade_no'] = $order->no;
		$result ['timestamp'] = time ();
		return $this->success ( $result );
	}
	/**
	 *
	 * @api {post} question_order/list 咨询-订单列表
	 * @apiName question_order/list
	 * @apiGroup question_order
	 * @apiParam  {int}  status  1:待咨询 2:咨询中 3:已完成 如果不传此字段 则返回【全部咨询订单】
	 * @apiSuccess {List[Map]}  data 订单列表
	 * @apiSuccess (data) {int}  doctor_id 医生id
	 * @apiSuccess (data) {string}  name 医生名称 
	 * @apiSuccess (data) {string}  room 科室
	 * @apiSuccess (data) {string}  image 医生头像
	 * @apiSuccess (data) {string}  good_at 擅长领域
	 * @apiSuccess (data) {int}  id 订单id
	 * @apiSuccess (data) {string}  no 订单编号
	 * @apiSuccess (data) {string}  total_amount 总计价格
	 * @apiSuccess (data) {int}  status 状态 
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/question_order/list?token=c81e728d9d4c2f636f067f89cc14862c&status=1
	 */
	function list(Request $request) {
		$query = QuestionOrder::query ()->leftJoin('doctors','doctor_id','doctors.id')->where ( 'user_id', $request->user_id );
		if ($request->exists ( 'status' ))
			$query->where ( 'question_orders.status', $request->status );
		$orders = $query->orderBy ( 'question_orders.created_at', 'desc' )->paginate ();
		return $this->success ( $orders );
	}
}
