Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
TransferableResource
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 toArray
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\Transferable\Resources;
4
5use App\Models\Transferable\Transferable;
6use Domain\Address\Resources\AddressResource;
7use Domain\Storage\Resources\StorageResource;
8use Illuminate\Http\Request;
9use Illuminate\Http\Resources\Json\JsonResource;
10use Illuminate\Support\Str;
11use function class_basename;
12
13/**
14 * @property Transferable $transferable
15 */
16class TransferableResource extends JsonResource
17{
18    public function toArray(Request $request): array
19    {
20        $target = $this->transferable;
21        $className = class_basename(get_class($target));
22        $slug = Str::slug($className);
23
24        $resourceMap = [
25            'storage' => StorageResource::class,
26            'address' => AddressResource::class
27        ];
28
29        $resourceClass = $resourceMap[$slug];
30
31        return [
32            'target_type' => $slug,
33            'target' => new $resourceClass($target)
34        ];
35
36    }
37}