Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
OrderProductsResource
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 toArray
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Domain\PickingOrder\Resources;
4
5use Domain\Integration\Resources\IntegrationResource;
6use Domain\Item\Resource\ItemResource;
7use Domain\Product\Resources\ProductResource;
8use Domain\StockIO\Resources\StockOIResource;
9use Domain\StockIO\Services\StockIOProductMissingAmountService;
10use Illuminate\Http\Request;
11use Illuminate\Http\Resources\Json\JsonResource;
12
13/**
14 * @property int $amount
15 * @property int $id
16 */
17class OrderProductsResource extends JsonResource
18{
19    public function toArray(Request $request): array
20    {
21        $missingAmount = (new StockIOProductMissingAmountService())->resolve($this->resource);
22
23        return [
24            'id'           => $this->id,
25            'amount'       => $this->amount,
26            'quantity_missing' => $missingAmount,
27            'type'         => $this->pivot ? $this->pivot->type : null,
28            'status'       => $this->status->value,
29            'picked'       => $this->whenAppended('picked'),
30            'items'        => ItemResource::collection($this->whenLoaded('items')),
31            'picked_items' => PickedItemResource::collection($this->whenLoaded('pickedItems')),
32            'product'      => ProductResource::make($this->whenLoaded('product')),
33            'integration'  => IntegrationResource::make($this->whenLoaded('integration')),
34            'stock_io'     => StockOIResource::make($this->whenLoaded('stockIO')),
35        ];
36    }
37}