<?php

declare(strict_types=1);

namespace App\Controller;

use App\JsonRpc\LinkServiceInterface;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Annotation\AutoController;
use App\Tools\Result;
use Hyperf\Context\Context;

use Hyperf\Logger;
use Hyperf\Validation\Contract\ValidatorFactoryInterface;

/**
 * Class LinkController
 * @package App\Controller
 */
//#[AutoController]
class LinkController extends AbstractController
{
    #[Inject]
    protected ValidatorFactoryInterface $validationFactory;
    /**
     * @var LinkServiceInterface
     */
    #[Inject]
    private $linkServiceClient;

    /**
     * 友情链接列表
     * @return array
     */
    public function getLinkList()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'page' => 'required',
                'pageSize' => 'required',
            ],
            [
                'page.required' => '当前页码不能为空',
                'pageSize.required' => '每页显示条数不能为空',
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->linkServiceClient->getLinkList($requireData);
        return $result?Result::success($result['data']):Result::error($result['message']);
    }

    /**
     * 创建友情链接
     * @return array
     */
    public function createLink()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'title' => 'required',
                'website_id' => 'required',
                'sort' => 'required',
                'url' => 'required',
                'type' => 'required',
            ],
            [
                'title.required' => '名称不能为空',
                'website_id.required' => '网站id不能为空',
                'sort.required' => '排序不能为空',
                'url.required' => '跳转地址不能为空',
                'type.required' => '类型不能为空',
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->linkServiceClient->createLink($requireData);
        return $result?Result::success($result['data']):Result::error($result['message']);
    }

    /**
     * 更新友情链接
     * @return array
     */
    public function updateLink()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'id' => 'required',
                'title' => 'required',
                'website_id' => 'required',
                'sort' => 'required',
                'url' => 'required',
                'type' => 'required',
            ],
            [
                'id.required' => 'id不能为空',
                'title.required' => '名称不能为空',
                'website_id.required' => '网站id不能为空',
                'sort.required' => '排序不能为空',
                'url.required' => '跳转地址不能为空',
                'type.required' => '类型不能为空',
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->linkServiceClient->updateLink($requireData);
        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
    }

    /**
     * 删除友情链接
     * @return array
     */
    public function delLink()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'id' => 'required',
            ],
            [
                'id.required' => 'id不能为空',
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->linkServiceClient->delLink($requireData);
        return $result?Result::success($result['data']):Result::error($result['message']);
    }

    /**
     * 获取友情链接详情
     * @return array
     */
    public function getLinkInfo()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'id' => 'required',
            ],
            [
                'id.required' => 'id不能为空',
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->linkServiceClient->getLinkInfo($requireData);
        return $result?Result::success($result['data']):Result::error($result['message']);
    }



}