Completed
Push — master ( 321b0a...c0c467 )
by Valentyn
22:27
created

UserRecommendationTransformer   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 0
dl 0
loc 55
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A list() 0 20 2
B process() 0 24 7
1
<?php
2
3
namespace App\Movies\Transformer;
4
5
use App\Transformer\Transformer;
6
7
class UserRecommendationTransformer implements Transformer
8
{
9
    private $hiddenFields = [];
10
    /**
11
     * [int movie id => int how many times this movie were recommended]
12
     * @var array
13
     */
14
    private $idToTimesRecommendedMap = [];
15
16 2
    public static function list(array $ids): self
17
    {
18 2
        $transformer = new self();
19 2
        $transformer->hiddenFields = [
20
            'budget',
21
            'genres',
22
            'imdbId',
23
            'overview',
24
            'runtime',
25
            'tmdb.id',
26
            'tmdb.voteAverage',
27
            'tmdb.voteCount',
28
        ];
29
30 2
        foreach ($ids as $data) {
31 2
            $transformer->idToTimesRecommendedMap[reset($data)] = $data['rate'];
32
        }
33
34 2
        return $transformer;
35
    }
36
37 2
    public function process(array $data): array
38
    {
39 2
        if (!isset($data['id'])) {
40 2
            return $data;
41
        }
42
43 2
        $data['isWatched'] = isset($data['userWatchedMovie']) && $data['userWatchedMovie'] ? true : false;
44
45 2
        if (isset($data['tmdb.id'])) {
46 2
            $data['tmdb']['id'] = $data['tmdb.id'];
47 2
            $data['tmdb']['voteAverage'] = $data['tmdb.voteAverage'];
48 2
            $data['tmdb']['voteCount'] = $data['tmdb.voteCount'];
49
50 2
            $data['rate'] = $this->idToTimesRecommendedMap[$data['id']] ?? 0;
51
        }
52
53 2
        foreach ($this->hiddenFields as $hiddenField) {
54 2
            if (isset($data[$hiddenField])) {
55 2
                unset($data[$hiddenField]);
56
            }
57
        }
58
59 2
        return $data;
60
    }
61
}