Completed
Pull Request — master (#5)
by Benjamin
04:57
created

TeamExtension::calculateArea()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Obblm\Core\Twig;
4
5
use Obblm\Core\Entity\Player;
6
use Obblm\Core\Entity\Team;
7
use Obblm\Core\Helper\CoreTranslation;
8
use Obblm\Core\Helper\PlayerHelper;
9
use Obblm\Core\Helper\RuleHelper;
10
use Obblm\Core\Helper\TeamHelper;
11
use Obblm\Core\Service\ObblmPackage;
12
use Symfony\Component\Routing\Exception\InvalidParameterException;
13
use Twig\Extension\AbstractExtension;
14
use Twig\TwigFilter;
15
use Twig\TwigFunction;
16
17
class TeamExtension extends AbstractExtension
18
{
19
    protected $ruleHelper;
20
    protected $teamHelper;
21
    protected $package;
22
23
    public function __construct(RuleHelper $ruleHelper, TeamHelper $teamHelper, ObblmPackage $package)
24
    {
25
        $this->ruleHelper = $ruleHelper;
26
        $this->teamHelper = $teamHelper;
27
        $this->package = $package;
28
    }
29
30
    public function getFilters()
31
    {
32
        return [
33
            // Team filters
34
            new TwigFilter('rule_key', [$this, 'getRuleKey']),
35
            new TwigFilter('roster_name', [$this, 'getRosterName']),
36
            new TwigFilter('tr', [$this, 'getTeamRate']),
37
            new TwigFilter('calculate_value', [$this, 'getTeamValue']),
38
            new TwigFilter('reroll_cost', [$this, 'getRerollCost']),
39
            new TwigFilter('injury_effects', [$this, 'getInjuryEffects']),
40
            // Players filters
41
            new TwigFilter('type', [$this, 'getType']),
42
            new TwigFilter('characteristics', [$this, 'getCharacteristics']),
43
            new TwigFilter('skills', [$this, 'getSkills']),
44
            new TwigFilter('spp', [$this, 'getSpp']),
45
            new TwigFilter('value', [$this, 'getPlayerValue']),
46
        ];
47
    }
48
49
    public function getFunctions()
50
    {
51
        return [
52
            new TwigFunction('get_team_logo', [$this, 'getLogo']),
53
            new TwigFunction('get_team_cover', [$this, 'getCover']),
54
        ];
55
    }
56
57
    public function getLogo(Team $team):string
58
    {
59
        if ($team->getLogoFilename()) {
60
            return $this->package->getUrl($team->getId() . '/' . $team->getLogoFilename());
61
        }
62
        return "https://placekitten.com/800/800";
63
        //return "@ObblmCore/Resources/public/images/default.png";
64
    }
65
66
    public function getCover(Team $team)
67
    {
68
        if ($team->getCoverFilename()) {
69
            return $this->package->getUrl($team->getId() . '/' . $team->getCoverFilename());
70
        }
71
        return "";
72
    }
73
74
    public function getTeamRate(Team $team)
75
    {
76
        return $this->teamHelper->calculateTeamRate(TeamHelper::getLastVersion($team));
77
    }
78
79
    public function getRuleKey(Team $team)
80
    {
81
        return $team->getRule()->getRuleKey();
82
    }
83
84
    public function getRosterName(Team $team)
85
    {
86
        return CoreTranslation::getRosterNameFor($team);
87
    }
88
89
    public function getRerollCost(Team $team)
90
    {
91
        return $this->teamHelper->getRerollCost($team);
92
    }
93
94
    public function getTeamValue(Team $team)
95
    {
96
        return $this->teamHelper->calculateTeamValue(TeamHelper::getLastVersion($team), true);
97
    }
98
99
    public function getCharacteristics(Player $player, $characteristic)
100
    {
101
        if (!$player->getType()) {
102
            return '';
103
        }
104
        $characteristics = PlayerHelper::getPlayerCharacteristics($player);
105
        if (!isset($characteristics[$characteristic])) {
106
            throw new InvalidParameterException("The characteristic " . $characteristic . " does not exists");
107
        }
108
109
        return $characteristics[$characteristic];
110
    }
111
112
    public function getSkills(Player $player)
113
    {
114
        if (!$player->getType()) {
115
            return null;
116
        }
117
        return PlayerHelper::getPlayerSkills($player);
118
    }
119
120
    public function getType(Player $player)
121
    {
122
        if (!$player->getType()) {
123
            return '';
124
        }
125
        return CoreTranslation::getPlayerTranslationKey($player);
126
    }
127
128
    public function getSpp(Player $player)
129
    {
130
        if (!$player->getType()) {
131
            return '';
132
        }
133
        return PlayerHelper::getPlayerSpp($player);
134
    }
135
136
    public function getPlayerValue(Player $player)
137
    {
138
        if (!$player->getType()) {
139
            return '';
140
        }
141
        return PlayerHelper::getPlayerValue($player);
142
    }
143
144
    public function getInjuryEffects(Team $team, $injuries)
145
    {
146
        $helper = $this->ruleHelper->getHelper($team->getRule());
147
        $arr = [
148
            'dictionary' => $helper->getAttachedRule()->getRuleKey(),
149
            'injuries' => []
150
        ];
151
        foreach ($injuries as $injury) {
152
            $ruleInjury = $helper->getInjury($injury);
153
            $arr['injuries'][] = [
154
                'value' => $ruleInjury->value,
155
                'label' => $ruleInjury->label,
156
                'effect' => $ruleInjury->effectLabel
157
            ];
158
        }
159
        return $arr;
160
    }
161
}
162