Completed
Push — master ( 2f35f3...5b14ac )
by Rafal
10:52 queued 06:57
created

PointsProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 18 3
A __construct() 0 4 1
1
<?php
2
3
4
namespace App\GameBetting\Business\GameExtraPoints;
5
6
7
use App\GameBetting\Persistence\DataProvider\ExtraResult;
8
use App\GameExtraBetting\Persistence\Entity\UserExtraBetting;
9
use Doctrine\ORM\EntityManagerInterface;
10
use Symfony\Component\Security\Core\User\UserInterface;
11
12
class PointsProvider implements PointsProviderInterface
13
{
14
    /**
15
     * @var EntityManagerInterface
16
     */
17
    private $entityManager;
18
19
    /**
20
     * @var PointsInterface
21
     */
22
    private $points;
23
24
    /**
25
     * @param EntityManagerInterface $entityManager
26
     * @param PointsInterface $points
27
     */
28
    public function __construct(EntityManagerInterface $entityManager, PointsInterface $points)
29
    {
30
        $this->entityManager = $entityManager;
31
        $this->points = $points;
32
    }
33
34
35
    /**
36
     * @param UserInterface $user
37
     * @return int
38
     */
39
    public function get(UserInterface $user) : int
40
    {
41
        $extraScore = 0;
42
        /** @var UserExtraBetting[] $userExterBettings */
43
        $userExterBettings = $this->entityManager->getRepository(UserExtraBetting::class)->getByUser($user);
44
        foreach ($userExterBettings as $userExterBetting) {
45
            $extraResult = new ExtraResult(
46
                (int)$userExterBetting->getType(),
47
                (int)$userExterBetting->getText()
48
            );
49
50
            $extraScore = $this->points->get($extraResult);
51
            if($extraScore > 0 ) {
52
                break;
53
            }
54
        }
55
56
        return $extraScore;
57
    }
58
59
60
}