Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
StockIOByReasonResource
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
90
0.00% covered (danger)
0.00%
0 / 1
 toArray
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
90
1<?php
2
3namespace Domain\StockIO\Resources;
4
5use App\Models\CostCenter\CostCenter;
6use App\Models\User;
7use Domain\CostCenter\Resources\CostCenterResource;
8use Domain\StockIO\Enums\StockOutputReasonEnum;
9use Domain\StockIO\Enums\StockTypeEnum;
10use Domain\User\Resources\UserResource;
11use Illuminate\Http\Request;
12use Illuminate\Http\Resources\Json\JsonResource;
13
14/**
15 * @property StockTypeEnum $type
16 * @property int $id
17 * @property int $reason
18 */
19class StockIOByReasonResource extends JsonResource
20{
21    public function toArray(Request $request): array
22    {
23        $requester = null;
24        $costCenter = null;
25
26        if ($this->parameters && isset($this->parameters['request_user'])) {
27            $requester = User::whereRaw("integrations->'senior'->>'user_code' = ?", [(string) $this->parameters['request_user']])->first();
28        }
29
30        if ($this->parameters && isset($this->parameters['cost_center'])) {
31            $costCenterCode = $this->parameters['cost_center'];
32            $costCenter = CostCenter::with('resourceCenter')->whereHas('integration', function ($query) use ($costCenterCode) {
33                $query->whereRaw("parameters->>'cost_center_code' = ?", [$costCenterCode]);
34            })->first();
35        }
36
37        if (in_array($this->reason, [StockOutputReasonEnum::REQUEST->value, StockOutputReasonEnum::SYNCED_REQUEST->value])
38            && $this->type == StockTypeEnum::OUTPUT->value)
39        {
40            return [
41                'id'          => $this->id,
42                'type'        => $this->type,
43                'reason'      => $this->reason,
44                'requester'   => $requester ? UserResource::make($requester) : null,
45                'cost_center' => $costCenter ? CostCenterResource::make($costCenter) : null,
46            ];
47        } else {
48            return [
49                'id'          => $this->id,
50                'type'        => $this->type,
51                'reason'      => $this->reason,
52            ];
53        };
54    }
55}