TenantsMediaController::index()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 9
rs 9.9666
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Tenants\Http\Controllers\Adminarea;
6
7
use Cortex\Tenants\Models\Tenant;
8
use Spatie\MediaLibrary\Models\Media;
9
use Cortex\Foundation\DataTables\MediaDataTable;
10
use Cortex\Foundation\Http\Requests\ImageFormRequest;
11
use Cortex\Foundation\Http\Controllers\AuthorizedController;
12
13
class TenantsMediaController extends AuthorizedController
14
{
15
    /**
16
     * {@inheritdoc}
17
     */
18
    protected $resource = Tenant::class;
19
20
    /**
21
     * {@inheritdoc}
22
     */
23
    public function authorizeResource($model, $parameter = null, array $options = [], $request = null): void
24
    {
25
        $middleware = [];
26
        $parameter = $parameter ?: snake_case(class_basename($model));
0 ignored issues
show
Deprecated Code introduced by
The function snake_case() has been deprecated with message: Str::snake() should be used directly instead. Will be removed in Laravel 6.0.

This function has been deprecated. The supplier of the file has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed from the class and what other function to use instead.

Loading history...
27
28
        foreach ($this->mapResourceAbilities() as $method => $ability) {
29
            $modelName = in_array($method, $this->resourceMethodsWithoutModels()) ? $model : $parameter;
30
31
            $middleware["can:update,{$modelName}"][] = $method;
32
            $middleware["can:{$ability},media"][] = $method;
33
        }
34
35
        foreach ($middleware as $middlewareName => $methods) {
36
            $this->middleware($middlewareName, $options)->only($methods);
37
        }
38
    }
39
40
    /**
41
     * List tenant media.
42
     *
43
     * @param \Cortex\Tenants\Models\Tenant                $tenant
44
     * @param \Cortex\Foundation\DataTables\MediaDataTable $mediaDataTable
45
     *
46
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
0 ignored issues
show
Documentation introduced by
Should the return type not be \Illuminate\Http\JsonRes...e|\Illuminate\View\View?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
47
     */
48
    public function index(Tenant $tenant, MediaDataTable $mediaDataTable)
49
    {
50
        return $mediaDataTable->with([
51
            'resource' => $tenant,
52
            'tabs' => 'adminarea.tenants.tabs',
53
            'id' => "adminarea-tenants-{$tenant->getRouteKey()}-media-table",
54
            'url' => route('adminarea.tenants.media.store', ['tenant' => $tenant]),
55
        ])->render('cortex/foundation::adminarea.pages.datatable-dropzone');
56
    }
57
58
    /**
59
     * Store new tenant media.
60
     *
61
     * @param \Cortex\Foundation\Http\Requests\ImageFormRequest $request
62
     * @param \Cortex\Tenants\Models\Tenant                     $tenant
63
     *
64
     * @return void
65
     */
66
    public function store(ImageFormRequest $request, Tenant $tenant): void
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
67
    {
68
        $tenant->addMediaFromRequest('file')
69
               ->sanitizingFileName(function ($fileName) {
70
                   return md5($fileName).'.'.pathinfo($fileName, PATHINFO_EXTENSION);
71
               })
72
               ->toMediaCollection('default', config('cortex.tenants.media.disk'));
73
    }
74
75
    /**
76
     * Destroy given tenant media.
77
     *
78
     * @param \Cortex\Tenants\Models\Tenant     $tenant
79
     * @param \Spatie\MediaLibrary\Models\Media $media
80
     *
81
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
82
     */
83
    public function destroy(Tenant $tenant, Media $media)
84
    {
85
        $tenant->media()->where($media->getKeyName(), $media->getKey())->first()->delete();
86
87
        return intend([
88
            'url' => route('adminarea.tenants.media.index', ['tenant' => $tenant]),
89
            'with' => ['warning' => trans('cortex/foundation::messages.resource_deleted', ['resource' => trans('cortex/foundation::common.media'), 'identifier' => $media->getRouteKey()])],
90
        ]);
91
    }
92
}
93