Test Setup Failed
Push — develop ( 04b246...d52f7e )
by Nikita
10:40
created

MarketplaceModulesRepository::find()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 4
c 1
b 0
f 1
dl 0
loc 9
rs 10
cc 2
nc 2
nop 1
1
<?php
2
3
namespace Gameap\Repositories\Modules;
4
5
use Gameap\Models\Modules\MarketplaceModule;
6
use Gameap\Services\Modules\MarketplaceService;
7
use Illuminate\Support\Facades\Config;
8
9
class MarketplaceModulesRepository
10
{
11
    /** @var MarketplaceService */
12
    private $marketplaceService;
13
14
    public function __construct(MarketplaceService $marketplaceService)
15
    {
16
        $this->marketplaceService = $marketplaceService;
17
    }
18
19
    /** @return []Module */
0 ignored issues
show
Documentation Bug introduced by
The doc comment []Module at position 0 could not be parsed: Unknown type name '[' at position 0 in []Module.
Loading history...
20
    public function getAll(): iterable
21
    {
22
        $modules = [];
23
        foreach ($this->marketplaceService->getList() as $id => $module) {
24
            $modules[] = $this->denormalizeModule($id, $module);
25
        }
26
27
        return $modules;
28
    }
29
30
    public function find(string $moduleID): ?MarketplaceModule
31
    {
32
        $module = $this->marketplaceService->findModule($moduleID);
33
34
        if ($module === null) {
35
            return null;
36
        }
37
38
        return $this->denormalizeModule($moduleID, $module);
39
    }
40
41
    private function denormalizeModule(string $id, array $array): MarketplaceModule
42
    {
43
        $module = new MarketplaceModule();
44
45
        $locale         = Config::get('app.locale');
46
        $fallbackLocale = Config::get('app.fallback_locale');
47
48
        $module->id             = $id;
49
        $module->name           = $array['name'] ?? '';
50
        $module->summary        = $array['summary'][$locale]
51
            ?? $array['summary'][$fallbackLocale]
52
            ?? '';
53
        $module->description    = $array['description'][$locale]
54
            ?? $array['description'][$fallbackLocale]
55
            ?? '';
56
        $module->tags           = $array['tags'] ?? [];
57
        $module->latestVersion  = $array['latest_version'] ?? '';
58
59
        return $module;
60
    }
61
}
62