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
Bug
introduced
by
![]() |
|||
51 | $resource = \call_user_func([$resourceName, 'make'], $model); |
||
52 | |||
53 | return $resource; |
||
54 | } |
||
55 | } |
||
56 |