Failed Conditions
Push — master ( ae631c...a04781 )
by
unknown
52:50 queued 12:37
created

FileAttachmentSaver::saveCompanyFileAttachments()   A

Complexity

Conditions 5
Paths 4

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 10
nc 4
nop 1
dl 0
loc 18
rs 9.6111
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerFeature\Zed\SelfServicePortal\Persistence\Saver;
9
10
use Generated\Shared\Transfer\FileAttachmentTransfer;
11
use Orm\Zed\SelfServicePortal\Persistence\SpyCompanyBusinessUnitFileQuery;
12
use Orm\Zed\SelfServicePortal\Persistence\SpyCompanyUserFileQuery;
13
use Orm\Zed\SelfServicePortal\Persistence\SpySspAssetFileQuery;
14
15
class FileAttachmentSaver
16
{
17
    public function __construct(
18
        protected SpyCompanyBusinessUnitFileQuery $companyBusinessUnitFileQuery,
19
        protected SpyCompanyUserFileQuery $companyUserFileQuery,
20
        protected SpySspAssetFileQuery $sspAssetFileQuery
21
    ) {
22
    }
23
24
    public function saveBusinessUnitFileAttachment(FileAttachmentTransfer $fileAttachmentTransfer): FileAttachmentTransfer
25
    {
26
        if (!$fileAttachmentTransfer->getBusinessUnitCollection()?->getCompanyBusinessUnits()) {
27
            return $fileAttachmentTransfer;
28
        }
29
30
        foreach ($fileAttachmentTransfer->getBusinessUnitCollection()->getCompanyBusinessUnits() as $companyBusinessUnitTransfer) {
31
            $companyBusinessUnitFileEntity = $this->companyBusinessUnitFileQuery->clear()
32
                ->filterByFkCompanyBusinessUnit($companyBusinessUnitTransfer->getIdCompanyBusinessUnitOrFail())
33
                ->filterByFkFile($fileAttachmentTransfer->getFileOrFail()->getIdFileOrFail())
34
                ->findOneOrCreate();
35
36
            if ($companyBusinessUnitFileEntity->isNew() || $companyBusinessUnitFileEntity->isModified()) {
37
                $companyBusinessUnitFileEntity->save();
38
            }
39
        }
40
41
        return $fileAttachmentTransfer;
42
    }
43
44
    public function saveCompanyUserAttachment(FileAttachmentTransfer $fileAttachmentTransfer): FileAttachmentTransfer
45
    {
46
        if (!$fileAttachmentTransfer->getCompanyUserCollection()?->getCompanyUsers()) {
47
            return $fileAttachmentTransfer;
48
        }
49
50
        foreach ($fileAttachmentTransfer->getCompanyUserCollection()->getCompanyUsers() as $companyUserTransfer) {
51
            $companyUserFileEntity = $this->companyUserFileQuery->clear()
52
                ->filterByFkCompanyUser($companyUserTransfer->getIdCompanyUserOrFail())
53
                ->filterByFkFile($fileAttachmentTransfer->getFileOrFail()->getIdFileOrFail())
54
                ->findOneOrCreate();
55
56
            if ($companyUserFileEntity->isNew() || $companyUserFileEntity->isModified()) {
57
                $companyUserFileEntity->save();
58
            }
59
        }
60
61
        return $fileAttachmentTransfer;
62
    }
63
64
    public function saveSspAssetFileAttachment(FileAttachmentTransfer $fileAttachmentTransfer): FileAttachmentTransfer
65
    {
66
        if (!$fileAttachmentTransfer->getSspAssetCollection()?->getSspAssets()) {
67
            return $fileAttachmentTransfer;
68
        }
69
70
        foreach ($fileAttachmentTransfer->getSspAssetCollection()->getSspAssets() as $sspAssetTransfer) {
71
            $sspAssetFileEntity = $this->sspAssetFileQuery->clear()
72
                ->filterByFkSspAsset($sspAssetTransfer->getIdSspAssetOrFail())
73
                ->filterByFkFile($fileAttachmentTransfer->getFileOrFail()->getIdFileOrFail())
74
                ->findOneOrCreate();
75
76
            if ($sspAssetFileEntity->isNew() || $sspAssetFileEntity->isModified()) {
77
                $sspAssetFileEntity->save();
78
            }
79
        }
80
81
        return $fileAttachmentTransfer;
82
    }
83
}
84