ProviderImportationHandler::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 26
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 15
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 26
rs 9.7666
1
<?php
2
3
namespace App\Messenger\MessageHandler;
4
5
use App\Composer\PackageImporter;
6
use App\Document\Provider;
7
use App\Mercure\ProviderPublisher;
8
use App\Messenger\Message\ProviderImportation;
9
use Doctrine\ODM\MongoDB\DocumentManager;
10
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
11
12
class ProviderImportationHandler implements MessageHandlerInterface
13
{
14
    private $packageImporter;
15
    private $dm;
16
    private $publisher;
17
18
    public function __construct(PackageImporter $packageImporter, DocumentManager $dm, ProviderPublisher $publisher)
19
    {
20
        $this->packageImporter = $packageImporter;
21
        $this->dm = $dm;
22
        $this->publisher = $publisher;
23
    }
24
25
    public function __invoke(ProviderImportation $message)
26
    {
27
        $this->dm->clear();
28
29
        /** @var Provider $provider */
30
        $provider = $this->dm->getRepository('App:Provider')->find($message->getName());
31
32
        if (!$provider) {
0 ignored issues
show
introduced by
$provider is of type App\Document\Provider, thus it always evaluated to true.
Loading history...
33
            return;
34
        }
35
36
        try {
37
            $rs = $this->packageImporter->import($provider);
38
            $provider->setHasError(!$rs);
39
        } catch (\Exception $e) {
40
            $provider->setHasError(true);
41
            $provider->setLogs($e->getMessage());
42
        }
43
44
        $provider->setUpdateInProgress(false);
45
        $this->dm->flush();
46
47
        $this->packageImporter->updateReplaceProviderSignature($provider);
48
        $this->dm->flush();
49
50
        $this->publisher->publishProviderUpdate($provider);
51
52
53
    }
54
}
55