<?php

namespace app\repository;

use app\traits\cms\ArticleTrait;
use app\traits\cms\MenuTrait;
use app\traits\CmsCategoryTrait;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\Model;
use app\service\Repository;

/**
 * CMS 基础功能仓储
 *
 * Class CmsRepository
 * @package app\repository
 * @method self getInstance(Model $model = null) static
 */
class CmsRepository extends Repository
{
    use CmsCategoryTrait;
    use MenuTrait;
    use ArticleTrait;

    /**
     * xmSelect下拉列表格式处理
     * 如 [['title' => 'aa', 'value' => 1, 'selected' => true, 'prefix' => '&nbsp;&nbsp;&nbsp;&nbsp;']]
     *
     * @param  array  $data  待处理的数据
     * @param  string  $symbol  分隔符号 默认 &nbsp;
     * @param  int  $repeatNum  重复次数 默认4
     * @return array
     */
    public function handleSelectedList(array $data, string $symbol = '&nbsp;', int $repeatNum = 4): array
    {
        $list = [];
        foreach ($data as $item) {
            $level    = $item['level'] ?? 0;
            $arr = $item;
            $arr['children'] = $arr['children'] ?? [];
            $arr['prefix'] = str_repeat($symbol, $level * $repeatNum);
            $list[] = $arr;
        }

        return $list;
    }
}