Completed
Push — master ( fca143...3e3269 )
by Valentyn
15:27
created

TmdbSyncService   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 92.86%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 1
dl 0
loc 33
ccs 13
cts 14
cp 0.9286
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A syncMovies() 0 8 2
A addMovies() 0 4 1
A isSupport() 0 4 1
1
<?php
2
declare(strict_types=1);
3
4
namespace App\Movies\Service;
5
6
use App\Movies\Entity\Movie;
7
use App\Movies\EventListener\MovieSyncProcessor;
8
use App\Movies\Repository\MovieRepository;
9
use Enqueue\Client\ProducerInterface;
10
11
class TmdbSyncService
12
{
13
    private $repository;
14
    private $producer;
15
16 7
    public function __construct(MovieRepository $repository, ProducerInterface $producer)
17
    {
18 7
        $this->repository = $repository;
19 7
        $this->producer = $producer;
20 7
    }
21
22
    /**
23
     * @param array|Movie[] $movies
24
     */
25 1
    public function syncMovies(array $movies): void
26
    {
27 1
        if (false === $this->isSupport(reset($movies))) {
28
            throw new \InvalidArgumentException('Unsupported array of movies provided');
29
        }
30
31 1
        $this->addMovies($movies);
32 1
    }
33
34 1
    private function addMovies(array $movies): void
35
    {
36 1
        $this->producer->sendEvent(MovieSyncProcessor::ADD_MOVIES_TMDB, serialize($movies));
37 1
    }
38
39 1
    private function isSupport($movie)
40
    {
41 1
        return $movie instanceof Movie;
42
    }
43
}