Passed
Push — dependabot/npm_and_yarn/string... ( b56eb5...bc569b )
by
unknown
45:46 queued 33s
created

UploadModulesMediaController::store()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 31
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 0
Metric Value
cc 4
eloc 19
nc 4
nop 2
dl 0
loc 31
ccs 0
cts 18
cp 0
crap 20
rs 9.6333
c 0
b 0
f 0
1
<?php
2
3
namespace Thinktomorrow\Chief\App\Http\Controllers\Back\Media;
4
5
use Illuminate\Http\Request;
6
use Thinktomorrow\Chief\Modules\Module;
7
use Thinktomorrow\Chief\Media\MediaType;
8
use Thinktomorrow\AssetLibrary\Models\AssetUploader;
9
use Thinktomorrow\Chief\App\Http\Controllers\Controller;
10
11
class UploadModulesMediaController extends Controller
12
{
13
    /**
14
     * Upload a file via redactor editor. Keep in mind
15
     * that here one file at a time is accepted
16
     */
17
    public function store(Request $request, $id)
18
    {
19
        $uploads = $request->file('file');
20
        $model = Module::findOrFail($id);
21
22
        if (empty($uploads)) {
23
            return response()->json([
24
                'error' => true,
25
                'messages' => 'Geen afbeelding opgeladen.',
26
            ], 500);
27
        }
28
29
        $responseContent = [];
30
31
        foreach ($uploads as $upload) {
32
            if (! $asset = AssetUploader::upload($upload)) {
33
                return response()->json([
34
                    'error' => true,
35
                    'messages' => 'Afbeelding kan niet worden opgeladen.',
36
                ], 500);
37
            }
38
39
            $asset->attachToModel($model, MediaType::CONTENT);
40
41
            $responseContent['file-'.$asset->id] = [
42
                'url' => $asset->getFileUrl(),
43
                'id' => $asset->id,
44
            ];
45
        }
46
47
        return response()->json($responseContent, 201);
48
    }
49
}
50