Completed
Pull Request — master (#145)
by Adrien
02:57
created

BadgeUnlocker::unlockBadgeFromClaim()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
namespace Badger\Bundle\GameBundle\Unlocker;
4
5
use Badger\Component\Game\Model\BadgeInterface;
6
use Badger\Component\Game\Repository\BadgeCompletionRepositoryInterface;
7
use Badger\Component\Game\Unlocker\BadgeUnlockerInterface;
8
use Badger\Component\StorageUtils\Saver\SaverInterface;
9
use Badger\Component\User\Model\UserInterface;
10
use Badger\Bundle\GameBundle\Factory\BadgeCompletionFactory;
11
12
/**
13
 * @author  Adrien Pétremann <[email protected]>
14
 * @license http://opensource.org/licenses/MIT The MIT License (MIT)
15
 */
16
class BadgeUnlocker implements BadgeUnlockerInterface
17
{
18
    /** @var BadgeCompletionFactory */
19
    private $badgeCompletionFactory;
20
21
    /** @var BadgeCompletionRepositoryInterface */
22
    private $badgeCompletionRepository;
23
24
    /** @var SaverInterface */
25
    private $badgeCompletionSaver;
26
27
    /**
28
     * @param BadgeCompletionFactory             $badgeCompletionFactory
29
     * @param BadgeCompletionRepositoryInterface $badgeCompletionRepository
30
     * @param SaverInterface                     $badgeCompletionSaver
31
     */
32
    public function __construct(
33
        BadgeCompletionFactory $badgeCompletionFactory,
34
        BadgeCompletionRepositoryInterface $badgeCompletionRepository,
35
        SaverInterface $badgeCompletionSaver
36
    ) {
37
        $this->badgeCompletionFactory    = $badgeCompletionFactory;
38
        $this->badgeCompletionRepository = $badgeCompletionRepository;
39
        $this->badgeCompletionSaver      = $badgeCompletionSaver;
40
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45
    public function unlockBadge(UserInterface $user, BadgeInterface $badge)
46
    {
47
        if (!$this->badgeCompletionRepository->userHasBadge($user, $badge)) {
48
            $unlockedBadge = $this->badgeCompletionFactory->create($user, $badge);
49
            $this->badgeCompletionSaver->save($unlockedBadge);
50
        }
51
    }
52
}
53