Passed
Pull Request — develop (#97)
by BENARD
12:42
created

PlayerBadgeHandler::process()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 22
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace VideoGamesRecords\CoreBundle\Handler\Badge;
6
7
use Doctrine\DBAL\Exception;
8
use Doctrine\ORM\EntityManagerInterface;
9
10
class PlayerBadgeHandler
11
{
12
    private EntityManagerInterface $em;
13
14
    public function __construct(EntityManagerInterface $em)
15
    {
16
        $this->em = $em;
17
    }
18
19
    /**
20
     * @throws Exception
21
     */
22
    public function handle(): void
23
    {
24
        $sql = "INSERT INTO vgr_player_badge (idPlayer, idBadge, created_at, updated_at)
25
        SELECT vgr_player.id,vgr_badge.id, NOW(), NOW()
26
        FROM vgr_player,user,vgr_badge
27
        WHERE type = '%s'
28
        AND value <= user.%s
29
        AND vgr_player.user_id = user.id
30
        AND vgr_badge.id NOT IN (SELECT idBadge FROM vgr_player_badge WHERE idPlayer = vgr_player.id)";
31
32
        $this->em->getConnection()->executeQuery(sprintf($sql, 'Forum', 'nbForumMessage'));
33
34
        $sql = " INSERT INTO vgr_player_badge (idPlayer, idBadge, created_at, updated_at)
35
        SELECT vgr_player.id,vgr_badge.id, NOW(), NOW()
36
        FROM vgr_player,vgr_badge
37
        WHERE type = '%s'
38
        AND value <= vgr_player.%s
39
        AND vgr_badge.id NOT IN (SELECT idBadge FROM vgr_player_badge WHERE idPlayer = vgr_player.id)";
40
41
        $this->em->getConnection()->executeQuery(sprintf($sql, 'Connexion', 'nbConnexion'));
42
        $this->em->getConnection()->executeQuery(sprintf($sql, 'VgrChart', 'nbChart'));
43
        $this->em->getConnection()->executeQuery(sprintf($sql, 'VgrProof', 'nbChartProven'));
44
    }
45
}
46