Completed
Push — feature/add-ra-location-comman... ( d275a6 )
by A.
04:53
created

handleRemoveRaLocationCommand()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
/**
4
 * Copyright 2016 SURFnet B.V.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
namespace Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\CommandHandler;
20
21
use Broadway\CommandHandling\CommandHandler;
22
use Broadway\Repository\AggregateNotFoundException;
23
use Broadway\Repository\RepositoryInterface;
24
use Surfnet\Stepup\Configuration\InstitutionConfiguration;
25
use Surfnet\Stepup\Configuration\Value\InstitutionConfigurationId;
26
use Surfnet\Stepup\Configuration\Value\Institution;
27
use Surfnet\Stepup\Configuration\Value\Location;
28
use Surfnet\Stepup\Configuration\Value\RaLocationId;
29
use Surfnet\Stepup\Configuration\Value\RaLocationName;
30
use Surfnet\Stepup\Configuration\Value\ContactInformation;
31
use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\AddRaLocationCommand;
32
use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\ChangeRaLocationCommand;
33
use Surfnet\StepupMiddleware\CommandHandlingBundle\Configuration\Command\RemoveRaLocationCommand;
34
35
class InstitutionConfigurationCommandHandler extends CommandHandler
36
{
37
    /**
38
     * @var RepositoryInterface
39
     */
40
    private $repository;
41
42
    public function __construct(RepositoryInterface $repository)
43
    {
44
        $this->repository = $repository;
45
    }
46
47
    public function handleAddRaLocationCommand(AddRaLocationCommand $command)
48
    {
49
        $institution                = new Institution($command->institution);
50
        $institutionConfigurationId = InstitutionConfigurationId::from($institution);
51
        $institutionConfiguration   = $this->getInstitutionConfiguration($institutionConfigurationId);
52
53
        if ($institutionConfiguration === null) {
54
            $institutionConfiguration = InstitutionConfiguration::create($institutionConfigurationId, $institution);
55
        }
56
57
        $institutionConfiguration->addRaLocation(
58
            new RaLocationId($command->raLocationId),
59
            new RaLocationName($command->raLocationName),
60
            new Location($command->location),
61
            new ContactInformation($command->contactInformation)
62
        );
63
64
        $this->repository->save($institutionConfiguration);
65
    }
66
67
    public function handleChangeRaLocationCommand(ChangeRaLocationCommand $command)
0 ignored issues
show
Unused Code introduced by
The parameter $command is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
68
    {
69
        // Implement
70
    }
71
72
    public function handleRemoveRaLocationCommand(RemoveRaLocationCommand $command)
0 ignored issues
show
Unused Code introduced by
The parameter $command is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
73
    {
74
        // Implement
75
    }
76
77
    private function getInstitutionConfiguration(InstitutionConfigurationId $institutionConfigurationId)
78
    {
79
        try {
80
            return $this->repository->load($institutionConfigurationId);
81
        } catch (AggregateNotFoundException $e) {
82
            return null;
83
        }
84
    }
85
}
86