Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
AddressProductLocationResource
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 toArray
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\Address\Resources;
4
5use App\Models\Transferable\Transferable;
6use Domain\Address\Services\AddressHierarchyService;
7use Domain\Address\Services\AddressProcessProductLocationService;
8use Domain\Transferable\Resources\TransferableItemsResource;
9use Illuminate\Http\Request;
10use Illuminate\Http\Resources\Json\JsonResource;
11use Illuminate\Support\Collection;
12
13/**
14 * @property int $id
15 * @property Transferable|null $transferable
16 * @property string $name
17 * @property bool $can_store
18 * @property bool $can_remove
19 * @property Collection $items
20 * @property int $status
21 * @property int $order
22 * @property int $items_sum_amount
23 */
24class AddressProductLocationResource extends JsonResource
25{
26    public function toArray(Request $request): array
27    {
28        list ($products, $storages, $productionOrders) = (new AddressProcessProductLocationService())->processProductLocation($this->resource);
29
30        return [
31            'id' => $this->id,
32            'transferable_id' => $this->whenLoaded('transferable', fn() => $this->transferable->getKey()),
33            'name' => $this->name,
34            'can_store' => $this->can_store,
35            'can_remove' => $this->can_remove,
36            'products' => TransferableItemsResource::collection($products ?? []),
37            'storages' => TransferableItemsResource::collection($storages ?? []),
38            'hierarchy' => $this->whenLoaded('parent', (new AddressHierarchyService())->get($this->resource)),
39            'production_orders' => $productionOrders->unique()->values(),
40            'items_sum_amount' => $this->items_sum_amount,
41        ];
42    }
43}