ServiceConfig::define()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 45

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 45
rs 9.2
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Scheduler\Web\Radar\Config;
4
5
use Aura\Di\Container;
6
use Aura\Di\ContainerConfig;
7
use Doctrine\DBAL\DriverManager;
8
use Scheduler\Domain\Model\Shift\HoursWorkedCalculator;
9
use Scheduler\Domain\Model\Shift\ShiftCoworkersFinder;
10
use Scheduler\Domain\Model\Shift\ShiftMapper;
11
use Scheduler\Domain\Model\User\UserMapper;
12
use Scheduler\Domain\Model\User\InMemoryAuthenticator;
13
use Scheduler\Infrastructure\DBAL;
14
use Scheduler\Web\Resource\HoursWorkedSummaryResource;
15
use Scheduler\Web\Resource\ShiftResource;
16
use Scheduler\Web\Resource\UserResource;
17
18
class ServiceConfig extends ContainerConfig
19
{
20
    public function define(Container $di)
21
    {
22
        $di->set('db.connection', $di->lazy(
23
            [DriverManager::class, 'getConnection'],
24
            [
25
                'dbname' => getenv('DB_NAME'),
26
                'user' => getenv('DB_USER'),
27
                'password' => getenv('DB_PASSWORD'),
28
                'host' => getenv('DB_HOST'),
29
                'port' => getenv('DB_PORT'),
30
                'driver' => getenv('DB_DRIVER'),
31
            ]
32
        ));
33
34
        $di->set('db.schema', $di->lazyNew(DBAL\DbalSchema::class));
35
        $di->params[DBAL\DbalSchema::class]['connection'] = $di->lazyGet('db.connection');
36
37
        $di->set("user.mapper", $di->lazyNew(DBAL\DbalUserMapper::class));
38
        $di->params[DBAL\DbalUserMapper::class]['db'] = $di->lazyGet('db.connection');
39
40
        $di->set("shift.mapper", $di->lazyNew(DBAL\DbalShiftMapper::class));
41
        $di->params[DBAL\DbalShiftMapper::class]['db'] = $di->lazyGet('db.connection');
42
        $di->params[DBAL\DbalShiftMapper::class]['userMapper'] = $di->lazyGet("user.mapper");
43
44
        $di->set("user.authenticator", $di->lazyNew(InMemoryAuthenticator::class));
45
        $di->params[InMemoryAuthenticator::class]["userMapper"] = $di->lazyGet("user.mapper");
46
        $di->params[InMemoryAuthenticator::class]["tokenMap"] = [
47
            "i_am_a_manager" => 1,
48
            "i_am_an_employee" => 2,
49
            "i_am_shelly" => 3
50
        ];
51
52
        $di->set("shift.resource", $di->lazyNew(ShiftResource::class));
53
        $di->params[ShiftResource::class]["userResource"] = $di->lazyGet("user.resource");
54
55
        $di->set("user.resource", $di->lazyNew(UserResource::class));
56
57
        $di->set("summary.resource", $di->lazyNew(HoursWorkedSummaryResource::class));
58
59
        $di->set("hours.calculator", $di->lazyNew(HoursWorkedCalculator::class));
60
        $di->params[HoursWorkedCalculator::class]["shiftMapper"] = $di->lazyGet("shift.mapper");
61
62
        $di->set("shift.coworkers.finder", $di->lazyNew(ShiftCoworkersFinder::class));
63
        $di->params[ShiftCoworkersFinder::class]["shiftMapper"] = $di->lazyGet("shift.mapper");
64
    }
65
}
66