File manager - Edit - /var/www/html/spdc/api/app/Http/Resources/ScaleAgendaResource.php
Back
<?php namespace App\Http\Resources; use App\Enums\ScaleType; use App\Models\ScaleTeam; use Illuminate\Support\Arr; use App\Models\ScaleFunction; use Illuminate\Support\Facades\DB; use Illuminate\Http\Resources\Json\JsonResource; class ScaleAgendaResource extends JsonResource { /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable */ public function toArray($request) { $agenda = []; $users = []; $usersInfo = []; foreach($this->days as $day) { $users = [ ...$users, ...$day->members()->pluck('scale_members.user_id')->toArray() ]; } $users = array_unique($users); sort($users); $filters = ''; // like[0]=name,meh&like[1]=username,dar for($i = 0; $i < count($users); $i++) { if ($i == 0) { $filters = "?like[$i]=id," . $users[$i]; } else { $filters .= "&like[$i]=id," . $users[$i]; } } $url = env('AUTH_SERVICE_URL') . '/api/user' . $filters . '&without_paginate=1'; $usersResponse = authServiceClient('get', $url, null, [ 'Authorization' => 'Bearer ' . authLogin()['access_token'] ]); if ($usersResponse->successful()) { $usersInfo = $usersResponse->json()['data']; } /** * nome * matricula * departamento * document * id */ foreach($this->days as $day) { $data['day'] = $day->day; $data['team'] = ''; $data['agents'] = []; if ($day->members()->exists()) { $teams = $day->members[0]?->teams()->pluck('scale_team_scale_member.scale_team_id')->toArray(); $teamId = count($teams) > 0 ? $teams[0] : null; if (isset($teamId)) { $team = ScaleTeam::findOrFail($teamId); $data['team'] = [ 'id' => $team->id, 'name' => $team->name ]; } } foreach($day->members as $member) { $userExists = array_filter($data['agents'], function ($agent) use ($member) { return $agent['user']['id'] === $member->user_id; }); if (empty($userExists)) { if ($member->teams()->exists()) { $functionId = $member->teams[0]?->pivot?->scale_function_id; if (isset($functionId)) { $function = ScaleFunction::findOrFail($functionId); } } $userData = Arr::first($usersInfo, function (array $user, int $key) use ($member) { return $user['id'] == $member->user_id; }); if (isset($userData)) { $userDepartments = DB::table('department_user') ->where('user_id', $userData['id']) ->get() ->pluck('department_id') ->toArray(); $departmentsData = \App\Models\Department::select('id', 'name')->whereIn('id', $userDepartments)->get()->toArray(); $data['agents'][] = [ 'function' => [ 'id' => isset($function) ? $function?->id : null, 'name' => isset($function) ? $function?->name : null ], 'user' => [ 'id' => $userData['id'], 'name' => $userData['name'], 'document' => $userData['document'], 'registration' => $userData['registration'], 'scale_department' => [ 'id' => $this->department?->id, 'name' => $this->department?->name ], 'departments' => $departmentsData ], 'scale_member_id' => $member?->id, 'scale_day_id' => $day?->id, 'scale_function_id' => isset($function) ? $function?->id : null, 'scale_team_id' => isset($team) ? $team?->id : null ]; } } } $agenda[] = $data; } return $agenda; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings