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

UploadModulesMediaController   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 37
ccs 0
cts 18
cp 0
rs 10
c 0
b 0
f 0
wmc 4
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