FMeatClient::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 10
cp 0
rs 9.9
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 6
1
<?php
2
3
namespace JPBernius\FMeat;
4
5
use JPBernius\FMeat\Configurations\Locations;
6
use JPBernius\FMeat\Entities\Week;
7
use JPBernius\FMeat\Services\CachedNetworkService;
8
use JPBernius\FMeat\Services\NetworkService;
9
use JPBernius\FMeat\Utilities\YearWeekUtil;
10
use DI\ContainerBuilder;
11
12
/**
13
 * Class FMeatClient
14
 * @package JPBernius\FMeat
15
 */
16
class FMeatClient
17
{
18
    /** @var NetworkService */
19
    private $networkService;
20
21
    /** @var YearWeekUtil */
22
    private $yearWeekUtil;
23
24
    /**
25
     * FMeatClient constructor.
26
     * @param bool $useCaching
27
     * @throws \DI\DependencyException
28
     * @throws \DI\NotFoundException
29
     */
30
    public function __construct(bool $useCaching = false)
31
    {
32
        $container = ContainerBuilder::buildDevContainer();
33
        $this->yearWeekUtil = $container->get(YearWeekUtil::class);
34
35
        if ($useCaching) {
36
            $this->networkService = $container->get(CachedNetworkService::class);
37
        } else {
38
            $this->networkService = $container->get(NetworkService::class);
39
        }
40
    }
41
42
    /**
43
     * @param string $location
44
     * @return Week
45
     * @throws Exeptions\NetworkingException
46
     */
47
    public function getCurrentWeekForLocation(string $location = Locations::FMI_BISTRO): Week
48
    {
49
        $currentWeek = $this->yearWeekUtil->getCurrentCalendarWeek();
50
        return $this->networkService->getWeekWithLocation($currentWeek, $location);
51
    }
52
53
    /**
54
     * @param string $location
55
     * @return Week
56
     * @throws Exeptions\NetworkingException
57
     */
58
    public function getNextWeekForLocation(string $location = Locations::FMI_BISTRO): Week
59
    {
60
        $nextWeek = $this->yearWeekUtil->getNextCalendarWeek();
61
        return $this->networkService->getWeekWithLocation($nextWeek, $location);
62
    }
63
}