<?php

namespace App\Http\Controllers\Api\Client;

use App\Http\Controllers\ClientController;
use App\Http\Controllers\Controller;
use App\Models\User;
use Arr;
use Auth;
use Illuminate\Http\Request;
use Session;
use Illuminate\Support\Facades\Redis;
use App\Models\Sms;
use Validator;

class PcController  extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:api')->except('login', 'register', 'shop', 'getConfig','version','versionwin','buy');
        auth()->shouldUse('api');
    }

    public function login(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|string',
            'password' => 'required|string|min:6',
        ]);

        if ($validator->fails()) {
            return response()->json(['ret' => 0, 'msg' => $validator->errors()->all()], 200);
        }

        $token = Auth::attempt($validator->validated());

        if(empty($token)){
            return response()->json(['ret' => 0, 'msg' => '登陆错误'], 200);
        }

        $user = auth()->user();
        //判断到期
        $expireTime = $user["expired_at"];

        if ($expireTime < date('Y-m-d H:i:s')){
            return response()->json(['ret' => 445, 'msg' => "用户到期,请即使续费"], 200);
        }

        $userinfo = $user->profile();
        if (empty($userinfo)){
            return response()->json(['ret' => 0, 'msg' => "错误"]);
        }


        // 获取这个账号可用节点
        $query = $user->nodes()->whereIsSubscribe(1);

        if ($this->subType === 1) {
            $query = $query->whereIn('type', [1, 4]);
        } elseif ($this->subType) {
            $query = $query->whereType($this->subType);
        }

        $nodeList = $query->orderByDesc('sort')->orderBy('id')->get();
        if (empty($nodeList)) {
            return $this->failed(trans('error.subscribe.none'));
        }

        $servers = [];
        foreach ($nodeList as $node) {
            $servers[] = $node->config($user);
        }
        $servers = Arr::shuffle($servers);

        $clash_config = (new ClientController)->config("clash", $user, $servers);


        $data = [
            'ret'  => 1,
            'data' => [
                'access_token' => $token,
                'user'         => auth()->user()->profile(),
                'affurl' => route('register', ['aff' => Auth::id()]),
                'tutorial' => 'https://ruanjian.xiazi.buzz/',
                'swoftdownload' => 'https://ruanjian.xiazi.buzz/',
                'clash_config' => $clash_config
            ]];

        return response()->json(['ret' => 1, 'msg' => "请求成功",'data'=>$data], 200);
    }
}