Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ShippingPackagingIndexResource
0.00% covered (danger)
0.00%
0 / 18
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 / 18
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\ShippingPackaging\Resources;
4
5use App\Models\ShippingPackaging\ShippingPackaging;
6use App\Models\ShippingPackaging\ShippingPackagingProduct;
7use Domain\Integration\Resources\IntegrationResource;
8use Domain\Packaging\Resources\PackagingResource;
9use Domain\StockIO\Resources\StockOIResource;
10use Domain\ShippingPackaging\Enums\ShippingPackagingStatusEnum;
11use Domain\ShippingPackaging\Enums\ShippingPackagingTypeEnum;
12use Domain\Team\Resources\TeamResource;
13use Domain\User\Resources\UserSensitiveResource;
14use Illuminate\Database\Eloquent\Collection;
15use Illuminate\Http\Request;
16use Illuminate\Http\Resources\Json\JsonResource;
17
18/**
19 * @property ShippingPackagingStatusEnum $status
20 * @property int $id
21 * @property string $created_at
22 * @property string $updated_at
23 * @property int $volume
24 * @property ShippingPackagingTypeEnum $type
25 * @property Collection $pickingOrders
26 */
27class ShippingPackagingIndexResource extends JsonResource
28{
29
30    public function toArray(Request $request): array
31    {
32        /** @var ShippingPackaging $shippingPackaging */
33        $shippingPackaging = $this->resource;
34
35        $stockIO = $shippingPackaging->products->map(function (ShippingPackagingProduct $shippingPackagingProduct) {
36            return $shippingPackagingProduct->pickedItem->stockIOProduct->stockIO;
37        })->unique();
38
39        return [
40            'id' => $this->id,
41            'status' => $this->status->value,
42            'volume' => $this->volume,
43            'type' => $this->type->value,
44            'observation' => $this->observation,
45            'stockIO' => StockOIResource::collection($stockIO->load([
46                'integration',
47            ])),
48            'packaging' => PackagingResource::make($this->whenLoaded('packaging')),
49            'responsible' => UserSensitiveResource::make($this->whenLoaded('responsible')),
50            'created_at' => (string)$this->created_at,
51            'updated_at' => (string)$this->updated_at,
52        ];
53    }
54}