Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
ProductResource
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 toArray
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\Product\Resources;
4
5use Illuminate\Database\Eloquent\Model;
6use Illuminate\Http\Request;
7use Illuminate\Http\Resources\Json\JsonResource;
8
9use App\Models\Integration\Integration;
10
11use Domain\Category\Resources\FamilyResource;
12use Domain\Integration\Resources\IntegrationResource;
13use Domain\UnitMeasurement\Resources\UnitMeasurementResource;
14
15/**
16 * @property int $id
17 * @property string $description
18 * @property string $integration_date
19 * @property string $integration_barcode
20 * @property string $integration_code
21 * @property Model|null $pivot
22 * @property mixed $integration_product
23 * @property Integration $integration
24 * @property int $priority_field
25 * @property int $priority_order
26 */
27class ProductResource extends JsonResource
28{
29
30    public function toArray(Request $request): array
31    {
32        return [
33            'id'                           => $this->id,
34            'description'                  => $this->description,
35            'priority_field'               => $this->priority_field,
36            'priority_order'               => $this->priority_order,
37            'integration_date'             => $this->whenLoaded('integration', fn() => $this->integration->parameters['integration_date']),
38            'integration_barcode'          => $this->whenLoaded('integration', fn() => $this->integration->parameters['integration_barcode']),
39            'integration_code'             => $this->whenLoaded('integration', fn() => $this->integration->parameters['integration_code']),
40            'integration_product'          => $this->whenLoaded('integration', fn() => $this->integration->parameters['integration_product']),
41            'integration_packing_quantity' => $this->whenLoaded('integration', fn() => $this->integration->parameters['integration_packing_quantity']),
42            'integration'                  => IntegrationResource::make($this->whenLoaded('integration')),
43            'amount'                       => $this->whenPivotLoaded($this->pivot?->getTable(), fn() => $this->pivot->getAttribute('amount')),
44            'measure'                      => ProductMeasureResource::make($this->whenLoaded('measure')),
45            'family'                       => FamilyResource::make($this->whenLoaded('family')),
46            'unit_measurement'             => UnitMeasurementResource::make($this->whenLoaded('unitMeasurement')),
47        ];
48    }
49
50}