<?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\Category;
use App\Models\Doctors;

/**
 *
 * Copyright: Copyright (c) 2019 LanRu-Caifu
 *
 * @Description: 检测控制器
 * @version: v1.0.0
 * @author: fengyichao
 * @date: 2019年8月2日 下午3:42:34
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2019年8月2日     fengyichao           v1.0.0               修改原因
 */
class CheckController extends ApiController {

	/**
	 *
	 * @api {post} check/create 检测接口-上传用户试纸图片
	 * @apiName check/create
	 * @apiGroup check
	 * @apiParam {int} product_id(非必填) 试纸产品id
	 * @apiParam {int} category_id 症状id 
	 * @apiParam {string} img_url 阿里云图片地址 
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/check/create?token=c81e728d9d4c2f636f067f89cc14862c&product_id=1&category_id=28&img_url=xxx
	 * @apiPermission token 必传
	 */
	function create(Request $request) {
		$rules = [ 
				'product_id' => [ 
						'required'
				],
				'category_id' => [ 
						'required'
				],
				'img_url' => [ 
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$data=$request->all();
		$data['category_name']=Category::find($request->category_id)->name;
		$data['category_img_url']=Category::find($request->category_id)->img_url;
		$data['user_id']=$request->user_id;
		Check::create($data);
		return $this->success ();
	}
	/**
	 *
	 * @api {post} check/list 检测结果-列表
	 * @apiName check/list
	 * @apiGroup check
	 * @apiParam {int} page 页码
	 * @apiSuccess {List[Map]}  data 商品分页数据
	 * @apiSuccess (data) {int}  id 检测结果 id
	 * @apiSuccess (data) {string}  title 商品标题
	 * @apiSuccess (data) {int}  category_id 疾病分类id
	 * @apiSuccess (data) {String}  category_name 疾病分类名称
	 * @apiSuccess (data) {String}  category_img_url 疾病分类标识图
	 * @apiSuccess (data) {String}  result 检测结果
	 * @apiSuccess (data) {String}  conclusion 检测结论
	 * @apiSuccess (data) {int}  status 0:检测中 1:已完成 2:失败
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/check/list?token=c81e728d9d4c2f636f067f89cc14862c&page=1
	 * @apiPermission token 必传
	 */
	function list(Request $request){
		$page = $request->input ( 'page', 1 );
		$condition=['user_id'=>$request->user_id];
		$result = Check::leftJoin('products','product_id','products.id')->where($condition)->paginate ( 15, ['check.id','products.title',
				'products.category_id','category_name','category_img_url','result','status','conclusion','check.created_at'
		], 'page', $page );
		$resData = $result;
		return $this->success ( $resData );
	}
	/**
	 *
	 * @api {post} check/detail 检测结果-详情
	 * @apiName check/detail
	 * @apiGroup check
	 * @apiParam {int} check_id  试纸产品id
	 * @apiSuccess {Object} sick 疾病分类对象
	 * @apiSuccess (sick) {string} name 名称
	 * @apiSuccess (sick) {string} img_url 图片
	 * @apiSuccess {Object}  doctor 医生信息
	 * @apiSuccess (doctor) {int}  id id
	 * @apiSuccess (doctor) {string}  name 姓名 *
	 * @apiSuccess (doctor) {string}  title 职务
	 * @apiSuccess (doctor) {string}  room 科室
	 * @apiSuccess (doctor) {string}  image 头像 图片地址 需要前端自行拼接阿里云前缀
	 * @apiSuccess (doctor) {string}  good_at 擅长领域
	 * @apiSuccess {Object}  check 结果信息
	 * @apiSuccess (check) {string}  status 检测状态 0:检测中 1:检测完成
	 * @apiSuccess (check) {string}  img_url 用户上传的试纸
	 * @apiSuccess (check) {string}  result 医生给出的检测结果
	 * @apiSuccess (check) {string}  conclusion 医生给出的检测结论
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/detail/detail?token=c81e728d9d4c2f636f067f89cc14862c&check_id=10
	 * @apiPermission token 必传
	 */
	function detail(Request $request){
		$rules = [
				'check_id' => [
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$check=Check::find($request->check_id);
		$resData['sick']['name']=$check->category_name;
		$resData['sick']['img_url']=$check->category_img_url;
		$resData['doctor']=Doctors::find($check->doctor_id);
		$resData['check']['status']=$check->status;
		$resData['check']['img_url']=str_replace(env('OSS_URL'), '', $check->img_url);
// 		$resData['check']['img_url']=$check->img_url;
		
		$resData['check']['result']=$check->result;
		$resData['check']['conclusion']=$check->conclusion;
		return $this->success ( $resData );
	}
}
