Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
StockIORequestDetailsResource
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 toArray
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\StockIO\Resources;
4
5use App\Models\Transferable\Transferable;
6
7use Illuminate\Database\Eloquent\Collection;
8use Illuminate\Http\Request;
9use Illuminate\Http\Resources\Json\JsonResource;
10
11use Domain\Integration\Resources\IntegrationResource;
12use Domain\PickingOrder\Resources\PickingOrderResource;
13use Domain\Request\Resources\RequestResource;
14use Domain\Shared\Enums\SectorEnum;
15use Domain\StockIO\Enums\StockStatusEnum;
16use Domain\StockIO\Enums\StockTypeEnum;
17use Domain\Team\Resources\TeamResource;
18use Domain\Transferable\Resources\TransferableItemsResource;
19use Domain\User\Resources\UserResource;
20
21/**
22 * @property StockStatusEnum $status
23 * @property ?string $observation
24 * @property Collection $items
25 * @property StockTypeEnum $type
26 * @property array $data
27 * @property int $id
28 * @property Transferable|null $transferable
29 * @property string $created_at
30 * @property bool $urgent
31 * @property int $reason
32 * @property SectorEnum $sector
33 */
34class StockIORequestDetailsResource extends JsonResource
35{
36    public function toArray(Request $request): array
37    {
38        return [
39            'id'                => $this->id,
40            'transferable_id'   => $this->whenLoaded('transferable', $this->transferable?->getKey()),
41            'urgent'            => $this->urgent,
42            'observation'       => $this->observation,
43            'status'            => $this->status->value,
44            'type'              => $this->type->value,
45            'reason'            => $this->reason,
46            'sector'            => $this->sector->value,
47            'team'              => TeamResource::make($this->whenLoaded('team')),
48            'created_at'        => (string) $this->created_at,
49            'request'           => RequestResource::make($this->whenLoaded('request')),
50            'stock_io_products' => StockIOProductResource::collection($this->whenLoaded('stockIOProducts')),
51            'responsible'       => UserResource::make($this->whenLoaded('responsible')),
52            'items'             => TransferableItemsResource::collection($this->whenLoaded('items')),
53            'picking_orders'    => PickingOrderResource::collection($this->whenLoaded('pickingOrders')),
54            'integration'       => IntegrationResource::make($this->whenLoaded('integration')),
55        ];
56    }
57}