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
|
|
|
|