<?php

namespace App\Controller\admin\api;

use App\Controller\AbstractController;
use App\Model\AppWebsiteConfig;
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\RequestMapping;
use Psr\Http\Message\ResponseInterface;

#[Controller(prefix: 'admin/api/website')]
class WebsiteController extends AbstractController
{
    /**
     * @url /admin/api/website/config
     * @return ResponseInterface
     */
    #[RequestMapping(path: 'config', methods: 'get')]
    public function config(): ResponseInterface
    {
        $query = AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
        return $this->response->json([
            'code' => 0,
            'data' => $query
        ]);
    }

    /**
     * @url /admin/api/website/config/insert
     * @return ResponseInterface
     */
    #[RequestMapping(path: 'config/insert', methods: 'post')]
    public function configInsert(): ResponseInterface
    {
        $model = new AppWebsiteConfig();
        $model->app_company = $this->request->post('app_company');
        $model->app_description = $this->request->post('app_description');
        $model->app_name = $this->request->post('app_name');
        $model->app_domain = $this->request->post('app_domain');
        $model->save();

        return $this->response->json([]);
    }

    /**
     * @url /admin/api/website/config/delete
     * @return ResponseInterface
     */
    #[RequestMapping(path: 'config/delete', methods: 'post')]
    public function configDelete(): ResponseInterface
    {
        $id = $this->request->post('id');

        $query = AppWebsiteConfig::find($id);
        if (!$query) {
            return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
        }

        $query->is_delete = 1;
        $query->save();
        return $this->response->json([
            'code' => 0,
            'data' => $query
        ]);
    }

    /**
     * @url /admin/api/website/config/view
     * @return ResponseInterface
     */
    #[RequestMapping(path: 'config/view', methods: 'get')]
    public function configView(): ResponseInterface
    {
        $id = $this->request->input('id');

        $query = AppWebsiteConfig::query()->where(['id' => $id])->first()->toArray();
        if (!$query) {
            return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
        }

        return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
    }

    /**
     * @url /admin/api/website/config/save
     * @return ResponseInterface
     */
    #[RequestMapping(path: 'config/save', methods: 'post')]
    public function configSave(): ResponseInterface
    {
        $id = $this->request->post('id');

        $query = AppWebsiteConfig::find($id);
        if (!$query) {
            return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
        }

        $query->app_company = $this->request->post('app_company');
        $query->app_description = $this->request->post('app_description');
        $query->app_name = $this->request->post('app_name');
        $query->app_domain = $this->request->post('app_domain');
        $query->app_keywords = $this->request->post('app_keywords');

        $query->save();

        return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
    }
}