Passed
Pull Request — main (#34)
by Tan
02:54
created

MetaBoxService::getSEOMetaBoxByModel()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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