Passed
Pull Request — develop (#95)
by BENARD
13:04 queued 39s
created

PlayerFixtures   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 26
c 1
b 0
f 0
dl 0
loc 64
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A loadPlayers() 0 13 2
A updateGeneratorType() 0 5 2
A load() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace VideoGamesRecords\CoreBundle\DataFixtures;
6
7
use Doctrine\Bundle\FixturesBundle\Fixture;
8
use Doctrine\ORM\Mapping\ClassMetadataInfo;
9
use Doctrine\Persistence\ObjectManager;
10
use Exception;
11
use VideoGamesRecords\CoreBundle\Entity\Player;
12
13
class PlayerFixtures extends Fixture
14
{
15
    /**
16
     * @var array<string>
17
     */
18
    private array $entities = [
19
        'Player',
20
    ];
21
22
23
    /**
24
     * @var array<mixed>
25
     */
26
    private array $players = [
27
        [
28
            'id' => 11,
29
            'pseudo'   => 'magicbart',
30
        ],
31
        [
32
            'id' => 12,
33
            'pseudo'   => 'kloh',
34
        ],
35
        [
36
            'id' => 13,
37
            'pseudo'   => 'flatine',
38
        ],
39
    ];
40
41
42
    private function updateGeneratorType(ObjectManager $manager): void
43
    {
44
        foreach ($this->entities as $entity) {
45
            $metadata = $manager->getClassMetaData("VideoGamesRecords\\CoreBundle\\Entity\\" . $entity);
46
            $metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_NONE);
47
        }
48
    }
49
50
    /**
51
     * @throws Exception
52
     */
53
    public function load(ObjectManager $manager): void
54
    {
55
        $this->updateGeneratorType($manager);
56
        $this->loadPlayers($manager);
57
        $manager->flush();
58
    }
59
60
61
    /**
62
     * @param ObjectManager $manager
63
     */
64
    private function loadPlayers(ObjectManager $manager): void
65
    {
66
        foreach ($this->players as $row) {
67
            $player = new Player();
68
            $player->setId($row['id']);
69
            $player->setUserId($row['id']);
70
            $player->setPseudo($row['pseudo']);
71
            $player->setStatus($this->getReference('playerStatus1'));
72
            $player->setCreatedAt(new \Datetime());
73
            $player->setUpdatedAt(new \Datetime());
74
75
            $manager->persist($player);
76
            $this->addReference('player' . $player->getId(), $player);
77
        }
78
    }
79
}
80