<?php

namespace Modules\Yinliu\Http\Controllers;

use Catch\Base\CatchController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Modules\Yinliu\Models\YinliuGzhConfigModel;

/**
 * 引流管理
 */
class YinliuManageController extends CatchController
{
    use ValidatesRequests;
    /**
     * 列表
     * @param Request $request
     */
    public function list(Request $request) {
        $gzhId = $request->input('gzh_id');
        $gzhIsEnabled = $request->input('gzh_is_enabled');

        $result = DB::table('yinliu_gzh_config as a')
            ->leftJoin('wechat_authorization_infos as b', 'a.gzh_id','=', 'b.id')
            ->when($gzhId, function ($query, $gzhId){
                return $query->where('a.gzh_id', $gzhId);
            })->when($gzhIsEnabled, function ($query, $gzhIsEnabled) {
                return $query->where('b.is_enabled', $gzhIsEnabled);
            })
            ->where([
                'a.uid' => $this->getLoginUserId(),
                'a.is_enabled' => 1,
            ])->select('a.*', 'b.nick_name as gzh_nick_name', 'b.is_enabled as gzh_is_enabled')
            ->orderBy('a.id','desc')
            ->paginate($request->input('limit', 20));
        foreach ($result as $item) {
            $item->focus_type_str = 1 == $item->focus_type ? '公众号引流' : '';
            $item->link_type_str = 1 == $item->link_type ? '关注链接' : '关注二维码';
        }

        return $result;
    }

    /**
     * 添加
     * @param Request $request
     */
    public function save(Request $request) {
        $this->validate($request, [
            'focus_type' => 'required|in:1',
            'gzh_id' => 'required',
            // 播放页弹窗设置:1-强制关注,2-引导关注,3-不关注
            'pop_type' => 'required|in:1,2,3',
            // pop_type == 2 时,弹窗设置:1-仅设置剧集弹窗,2-设置剧集及后每集弹窗
            'pop_type_sub' => 'required_if:pop_type,2|in:1,2',
            'link_type' => 'required|in:1,2',
            'link_url' => 'required',
        ]);

        $data = $request->only('focus_type', 'gzh_id', 'pop_type', 'link_type', 'link_url');
        if(2 != $data['pop_type']) {
            $data['pop_type_sub'] = 0;
        }

        $uid = $this->getLoginUserId();

        if($request->input('id')) {
            YinliuGzhConfigModel::where([
                'id' => $request->input('id'),
                'uid' => $uid
            ])->update($data);
        } else {
            $data['uid'] = $uid;
            YinliuGzhConfigModel::create($data);
        }

        return 'ok';
    }

    /**
     * 删除
     * @param Request $request
     */
    public function delete(Request $request) {
        $this->validate($request, [
            'id' => 'required'
        ]);

        YinliuGzhConfigModel::where([
            'id' => $request->input('id'),
            'uid' => $this->getLoginUserId()
        ])->update([
            'is_enabled' => 0
        ]);

        return 'ok';
    }
}