<?php

namespace App\Models;

use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * b端控制, c端显示的导航
 * @author:dc
 * @time 2023/5/8 16:14
 * Class BNav
 * @package App\Models
 */
class BNav extends Base
{

    protected $table = 'gl_web_nav';

    use SoftDeletes;

    public $hidden = ['deleted_at','project_id'];


    /**
     * 显示
     */
    const STATUS_ACTIVE = 1;

    /**
     * 隐藏
     */
    const STATUS_DISABLED = 0;


    /**
     * 创建或者新增导航栏
     * @param int $project_id
     * @param array $data
     * @param int $id
     * @return int
     * @author:dc
     * @time 2023/5/8 16:24
     */
    public static function _save(int $project_id, array $data, int $id = 0):int {
        if($id){
            $model = static::where('id',$id)->where('project_id', $project_id)->first();
            if(!$model){
                return -1;
            }
        }else{
            $model = new static();
            $model->project_id = $project_id;

        }

        $model->pid = $data['pid'];
        $model->name = $data['name'];
        $model->location = $data['location'];
        $model->url = $data['url'];
        $model->status = $data['status'];
        $model->target = $data['target'];
        $model->sort = $data['sort'];
        $model->save();

        return $model->id;
    }


    /**
     * 删除
     * @param int $project_id
     * @param int $id
     * @return mixed
     * @author:dc
     * @time 2023/5/8 16:27
     */
    public static function _del(int $project_id, int $id){
        return static::where(['project_id'=>$project_id,'id'=>$id])->delete();
    }


    /**
     * 查询当前项目下的所有栏目信息
     * @param int $project_id
     * @return mixed
     * @author:dc
     * @time 2023/5/8 16:29
     */
    public static function _all(int $project_id, string $location = null)
    {
        return static::where(function ($query) use ($project_id,$location){
            // 那个公司
            $query->where('project_id',$project_id);
            // 显示位置
            $location && $query->where('location',$location);
        })
            ->orderBy('sort')
            ->get();
    }

    /**
     * 查询一条数据
     * @param int $project_id
     * @param int $id
     * @return mixed
     * @author:dc
     * @time 2023/5/8 17:04
     */
    public static function _find(int $project_id, int $id, $array = false)
    {
        $data =  static::where(['id'=>$id,'project_id'=>$project_id])->first();
        if($data){
            return $array ? $data->toArray() : $data;
        }
        return [];
    }


    /**
     * 是否存在
     * @param int $project_id
     * @param int $id
     * @return mixed
     * @author:dc
     * @time 2023/5/8 17:24
     */
    public static function _check(int $project_id, int $id)
    {
        return static::where(['id'=>$id,'project_id'=>$project_id])->count();
    }

    /**
     * 是否有下级
     * @param int $id
     * @param int $project_id
     * @return mixed
     * @author:dc
     * @time 2023/5/9 9:23
     */
    public static function isChild(int $id,int $project_id=0)
    {
        return static::where(['pid'=>$id,'project_id'=>$project_id])->limit(1)->count();
    }
}