Completed
Push — master ( df80f0...840f28 )
by Rafal
11s
created

UserScoreProvider::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace App\GameRating\Business\UserPoint;
5
6
use App\GameBetting\Business\Games\UserPastGamesInterface;
7
use App\GameRating\Business\UserPoint\Info\UserScore;
8
use App\User\Persistence\Entity\User;
9
use Doctrine\ORM\EntityManagerInterface;
10
11
class UserScoreProvider implements UserScoreProviderInterface
12
{
13
    /**
14
     * @var UserPastGamesInterface
15
     */
16
    private $userPastGamesInterface;
17
18
    /**
19
     * @var EntityManagerInterface
20
     */
21
    private $entityManager;
22
23
    /**
24
     * @param EntityManagerInterface $entityManager
25
     * @param UserPastGamesInterface $userPastGamesInterface
26
     */
27
    public function __construct(EntityManagerInterface $entityManager, UserPastGamesInterface $userPastGamesInterface)
28
    {
29
        $this->entityManager = $entityManager;
30
        $this->userPastGamesInterface = $userPastGamesInterface;
31
    }
32
33
    /**
34
     * @return UserScore[]
35
     */
36
    public function get() : array
37
    {
38
        $users = $this->entityManager->getRepository(User::class)->findAll();
39
        $usersScores = [];
40
        foreach ($users as $user) {
41
            $userScore = new UserScore($user);
42
            $userPastGames = $this->userPastGamesInterface->get($user);
43
            foreach ($userPastGames as $userPastGame) {
44
                $userScore->addScore($userPastGame->getScore());
45
            }
46
            $usersScores[] = $userScore;
47
        }
48
49
        return $usersScores;
50
    }
51
52
53
}