Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
| TransferableResource | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
| toArray | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
1 | |||
| 1 | <?php |
| 2 | |
| 3 | namespace Domain\Transferable\Resources; |
| 4 | |
| 5 | use App\Models\Transferable\Transferable; |
| 6 | use Domain\Address\Resources\AddressResource; |
| 7 | use Domain\Storage\Resources\StorageResource; |
| 8 | use Illuminate\Http\Request; |
| 9 | use Illuminate\Http\Resources\Json\JsonResource; |
| 10 | use Illuminate\Support\Str; |
| 11 | use function class_basename; |
| 12 | |
| 13 | /** |
| 14 | * @property Transferable $transferable |
| 15 | */ |
| 16 | class 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 | } |