<?php

namespace App\Http\Controllers;

use App\Constants\HttpStatus;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\App;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    /**
     * @apiDefine header
     * @apiHeader {String} Authorization "Bearer "+ token
     *
     */

    /**
     * @apiDefine lang
     * @apiParam (公共参数) {String} [lang=en] 语言
     * - 允许值：`zh`，`en`
     */

    /**
     *
     */
    /**
     * @apiDefine result
     * @apiSuccess (成功) {Number} code=0 错误代码 0-请求成功 详见  <a href="javascript:;" onclick="toMenu('Error','GetGeterrorcode')">错误代码</a>
     * @apiSuccess (成功) {Number} timestamp 服务器时间戳
     * @apiSuccess (成功) {String} msg 错误信息 OK为成功
     * @apiSuccess (成功) {Array} [data] 数据 若code!=0 则为错误数据，code=101009 该值为验证失败的详情
     *
     *
     */

    /**
     * @api {get} /getErrorCode 错误代码
     * @apiGroup Error
     * @apiSampleRequest off
     * @apiDescription 下面列出一些常见的错误代码：
     * | code    | 说明                                                                              |
     * |---------|-----------------------------------------------------------------------------------|
     * |-1       |  未知错误，联系开发人员                                                             |
     * |0        |  OK 请求成功                                                                       |
     * |101001   |  用户不存在                                                                        |
     * |101002   |  密码错误                                                                          |
     * |101003   |  验证码错误                                                                        |
     * |101004   |  验证码已过期                                                                      |
     * |101005   |  密码不一致                                                                        |
     * |101006   |  用户名已存在，请直接登录                                                           |
     * |101007   |  邮箱已存在，请直接登录                                                             |
     * |101008   |  用户名错误                                                                       |
     * |101009   |  参数验证失败，具体错误信息见 data                                                  |
     * |101010   |  系统错误                                                                         |
     * |101011   |  没有登录，请检查登录状态                                                           |
     * |101012   |  禁止收藏自己                                                                     |
     * |101013   |  先填写基本信息                                                                   |
     * |101014   |  请求地址不存在，请检查请求地址是否正确                                              |
     * |101015   |  上传的头像必须是正方形的，如果用户所选的图片不是方形的，请裁剪后上传                   |
     * |101016   |  没有匹配到合适的对象                                                              |
     * |101017   |  可收藏数达到最大值，完善资料可获取更多数量                                           |
     * |101018   |  发送失败                                                                        |
     * |101019   |  手机号码不正确                                                                    |
     * |101020   |  帖子不存在                                                                        |
     * |101021   |  文件上传错误                                                                      |
     * |101022   |  邀请码错误                                                                       |
     * |101023  |  用户已在其他设备登录                                                                |
     * |101024   |  剩余抽奖次数不足                                                                   |
     * |101025   |  地址数量最多10条                                                                   |
     * |101026   | post请求错误 |
     * |101027   | IM 错误 |
     * |101028   | 手机号已存在或已绑定其他账号，请直接登录或绑定其它手机号 |
     * |101029   | 谷歌登录错误 |
     * |101030   | 聊天余额不足 |
     * |101031   | 钱包余额不足 |
     * |101032   | Facebook 错误 |
     * |101033   | 资料验证失败，请检查当前是否是待验证状态 |
     *
     * @apiVersion 1.0.0
     */

    protected $lang = 'zh';

    public function __construct()
    {
        $lang = request()->input('lang', 'zh');
        App::setLocale($lang);
        $this->lang = $lang;
    }

    protected function success($data = [], $msg = ''): JsonResponse
    {
        return response()->json([
            'code' => HttpStatus::OK,
            'timestamp' => time(),
            // 'msg' => __('messages.' . HttpStatus::OK),
            'msg' => empty($msg) ? __('messages.' . HttpStatus::OK) : $msg,
            'data' => $data
        ]);
    }

    protected function error($code, string $msg = '', $data = []): JsonResponse
    {
        $code = intval($code);
        if ($code === 0) $code = -1;
        $m = __('messages.' . $code);
        if ($msg) $m .= "：{$msg}";
        if ($code === -3) $m = $msg;
        return response()->json([
            'code' => $code,
            'timestamp' => time(),
            'msg' => $m,
            'data' => $data
        ]);
    }

}
