Passed
Pull Request — master (#26)
by Paweł
03:40
created

UserManager::addCourseByTitle()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 2
nc 2
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Manager;
6
7
use App\Factory\UserFactoryInterface;
8
use App\Model\UserInterface;
9
use App\Repository\CourseRepositoryInterface;
10
use App\Repository\UserRepositoryInterface;
11
12
final class UserManager implements UserManagerInterface
13
{
14
    private $courseRepository;
15
16
    private $userRepository;
17
18
    private $userFactory;
19
20
    public function __construct(CourseRepositoryInterface $courseRepository, UserRepositoryInterface $userRepository, UserFactoryInterface $userFactory)
21
    {
22
        $this->courseRepository = $courseRepository;
23
        $this->userRepository = $userRepository;
24
        $this->userFactory = $userFactory;
25
    }
26
27
    public function addCourseByTitle(UserInterface $user, string $courseTitle): void
28
    {
29
        $course = $this->courseRepository->getOneByTitle($courseTitle);
30
        if (null !== $course) {
31
            $user->addCourse($course);
32
        }
33
    }
34
35
    public function getOrCreateUser(string $email): UserInterface
36
    {
37
        $user = $this->userRepository->getOneByEmail($email);
38
        if (null === $user) {
39
            $user = $this->userFactory->create();
40
        }
41
42
        return $user;
43
    }
44
}
45