<?php

namespace App\Http\Controllers\Api\V1;

use App\Models\BaseDictionaryOptionModel;
use App\Models\BaseSettingsModel;
use App\Models\SystemInfoModel;
use App\Models\UserCareDream;
use App\Models\UserInfoModel;
use Illuminate\Http\Request;
use App\Services\Base\ErrorCode;
class MyController extends Controller
{
    /**
     * @api {get} /api/my/show 个人首页
     * @apiDescription 个人首页
     * @apiGroup My
     * @apiPermission Passport
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 O*  "status": true,
     *{
     *    "status": true,
     *   "status_code": 0,
     *   "message": "",
     *   "data": {
     *       "id": 1,
     *       "phone": "13880642880",
     *       "nickname": "name1",
     *       "avatar": "https://tims%2Fitem%225_kzrcM.thumb.224_0.jpeg",
     *       "birthday": "2000-06-21",
     *       "sign": 0,
     *       "money": 0,
     *       "coin": 1300,
     *       "sex": 1,
     *       "signture": "",
     *       "height": 170,
     *       "work": "",
     *       "emotion": 1,
     *       "address": "",
     *       "city": "",
     *       "detail_address": "",
     *       "status": 1,
     *       "wechat": "",
     *        "weibo": "",
     *       "remember_token": "",
     *       "created_at": "2017-06-25 10:27:08",
     *       "updated_at": "2017-06-25 15:20:11",
     *       "deleted_at": null,
     *       "care_dreams_number": 2,
     *       "fans_number": 0,
     *       "collection_number": 0,
     *       "interaction_number": 0,
     *   }
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     *{
     *      "status": true,
     *      "status_code": 0,
     *      "message": "",
     *      "data": {
     *          "user": null
     *      }
     *}
     */
    public function show()
    {
        $user = $this->getUser();
        /*
         * 我的关注人数,我的粉丝,收藏
         * 点赞？徽章？
         * */
        $care_num = $user->careDreams;
        $user->care_dreams_number = count($care_num);
        $fens = UserCareDream::where('dream_user_id',$user->id)->get();
        $user->fans_number = count($fens);
        $collection = $user->myCollection;
        $user->collection_number = count($collection);
        $interaction_infos = $user->allInteraction;
        $user->interaction_number = count($interaction_infos);
        return $this->api($user);
    }


    /**
     * @api {get} /api/my/edit 修改个人信息
     * @apiDescription 修改个人信息
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *  "status": true,
     *   "status_code": 0,
     *   "message": "",
        "data": {
            "emotion": [
                {
                    "value": "1",
                    "name": "未婚"
                },
                {
                    "value": "2",
                    "name": "已婚"
                },
                {
                    "value": "3",
                    "name": "离异"
                }
            ],
            "sex": [
                {
                    "value": "0",
                    "name": "男"
                },
                {
                    "value": "1",
                    "name": "女"
                }
            ]
        }
     * }
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     * {
     *   "status": false,
     *   "status_code": 1500,
     *   "message": "会员不存在",
     *   "data": null
     *  }
     */
    public function  edit()
    {
        $sex = BaseDictionaryOptionModel::where('dictionary_table_code','user_info')->
             where('dictionary_code','sex')->get();
        $emotion = BaseDictionaryOptionModel::where('dictionary_table_code','user_info')->
             where('dictionary_code','emotion')->get();

        return $this->api(compact('emotion','sex'));

    }

    /**
     * @api {post} /api/my/update 保存个人信息
     * @apiDescription   保存个人信息
     *      @apiParam {string} pic   头像
     *      @apiParam {int} sex   性别
     *      @apiParam {string} signture   个性签名
     *      @apiParam {int} emotion   情感状态
     *      @apiParam {string} work   职业
     *      @apiParam {int} height   身高
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *    "status": true,
     *    "status_code": 0,
     *   "message": "",
     *   "data": ""
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     *{
     *   "status": false,
     *   "status_code": 600,
     *   "message": "保存用户数据失败",
     *   "data": null
     * }
     */
    public function update(Request $request)
    {
        $user = $this->getUser();
        $data = $request->except('_token');
        $ok =  $user->update($data);
        if ($ok == true) {
            return $this->api('');
        }else{
            return $this->error(ErrorCode::SAVE_USER_FAILED);
        }
    }

    /**
     * @api {post} /api/my/recharge 充值
     * @apiDescription 充值
     * @apiGroup My
     *    @apiParam {int} coin       充值金额
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     */
    public function recharge(Request $request)
    {
        $validator = \Validator::make($request->all(),
            [
                'coin'  => 'required|integer',
            ],
            [
                'coin.required'  => '请填写金额',
                'coin.integer'  => '请输入整数',

            ]
        );
        if($validator->fails()) return $this->validatorError($validator->messages()->all(),ErrorCode::CLIENT_WRONG_PARAMS);

        $user = $this->getUser();
        $user->coin += $request->coin;
        $user->save();
        return $this->api('');
    }

