Failed Conditions
Push — master ( 36cd34...e25ade )
by
unknown
47:16 queued 16:37
created

createDataImportMerchantFile()   B

Complexity

Conditions 7
Paths 16

Size

Total Lines 40
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 23
c 1
b 0
f 0
nc 16
nop 1
dl 0
loc 40
rs 8.6186
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 SprykerTest\Shared\DataImportMerchant\Helper;
9
10
use Codeception\Module;
11
use Generated\Shared\DataBuilder\DataImportMerchantFileBuilder;
12
use Generated\Shared\Transfer\DataImportMerchantFileTransfer;
13
use Orm\Zed\DataImportMerchant\Persistence\SpyDataImportMerchantFile;
14
use Orm\Zed\DataImportMerchant\Persistence\SpyDataImportMerchantFileQuery;
15
use SprykerTest\Shared\Testify\Helper\DataCleanupHelperTrait;
16
17
class DataImportMerchantHelper extends Module
18
{
19
    use DataCleanupHelperTrait;
20
21
    /**
22
     * @param array<string, mixed> $seedData
23
     *
24
     * @return \Generated\Shared\Transfer\DataImportMerchantFileTransfer
25
     */
26
    public function haveDataImportMerchantFile(array $seedData = []): DataImportMerchantFileTransfer
27
    {
28
        if (isset($seedData['uuid'])) {
29
            $dataImportMerchantFileEntity = $this->getDataImportMerchantFileQuery()->findOneByUuid($seedData['uuid']);
30
31
            if ($dataImportMerchantFileEntity) {
32
                return (new DataImportMerchantFileTransfer())->fromArray($dataImportMerchantFileEntity->toArray(), true);
33
            }
34
        }
35
36
        $dataImportMerchantFileTransfer = (new DataImportMerchantFileBuilder($seedData))->build();
37
        $dataImportMerchantFileTransfer = $this->createDataImportMerchantFile($dataImportMerchantFileTransfer);
38
39
        $this->getDataCleanupHelper()->addCleanup(function () use ($dataImportMerchantFileTransfer): void {
40
            $this->deleteDataImportMerchantFile($dataImportMerchantFileTransfer);
41
        });
42
43
        return $dataImportMerchantFileTransfer;
44
    }
45
46
    /**
47
     * @param \Generated\Shared\Transfer\DataImportMerchantFileTransfer $dataImportMerchantFileTransfer
48
     *
49
     * @return \Generated\Shared\Transfer\DataImportMerchantFileTransfer
50
     */
51
    protected function createDataImportMerchantFile(DataImportMerchantFileTransfer $dataImportMerchantFileTransfer): DataImportMerchantFileTransfer
52
    {
53
        $data = $dataImportMerchantFileTransfer->modifiedToArray();
54
        unset($data['file_info'], $data['import_result']);
55
56
        $dataImportMerchantFileEntity = (new SpyDataImportMerchantFile())
57
            ->fromArray($data)
58
            ->setOriginalFileName($dataImportMerchantFileTransfer->getFileInfo()?->getOriginalFileName() ?? '')
59
            ->setFkUser($dataImportMerchantFileTransfer->getIdUser());
60
61
        if ($dataImportMerchantFileTransfer->getFileInfo()) {
62
            $dataImportMerchantFileEntity->setFileInfo(
63
                json_encode($dataImportMerchantFileTransfer->getFileInfo()->toArray()) ?: '',
64
            );
65
        }
66
67
        if ($dataImportMerchantFileTransfer->getImportResult()) {
68
            $dataImportMerchantFileEntity->setImportResult(
69
                json_encode($dataImportMerchantFileTransfer->getImportResult()->toArray()) ?: '',
70
            );
71
        }
72
73
        $dataImportMerchantFileEntity->save();
74
75
        $resultTransfer = new DataImportMerchantFileTransfer();
76
        $entityArray = $dataImportMerchantFileEntity->toArray();
77
        unset($entityArray['file_info'], $entityArray['import_result']);
78
79
        $resultTransfer->fromArray($entityArray, true);
80
        $resultTransfer->setIdUser($dataImportMerchantFileEntity->getFkUser());
81
82
        if ($dataImportMerchantFileTransfer->getFileInfo()) {
83
            $resultTransfer->setFileInfo($dataImportMerchantFileTransfer->getFileInfo());
84
        }
85
86
        if ($dataImportMerchantFileTransfer->getImportResult()) {
87
            $resultTransfer->setImportResult($dataImportMerchantFileTransfer->getImportResult());
88
        }
89
90
        return $resultTransfer;
91
    }
92
93
    /**
94
     * @param \Generated\Shared\Transfer\DataImportMerchantFileTransfer $dataImportMerchantFileTransfer
95
     *
96
     * @return void
97
     */
98
    protected function deleteDataImportMerchantFile(DataImportMerchantFileTransfer $dataImportMerchantFileTransfer): void
99
    {
100
        $this->getDataImportMerchantFileQuery()
101
            ->filterByIdDataImportMerchantFile($dataImportMerchantFileTransfer->getIdDataImportMerchantFile())
102
            ->delete();
103
    }
104
105
    /**
106
     * @return \Orm\Zed\DataImportMerchant\Persistence\SpyDataImportMerchantFileQuery
107
     */
108
    protected function getDataImportMerchantFileQuery(): SpyDataImportMerchantFileQuery
109
    {
110
        return SpyDataImportMerchantFileQuery::create();
111
    }
112
}
113