Issues (115)

src/Controllers/CanDestroyResource.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace VGirol\JsonApi\Controllers;
4
5
use Illuminate\Http\JsonResponse;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Facades\DB;
8
use VGirol\JsonApi\Resources\ResourceObject;
9
10
trait CanDestroyResource
11
{
12
    /**
13
     * Undocumented function
14
     *
15
     * @param Request $request
16
     * @param string  $routeKey
17
     * @param mixed   $id
18
     *
19
     * @return JsonResponse
20
     */
21
    protected function destroyAndReply(Request $request, string $routeKey, $id): JsonResponse
22
    {
23
        // Destroys the model
24
        $resource = DB::transaction(function () use ($routeKey, $id) {
25
            return $this->destroySingle($routeKey, $id);
26
        }, config('jsonapi.transactionAttempts'));
27
28
        // Fill response's content
29
        $return204 = !$resource->hasDocumentMeta($request);
30
        $response = $return204 ? $this->responseService->noContent() :
31
            $this->responseService->ok($resource->getDocumentMeta($request));
32
33
        return $response;
34
    }
35
36
    /**
37
     * Destroy a single resource
38
     *
39
     * @param string $routeKey
40
     * @param mixed  $id
41
     *
42
     * @return ResourceObject
43
     */
44
    protected function destroySingle(string $routeKey, $id)
45
    {
46
        // Deletes model
47
        $model = $this->storeService->deleteModel($routeKey, $id);
48
49
        // Creates resource
50
        $resourceName = $this->getResourceClassName($model);
0 ignored issues
show
It seems like getResourceClassName() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

50
        /** @scrutinizer ignore-call */ 
51
        $resourceName = $this->getResourceClassName($model);
Loading history...
51
        $resource = \call_user_func([$resourceName, 'make'], $model);
52
53
        return $resource;
54
    }
55
}
56