    /**
     * @api {get} /api/my/system_info 系统消息
     * @apiDescription 系统消息
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *  "status": true,
     *  "status_code": 0,
     *  "message": "",
     *  "data": {
     *     "data": [
     *        ...
     *      ]
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     */
    public function systemInfo()
    {
        $user = $this->getUser();
        $data = SystemInfoModel::where('user_id',$user->id)->orderBy('id','desc')->get();
        return $this->api(compact('data'));
    }

//    回复我的
//    public function replyMy()
//    {
//
//        $user = $this->getUser();
////        梦想
//        $dreams = $user->UserDream;
//
//        $data = $user->allInteraction;
//        foreach ($data as $item) {
//            $item->get_money = $item->dream->get_money;
//            $item->money = $item->dream->money;
//        }
//        dd($data) ;
//        if (count($dreams) == 0)
//            return $this->error(ErrorCode::DREAM_NOT_EXIST);
//        $comments_infos = [];
//        foreach ($dreams as $dream){
//            $comments_info = $dream->DreamInfo;
//            if (count($comments_info) > 0) {
//                foreach ($comments_info as $k => $value) {
//                    $value->dream_name = $dream->dream;
//                    $value->dream_about = $dream->about;
//                    $value->dream_pic = count($dream->dreamImgsFirst) > 0 ? $dream->dreamImgsFirst->pic : '';
//                    $value->progress = $dream->money == 0 ? 0 :  floor($dream->get_money/$dream->money);
//                    $value->reviewer = $value->CommentUser->nickname;
//                    $value->reviewer_pic = $value->CommentUser->pic;
//                }
//                $comments_infos[] = $comments_info;
//            }
//        }
//
//        return $this->api(compact('comments_infos'));
//    }

    /**
     * @api {get} /api/my/dream 我的梦想
     * @apiDescription 我的梦想
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *   "status": true,
     *   "status_code": 0,
     *   "message": "",
     *   "data": [
     *       {
     *           "id": 5,
     *           "user_id": 1,
     *           "name": "梦想标题1",
     *           "about": "梦想介绍",
     *           "coin": 2500,
     *           "time": 21,
     *            "get_coin": 0,
     *           "status": 0,
     *           "video": null,
     *           "sign": "",
     *           "created_at": "2017-06-25 12:45:22",
     *            "updated_at": "2017-06-25 12:45:22",
     *           "pic": "https://timgsa.baidu.com/timg?image7b14f12f.jpg",
     *       },
     *   ]
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     */
    public function dream()
    {
        $user = $this->getUser();
        $dreams = $user->dreams;

        if (count($dreams) == 0)
            return $this->error(ErrorCode::DREAM_NOT_EXIST);

        foreach ($dreams as $dream){
            $dream->pic = count($dream->img) > 0 ? $dream->img->pic : '';
        }

        return $this->api($dreams);
    }

    /**
     * @api {get} /api/my/collection 我的收藏
     * @apiDescription 我的收藏
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *   "status": true,
     *   "status_code": 0,
     *   "message": "",
     *   "data": {
     *       "data": [
     *           {                                   梦想详情
     *               "id": 12,
     *               "user_id": 2,
     *              "name": "用户2梦想标题166",
     *               "about": "用户2梦想介绍666",
     *               "coin": 2500,
     *               "time": 21,
     *               "get_coin": 0,
     *               "status": 0,
     *               "video": null,
     *               "sign": "",
     *           },
     *           "img": {
     *               "title": "",
     *               "pic": "https://f12f.jpg"      梦想封面图片
     *            }
     *       ],
     *       "users": {
     *           "2": "https://xxx.jpeg"           ID号和头像
     *       }
     *   }
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     */
    public function collection()
    {
        $user = $this->getUser();
        $dreams = $user->collection;
        $users = [];
        foreach ($dreams as $item) {
            if ($item->pivot->interaction_number > 0) {
                $user_info = UserInfoModel::find($item->pivot->dream_user_id);
                $avatar = $user_info ?  $user_info->avatar : '';
                if (!array_key_exists($item->pivot->dream_user_id,$users)) {
                    $users[$item->pivot->dream_user_id] = $avatar;
                }
            }
           $item->img;
        }
        return $this->api(compact('dreams','users'));
    }

    /**
     * @api {get} /api/my/setting 设置
     * @apiDescription 设置
     * @apiGroup My
     * @apiPermission Passport
     * @apiVersion 0.1.0
     * @apiSuccessExample {json} Success-Response:
     * HTTP/1.1 200 OK
     *{
     *   "status": true,
     *   "status_code": 0,
     *   "message": "",
     *   "data": {
     *       "key": "2511789",                    电话
     *       "value": "关于喵喵介绍"              关于喵喵
     *   }
     *}
     * @apiErrorExample {json} Error-Response:
     * HTTP/1.1 400 Bad Request
     */
    public function setting()
    {
        $data = BaseSettingsModel::where('category','miaomiao')->select('key','value')->first();
        return $this->api($data);
    }

}
