CreateImportForNewMediaGroupHandler   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 3
dl 0
loc 43
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A handle() 0 11 1
A importMediaItems() 0 10 2
1
<?php
2
3
namespace Backend\Modules\MediaLibraryImporter\Domain\MediaGroupImport\Command;
4
5
use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup;
6
use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroupRepository;
7
use Backend\Modules\MediaLibraryImporter\Domain\MediaItemImport\MediaItemImport;
8
use Backend\Modules\MediaLibraryImporter\Domain\MediaItemImport\MediaItemImportDataTransferObject;
9
use Backend\Modules\MediaLibraryImporter\Domain\MediaItemImport\MediaItemImportRepository;
10
11
class CreateImportForNewMediaGroupHandler
12
{
13
    /** @var MediaGroupRepository */
14
    protected $mediaGroupRepository;
15
16
    /** @var MediaGroupRepository */
17
    protected $mediaItemImportRepository;
18
19
    public function __construct(
20
        MediaGroupRepository $mediaGroupRepository,
21
        MediaItemImportRepository $mediaItemImportRepository
22
    ) {
23
        $this->mediaGroupRepository = $mediaGroupRepository;
24
        $this->mediaItemImportRepository = $mediaItemImportRepository;
25
    }
26
27
    public function handle(CreateImportForNewMediaGroup $createMediaGroupImport): void
28
    {
29
        /** @var MediaGroup $mediaGroup */
30
        $mediaGroup = MediaGroup::create($createMediaGroupImport->type);
31
        $this->mediaGroupRepository->add($mediaGroup);
32
33
        $this->importMediaItems($mediaGroup, $createMediaGroupImport->mediaItemImportDataTransferObjects);
34
35
        // We redefine the MediaGroup, so we can use it in an action
36
        $createMediaGroupImport->setMediaGroupEntity($mediaGroup);
37
    }
38
39
    /**
40
     * @param MediaGroup $mediaGroup
41
     * @param MediaItemImportDataTransferObject[] $dataTransferObjects
42
     */
43
    private function importMediaItems(MediaGroup $mediaGroup, array $dataTransferObjects): void
44
    {
45
        foreach ($dataTransferObjects as $dataTransferObject) {
46
            // We must set the media group
47
            $dataTransferObject->setMediaGroup($mediaGroup);
48
49
            // Import mediaItemImport
50
            $this->mediaItemImportRepository->add(MediaItemImport::fromDataTransferObject($dataTransferObject));
51
        }
52
    }
53
}
54