LocalListOfBooksProjection::get()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
rs 9.4286
cc 3
eloc 7
nc 4
nop 2
1
<?php
2
3
namespace Clearcode\EHLibrary\Infrastructure\Projection;
4
5
use Clearcode\EHLibrary\Application\Projection\BookView;
6
use Clearcode\EHLibrary\Application\Projection\ListOfBooksProjection;
7
use Clearcode\EHLibrary\Infrastructure\Persistence\LocalBookRepository;
8
use Clearcode\EHLibrary\Model\Book;
9
use Clearcode\EHLibrary\Model\BookRepository;
10
11
class LocalListOfBooksProjection implements ListOfBooksProjection
12
{
13
    /** @var BookRepository */
14
    private $repository;
15
16
    public function __construct()
17
    {
18
        $this->repository = new LocalBookRepository();
19
    }
20
21
    /** {@inheritdoc} */
22
    public function get($page = 1, $booksPerPage = null)
23
    {
24
        $views = [];
25
26
        /** @var Book $book */
27
        foreach ($this->repository->getAll() as $book) {
28
            $views[] = new BookView((string) $book->id(), $book->title(), $book->authors(), $book->isbn());
29
        }
30
31
        if (null !== $booksPerPage) {
32
            return array_slice($views, $page * $booksPerPage - $booksPerPage, $booksPerPage);
33
        }
34
35
        return $views;
36
    }
37
}
38