<?php

declare(strict_types=1);
namespace App\Controller;

use App\JsonRpc\FooterServiceInterface;
use App\Tools\PublicData;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Annotation\AutoController;
use App\Tools\Result;
use Hyperf\Validation\Contract\ValidatorFactoryInterface;
use App\Constants\ErrorCode;
/**
 * Class FooterController
 * @package App\Controller
 */

class FooterController extends AbstractController
{
    #[Inject]
    protected ValidatorFactoryInterface $validationFactory;

    /**
     * @var FooterServiceInterface
    */

    #[Inject]
    private $footerServiceClient;
     /**
     * 获取底部导航
     * @return array
     */
    public function getFooterCategory()
    {
        $requireData = $this->request->all();
        if(isset($requireData['website_name'])){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'website_name' =>'required'
                ],
                [
                    'website_name.required' => '网站名称不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['website_name'] = $requireData['website_name'];
        }
        if(isset($requireData['name'])){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'name' =>'required'
                ],
                [
                    'name.required' => '底部导航名称不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['name'] = $requireData['name'];
        }
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'page' =>'required',
                'pageSize' =>'required'
            ],
            [
                'page.required' => '第几页不能为空',
                'pageSize.required' => '每页显示数量不能为空'
            ]
        );
        if ($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $data['page'] = $requireData['page'];
        $data['pageSize'] = $requireData['pageSize'];
        // var_dump($data);
        $result = $this->footerServiceClient->getFooterCategory($data);
        if ($result['code'] != ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
        
    }
    /**
     * 添加底部导航
     * @return array
     */
    public function addFooterCategory()
    {
        $requireData = $this->request->all();
        if(!empty($requireData)){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'website_id' =>'required',
                    'name' =>'required',
                    'type' =>'required'
                ],
                [
                    'website_id.required' => '网站id不能为空',
                    'name.required' => '底部导航名称不能为空',
                    'type.required' => '底部导航类型不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data = $requireData;
        }else{
           $data = []; 
        }
        $result = $this->footerServiceClient->addFooterCategory($data);
        if ($result['code'] != ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
    /**
     * 修改底部导航
     * @return array
     */
    public function upFooterCategory()
    {
        $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);
        }
        if(isset($requireData['name'])){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'name' =>'required' 
                ],
                [
                    'name.required' => '底部导航名称不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['name'] = $requireData['name'];
        }
        if(isset($requireData['website_id'])){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'website_id' =>'required'
                ],
                [
                    'website_id.required' => '网站id不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
             $data['website_id'] = $requireData['website_id'];
        }
       
        $data['id'] = $requireData['id'];
        // var_dump($data);
        $result = $this->footerServiceClient->upFooterCategory($data);
        if ($result['code'] != ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }        
    }    
     /**
     * 删除底部导航
     * @return array
     */
    public function delFooterCategory()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'id' =>'required'
            ],
            [
                'id.required' => '底部导航id不能为空'
            ]
        );
        $data['id'] = $requireData['id'];
        if($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $result = $this->footerServiceClient->delFooterCategory($data);
        if ($result['code']!= ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
     /**
     * 添加底部导航(列表)内容
     * @return array
     */
    public function addFooterContent()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'type' =>'required',
                'fcat_id' =>'required',
                'con_title' =>'required',
                'content' =>'required'
            ],
            [
                'type.required' => '底部导航类型不能为空',
                'fcat_id.required' => '底部导航id不能为空',
                'con_title.required' => '内容标题不能为空',
                'content.required' => '内容不能为空'
            ]
        );
        
        if($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $data['type'] = $requireData['type'];
        $data['fcat_id'] = $requireData['fcat_id'];
        $data['con_title'] = $requireData['con_title'];
        $data['content'] = $requireData['content'];
        if($data['type'] == 1){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'list_title' =>'required'
                ],
                [
                    'list_title.required' => '列表标题不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['list_title'] = $requireData['list_title'];
        }
        // var_dump($data);
        $result = $this->footerServiceClient->addFooterContent($data);
        if ($result['code']!= ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
     /**
     * 获取并搜索底部导航(列表)内容
     * @return array
     */
    public function getFooterContent()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'fcat_id' =>'required',
                'page' =>'required',
                'pageSize' =>'required'
            ],
            [
                'fcat_id.required' => '底部导航类型不能为空',
                'page.required' => '第几页不能为空',
                'pageSize.required' => '每页显示数量不能为空'
            ]
        );
        if($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        if(isset($requireData['con_title'])){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'con_title' =>'required'
                ],
                [
                    'con_title.required' => '内容标题不能为空'
                ]
            );
            if($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['con_title'] = $requireData['con_title'];
        }
        
        $data['fcat_id'] = $requireData['fcat_id'];
        $data['page'] = $requireData['page'];
        $data['pageSize'] = $requireData['pageSize'];
        $result = $this->footerServiceClient->getFooterContent($data);
        if ($result['code']!= ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
     /**
     * 修改底部导航(列表)内容
     * @return array
     */
    public function upFooterContent()
    {
        $requireData = $this->request->all();
        $validator = $this->validationFactory->make(
            $requireData,
            [
                'id' =>'required',
                'type' =>'required',
                'con_title' =>'required',
                'content' =>'required'
            ],
            [
                'id.required' => '底部导航内容id不能为空',
                'type.required' => '底部导航类型不能为空',
                'con_title.required' => '内容标题不能为空',
                'content.required' => '内容不能为空'
            ]
        );
        if($validator->fails()){
            $errorMessage = $validator->errors()->first();
            return Result::error($errorMessage);
        }
        $data['id'] = $requireData['id'];
        $data['type'] = $requireData['type'];
        $data['con_title'] = $requireData['con_title'];
        $data['content'] = $requireData['content'];
        if($data['type'] == 1){
            $validator = $this->validationFactory->make(
                $requireData,
                [
                    'list_title' =>'required'
                ],
                [
                    'list_title.required' => '列表标题不能为空'
                ]
            );
            if ($validator->fails()){
                $errorMessage = $validator->errors()->first();
                return Result::error($errorMessage);
            }
            $data['list_title'] = $requireData['list_title'];
        }
        // var_dump($data);
        $result = $this->footerServiceClient->upFooterContent($data);
        if ($result['code']!= ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
     /**
     * 删除底部导航(列表)内容
     * @return array
     */
    public function delFooterContent()
    {
        $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);
        }
        $data['id'] = $requireData['id'];
        // var_dump($data);
        $result = $this->footerServiceClient->delFooterContent($data);
        if ($result['code']!= ErrorCode::SUCCESS) {
            return Result::error($result['message'],0,[]);
        }else{
            return Result::success($result['data']);
        }
    }
}