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

PlayerHelper   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 8%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 13
eloc 18
c 2
b 0
f 0
dl 0
loc 51
ccs 2
cts 25
cp 0.08
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A getPlayerCharacteristics() 0 3 2
A getPlayerValue() 0 3 2
A getLastVersion() 0 9 2
A __construct() 0 3 1
A getPlayerSkills() 0 3 2
A getBasePlayerVersion() 0 7 1
A getPlayerSpp() 0 3 2
A composePlayerKey() 0 3 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