Completed
Push — master ( c1ba47...3b776f )
by Benjamin
10:05 queued 04:46
created

PlayerTeamCollectionTransformer   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 44
rs 10
wmc 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A reverseTransform() 0 12 5
A transform() 0 19 5
1
<?php
2
3
namespace Obblm\Core\DataTransformer;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use Doctrine\Common\Collections\Criteria;
7
use Obblm\Core\Entity\Player;
8
use Obblm\Core\Entity\Team;
9
use Symfony\Component\Form\DataTransformerInterface;
10
11
class PlayerTeamCollectionTransformer implements DataTransformerInterface
12
{
13
14
    /**
15
     * @param Team $value
16
     * @return Team|null
17
     */
18
    public function transform($value)
19
    {
20
        if ($value === null) {
21
            return;
22
        }
23
24
        // In want to have 16 players in the list, no less, no more
25
26
        $usedNumbers = [];
27
28
        foreach ($value->getPlayers() as $player) {
29
            $usedNumbers[$player->getNumber()] = $player;
30
        }
31
        for ($i=1; $i<=16; $i++) {
32
            if (!isset($usedNumbers[$i])) {
33
                $value->addPlayer((new Player())->setNumber($i));
34
            }
35
        }
36
        return $value;
37
    }
38
39
    /**
40
     * @param Team $value
41
     * @return Team
42
     */
43
    public function reverseTransform($value)
44
    {
45
        if ($value === null) {
46
            return;
47
        }
48
49
        foreach ($value->getPlayers() as $player) {
50
            if (!$player->getName() && !$player->getType()) {
51
                $value->removePlayer($player);
52
            }
53
        }
54
        return $value;
55
    }
56
}
57