Application::listOfBooks()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 2
1
<?php
2
3
namespace Clearcode\EHLibrary;
4
5
use Clearcode\EHLibrary\Application\UseCase\AddBookToLibrary;
6
use Clearcode\EHLibrary\Application\UseCase\CreateReservation;
7
use Clearcode\EHLibrary\Application\UseCase\GiveAwayBookInReservation;
8
use Clearcode\EHLibrary\Application\UseCase\GiveBackBookFromReservation;
9
use Clearcode\EHLibrary\Infrastructure\Persistence\LocalBookRepository;
10
use Clearcode\EHLibrary\Infrastructure\Persistence\LocalReservationRepository;
11
use Clearcode\EHLibrary\Infrastructure\Projection\LocalListOfBooksProjection;
12
use Clearcode\EHLibrary\Infrastructure\Projection\LocalListReservationsForBookProjection;
13
use Ramsey\Uuid\UuidInterface;
14
15
final class Application implements Library
16
{
17
    /** {@inheritdoc} */
18
    public function addBook(UuidInterface $bookId, $title, $authors, $isbn)
19
    {
20
        (new AddBookToLibrary(new LocalBookRepository()))->add($bookId, $title, $authors, $isbn);
21
    }
22
23
    /** {@inheritdoc} */
24
    public function listOfBooks($page = 1, $booksPerPage = null)
25
    {
26
        return (new LocalListOfBooksProjection())->get($page, $booksPerPage);
27
    }
28
29
    /** {@inheritdoc} */
30
    public function createReservation(UuidInterface $reservationId, UuidInterface $bookId, $email)
31
    {
32
        (new CreateReservation(new LocalReservationRepository()))->create($reservationId, $bookId, $email);
33
    }
34
35
    /** {@inheritdoc} */
36
    public function giveAwayBookInReservation(UuidInterface $reservationId, \DateTime $givenAwayAt)
37
    {
38
        (new GiveAwayBookInReservation(new LocalReservationRepository()))->giveAway($reservationId, $givenAwayAt);
39
    }
40
41
    /** {@inheritdoc} */
42
    public function giveBackBookFromReservation(UuidInterface $reservationId)
43
    {
44
        (new GiveBackBookFromReservation(new LocalReservationRepository()))->giveBack($reservationId);
45
    }
46
47
    /** {@inheritdoc} */
48
    public function listReservationsForBook(UuidInterface $bookId)
49
    {
50
        return (new LocalListReservationsForBookProjection())->get($bookId);
51
    }
52
}
53