Passed
Push — main ( 201fc1...a23d63 )
by Tan
03:39
created

MetaBoxService::getTagMetaBox()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
eloc 1
c 2
b 1
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
namespace CSlant\Blog\Api\Services;
4
5
use CSlant\Blog\Core\Constants\AppConstant;
6
use CSlant\Blog\Core\Facades\Base\MetaBox;
7
use CSlant\Blog\Core\Models\Category;
8
use CSlant\Blog\Core\Models\Page;
9
use CSlant\Blog\Core\Models\Post;
10
use CSlant\Blog\Core\Models\Tag;
11
use Illuminate\Database\Eloquent\Model;
12
13
class MetaBoxService
14
{
15
    protected function getSEOMetaBoxByModel(Model $model, string $lang = AppConstant::DEFAULT_LOCALE): ?Model
16
    {
17
        $metaKey = $lang === 'vi' ? 'seo_meta_vi' : 'seo_meta';
18
19
        return MetaBox::getMeta($model, $metaKey);
20
    }
21
22
    protected function getModelMetaBox(
23
        string $modelClass,
24
        int $modelId,
25
        string $lang = AppConstant::DEFAULT_LOCALE
26
    ): ?Model {
27
        /** @var class-string<Model> $modelClass */
28
        $model = $modelClass::query()->find($modelId);
29
30
        return $model ? $this->getSEOMetaBoxByModel($model, $lang) : null;
31
    }
32
33
    public function getMetaBoxByModel(string $model, int $modelId, string $lang = AppConstant::DEFAULT_LOCALE): ?Model
34
    {
35
        $modelMap = [
36
            'post' => Post::class,
37
            'page' => Page::class,
38
            'category' => Category::class,
39
            'tag' => Tag::class,
40
        ];
41
42
        $modelClass = $modelMap[$model] ?? null;
43
44
        return $modelClass ? $this->getModelMetaBox($modelClass, $modelId, $lang) : null;
45
    }
46
}
47