<?php

use App\Models\Advert;
use App\Models\Category;
use App\Models\Article;

function getOneCategory($categoryId, $return = '')
{
    $category = Category::find($categoryId);
    if ($category) {
        if ($return) {
            return $category->{$return};
        }

        return $category;
    }

    return new Category;
}

/**
 * Notes: 获取文章分类详情
 *
 * @Author: 玄尘
 * @Date  : 2020/9/10 13:21
 * @param        $categoryId
 * @param  string  $result
 * @return \App\Models\Article
 */
function getOneArticleBYCate($categoryId, $result = '')
{
    $info = Article::where('status', 1)
        ->ByCategory($categoryId)
        ->latest('sort')
        ->latest()
        ->first();

    if ($info) {
        if ($result) {
            return $info->{$result};
        }

        return $info;
    } else {
        return '';
    }

    return new Article;
}

/**
 * Notes: 获取分类下的文章
 *
 * @Author: 玄尘
 * @Date  : 2020/9/10 10:05
 * @param $categoryId
 * @param $take
 * @return \App\Models\Article
 */
function getArticlesBYCate($categoryId, $take = 8, $mark = 'one')
{
    if ($mark == 'one') {
        $articles = Article::where('status', 1)
            ->ByCategory($categoryId)
            ->latest('sort')
            ->latest()
            ->take($take)
            ->get();
    } else {
        $cate = Category::find($categoryId);
        $ids  = $cate->getAllChildrenId();

        $articles = Article::where('status', 1)
            ->ByCategory($ids)
            ->latest('sort')
            ->latest()
            ->take($take)
            ->get();
    }

    return $articles;
}

/**
 * Notes: 获取带图片的文章
 *
 * @Author: 玄尘
 * @Date: 2022/3/4 16:52
 * @param $categoryId
 * @param $take
 * @return mixed
 */
function getArticlesAndCoverBYCate($categoryId, $take = 8)
{
    $cate = Category::find($categoryId);
    $ids  = $cate->getAllChildrenId();

    return Article::where('status', 1)
        ->ByCategory($ids)
        ->where(function ($query) {
            $query->whereNotNull('cover')->orWhere('cover', '<>', '');
        })
        ->latest('sort')
        ->latest()
        ->take($take)
        ->get();
}

//获取子分类
function getCateChild($categoryId)
{
    return Category::where('status', 1)
        ->where('parent_id', $categoryId)
        ->orderBy('order', 'asc')
        ->get();
}

//获取顶级分类
function getTopCate($categoryId)
{
    $parent = Category::find($categoryId);

    while ($parent->parent_id != 0) {
        $parent = $parent->parent;
    }

    return $parent;
}

//获取一个广告
function getOneAdvertByCate($categoryId, $result = '')
{
    $info = Advert::where('category_id', $categoryId)
        ->latest('sort')
        ->latest()
        ->first();
    if ($info) {
        if ($result) {
            return $info->{$result};
        }

        return $info;
    } else {
        return '';
    }

    return new Advert;
}

function getAdvertsByCate($categoryId, $take = 8)
{
    return Advert::where('category_id', $categoryId)
        ->latest('sort')
        ->latest()
        ->take($take)->get();
}

