Test Failed
Pull Request — master (#1983)
by Janko
18:37 queued 09:37
created

ModuleScreenTab::getCssClass()   B

Complexity

Conditions 7
Paths 13

Size

Total Lines 32
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 7

Importance

Changes 0
Metric Value
cc 7
eloc 18
nc 13
nop 0
dl 0
loc 32
ccs 11
cts 11
cp 1
crap 7
rs 8.8333
c 0
b 0
f 0
1
<?php
2
3
namespace Stu\Lib\ModuleScreen;
4
5
use Stu\Orm\Entity\ModuleInterface;
6
7
class ModuleScreenTab
8
{
9 3
    public function __construct(private ModuleSelectorInterface $moduleSelector) {}
10
11 3
    public function getTabTitle(): string
12
    {
13 3
        return $this->moduleSelector->getModuleDescription();
14
    }
15
16 3
    public function getCssClass(): string
17
    {
18 3
        $class = 'module_selector';
19 3
20 3
        if ($this->moduleSelector->getAvailableModules() === []) {
21 1
            return $class;
22
        }
23
24 2
        if ($this->moduleSelector->allowEmptySlot()) {
25 2
26
            if ($this->moduleSelector->isEmptySlot()) {
27 2
                $class .= ' module_selector_skipped';
28 2
            } else {
29 2
                $class .= ' module_selector_unselected';
30
            }
31
        }
32
33 3
        if ($this->moduleSelector->isMandatory()) {
34
            if (!$this->moduleSelector->hasSelectedModule()) {
35
                $class .= ' module_selector_unselected';
36
            } else {
37
                /** @var ModuleInterface $mod */
38
                $mod = $this->moduleSelector->getBuildplan()->getModulesByType($this->moduleSelector->getModuleType())->first();
39
                $commodityId = $mod->getCommodityId();
40
41
                $stor = $this->moduleSelector->getHost()->getStorage()[$commodityId] ?? null;
42
                if ($stor === null) {
43
                    $class .= ' module_selector_unselected';
44
                }
45
            }
46
        }
47
        return $class;
48
    }
49
}
50