Completed
Branch v1.x-dev (5c2708)
by Benjamin
04:14
created

PlayerHelper::composePlayerKey()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 3
crap 1
1
<?php
2
3
namespace Obblm\Core\Helper;
4
5
use Obblm\Core\Entity\Player;
6
use Obblm\Core\Entity\PlayerVersion;
7
use Obblm\Core\Exception\NoVersionException;
8
9
class PlayerHelper
10
{
11
    private $teamHelper;
12
13
    public function __construct(TeamHelper $teamHelper)
14
    {
15
        $this->teamHelper = $teamHelper;
16
    }
17
18
    public static function getLastVersion(Player $player):PlayerVersion
19
    {
20
        $versions = $player->getVersions();
21
        /** @var PlayerVersion $last */
22
        $last = $versions->first();
23
        if (!$last) {
0 ignored issues
show
introduced by
$last is of type Obblm\Core\Entity\PlayerVersion, thus it always evaluated to true.
Loading history...
24
            throw new NoVersionException($player);
25
        }
26
        return $last;
27
    }
28
    public function getBasePlayerVersion(Player $player):array
29
    {
30
        list($ruleKey, $roster, $type) = explode(CoreTranslation::TRANSLATION_GLUE, $player->getPosition());
31
        $helper = $this->teamHelper->getRuleHelper($player->getTeam());
0 ignored issues
show
Bug introduced by
It seems like $player->getTeam() can also be of type null; however, parameter $team of Obblm\Core\Helper\TeamHelper::getRuleHelper() does only seem to accept Obblm\Core\Entity\Team, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

31
        $helper = $this->teamHelper->getRuleHelper(/** @scrutinizer ignore-type */ $player->getTeam());
Loading history...
32
        $base = $helper->getAttachedRule()->getRule()['rosters'][$roster]['players'][$type];
33
        $base['injuries'] = [];
34
        return $base;
35
    }
36
37 1
    public static function composePlayerKey($ruleKey, $roster, $type):string
38
    {
39 1
        return join(CoreTranslation::TRANSLATION_GLUE, [$ruleKey, $roster, $type]);
40
    }
41
42
    public static function getPlayerSkills(Player $player):array
43
    {
44
        return self::getLastVersion($player)->getSkills() ?: [];
45
    }
46
47
    public static function getPlayerCharacteristics(Player $player):array
48
    {
49
        return self::getLastVersion($player)->getCharacteristics() ?: [];
50
    }
51
52
    public static function getPlayerSpp(Player $player):string
53
    {
54
        return self::getLastVersion($player)->getSpp() ?: 0;
55
    }
56
57
    public static function getPlayerValue(Player $player):string
58
    {
59
        return self::getLastVersion($player)->getValue() ?: 0;
60
    }
61
}
62