Passed
Push — fix/slim ( 590b9b...bb7246 )
by Ben
08:37 queued 41s
created

FileFieldHandler::detach()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Thinktomorrow\Chief\Media\Application;
6
7
use Illuminate\Http\Request;
8
use Illuminate\Http\UploadedFile;
9
use Thinktomorrow\AssetLibrary\Asset;
10
use Thinktomorrow\AssetLibrary\HasAsset;
11
use Thinktomorrow\Chief\Fields\Types\MediaField;
12
13
class FileFieldHandler extends AbstractMediaFieldHandler
14
{
15
    public function handle(HasAsset $model, MediaField $field, Request $request): void
16
    {
17
        foreach([$request->file('files.' . $field->getName(), []), $request->input('files.' . $field->getName(), [])] as $requestPayload) {
18
            foreach ($requestPayload as $locale => $values) {
19
                $this->handlePayload($model, $field, $locale, $values);
20
            }
21
        }
22
23
        $this->sort($model, $field, $request);
24
    }
25
26
    protected function new(HasAsset $model, string $locale, string $type, $value): Asset
27
    {
28
        if ($this->looksLikeAnAssetId($value)) {
29
            return $this->newExistingAsset($model, $locale, $type, $value);
30
        }
31
32
        /** @var UploadedFile $uploadedFile */
33
        $uploadedFile = $value;
34
35
        $filename = $uploadedFile->getClientOriginalName();
36
37
        return $this->addAsset->add($model, $uploadedFile, $type, $locale, $this->sluggifyFilename($filename));
38
    }
39
40
    protected function createNewAsset(HasAsset $model, string $locale, string $type, $value): Asset
41
    {
42
        /** @var UploadedFile $uploadedFile */
43
        $uploadedFile = $value;
44
45
        $filename = $uploadedFile->getClientOriginalName();
46
47
        return $this->assetUploader->upload($uploadedFile, $filename);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->assetUploa...ploadedFile, $filename) could return the type Illuminate\Support\Collection which is incompatible with the type-hinted return Thinktomorrow\AssetLibrary\Asset. Consider adding an additional type-check to rule them out.
Loading history...
48
    }
49
}
50