Completed
Pull Request — master (#285)
by Luc
07:52
created

handleUpdateGeoCoordinatesFromAddress()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 1
1
<?php
2
3
namespace CultuurNet\UDB3\Place;
4
5
use Broadway\Repository\RepositoryInterface;
6
use CultuurNet\Geocoding\GeocodingServiceInterface;
7
use CultuurNet\UDB3\Address\AddressFormatterInterface;
8
use CultuurNet\UDB3\CommandHandling\Udb3CommandHandler;
9
use CultuurNet\UDB3\Place\Commands\UpdateGeoCoordinatesFromAddress;
10
11
class GeoCoordinatesCommandHandler extends Udb3CommandHandler
12
{
13
    /**
14
     * @var RepositoryInterface
15
     */
16
    private $placeRepository;
17
18
    /**
19
     * @var AddressFormatterInterface
20
     */
21
    private $addressFormatter;
22
23
    /**
24
     * @var GeocodingServiceInterface
25
     */
26
    private $geocodingService;
27
28
    /**
29
     * @param RepositoryInterface $placeRepository
30
     * @param AddressFormatterInterface $addressFormatter
31
     * @param GeocodingServiceInterface $geocodingService
32
     */
33
    public function __construct(
34
        RepositoryInterface $placeRepository,
35
        AddressFormatterInterface $addressFormatter,
36
        GeocodingServiceInterface $geocodingService
37
    ) {
38
        $this->placeRepository = $placeRepository;
39
        $this->addressFormatter = $addressFormatter;
40
        $this->geocodingService = $geocodingService;
41
    }
42
43
    /**
44
     * @param UpdateGeoCoordinatesFromAddress $updateGeoCoordinates
45
     */
46
    public function handleUpdateGeoCoordinatesFromAddress(UpdateGeoCoordinatesFromAddress $updateGeoCoordinates)
47
    {
48
        $coordinates = $this->geocodingService->getCoordinates(
49
            $this->addressFormatter->format(
50
                $updateGeoCoordinates->getAddress()
51
            )
52
        );
53
54
        /** @var Place $place */
55
        $place = $this->placeRepository->load($updateGeoCoordinates->getItemId());
56
        $place->updateGeoCoordinates($coordinates);
57
        $this->placeRepository->save($place);
58
    }
59
}
60