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
AddressProductWarehouseLocationResource
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\Address\Resources;
4
5use App\Models\Transferable\Transferable;
6use Domain\Address\Services\AddressHierarchyService;
7use Domain\Address\Services\AddressProcessProductWarehouseLocationService;
8use Domain\Item\Resource\ItemLocationResource;
9use Domain\Transferable\Resources\TransferableItemsResource;
10use Illuminate\Http\Request;
11use Illuminate\Http\Resources\Json\JsonResource;
12use Illuminate\Support\Collection;
13
14/**
15 * @property int $id
16 * @property Transferable|null $transferable
17 * @property string $name
18 * @property bool $can_store
19 * @property bool $can_remove
20 * @property Collection $items
21 * @property int $status
22 * @property int $order
23 * @property int $items_sum_amount
24 */
25class AddressProductWarehouseLocationResource extends JsonResource
26{
27    public function toArray(Request $request): array
28    {
29        list ($products, $priorityValue) = (new AddressProcessProductWarehouseLocationService())->processProductLocation($this->resource);
30
31        return [
32            'id' => $this->id,
33            'transferable_id' => $this->whenLoaded('transferable', fn() => $this->transferable->getKey()),
34            'name' => $this->name,
35            'can_store' => $this->can_store,
36            'can_remove' => $this->can_remove,
37            'items' => ItemLocationResource::collection($products ?? []),
38            'hierarchy' => $this->whenLoaded('parent', (new AddressHierarchyService())->get($this->resource)),
39            'priority_values' => $priorityValue->unique()->values(),
40            'items_sum_amount' => $this->items_sum_amount,
41        ];
42    }
43}