File manager - Edit - /var/www/html/spdc/api/app/Http/Services/OptionService.php
Back
<?php namespace App\Http\Services; use App\Models\User; use App\Models\Scale; use App\Models\ScaleMember; use Illuminate\Http\Request; use App\Models\ExternalAgent; use App\Models\ScaleFunction; use App\Models\OccurrencyType; use Illuminate\Support\Carbon; use App\Enums\ScheduleAgentType; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; use App\Classes\BaseServiceResponse; use App\Enums\OccurrencyScriptureType; use Illuminate\Database\Eloquent\Model; class OptionService extends BaseService { public function getOptions(string $model, Request|null $request = null): BaseServiceResponse { if (!is_subclass_of($model, Model::class)) { throw new \InvalidArgumentException('Invalid model class provided.'); } $options = $model::select( 'id as value', 'name as text' ); if ($model === OccurrencyType::class) { $options = $options->where('enable', true); if (isset($request->category_id)) { $options = $options->whereRelation('categories', 'category_occurrency_type.category_id', $request->category_id); } if (isset($request->with_category)) { $options = []; $occurrencyTypes = $model::all(); foreach ($occurrencyTypes as $ot) { foreach($ot->categories as $c) { $options[] = [ 'value' => $ot->id, 'text' => $ot->name, 'category_id' => $c->id ]; } } return $this->response($options); } } $options = $options->get(); return $this->response($options); } public function getScriptureTypesOptions(): BaseServiceResponse { $options = []; $array = getEnumValuesToArray(OccurrencyScriptureType::cases()); foreach($array as $item) { $options[] = ['value' => $item, 'text' => $item]; } return $this->response($options); } public function getInternalAgentsOptions(Request $request): BaseServiceResponse { $usersFromScaleFunction = DB::table('internal_agent_scale_function') ->where('scale_function_id', $request->scale_function_id) ->get() ->pluck('user_id') ->toArray(); $usersFromDepartment = DB::table('department_user') ->where('department_id', $request->department_id) ->get() ->pluck('user_id') ->toArray(); $users = array_intersect($usersFromScaleFunction, $usersFromDepartment); // buscar dados desses users em especifico if (count($users) == 0) { return $this->response([]); } $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; // dd($url); $usersResponse = authServiceClient('get', $url, null, [ 'Authorization' => 'Bearer ' . authLogin()['access_token'] ]); // dd($usersResponse->json()); $options = []; foreach($usersResponse->json()['data']['data'] as $user) { $departments = DB::table('department_user') ->where('user_id', $user['id']) ->get(); // dd($user); $options[] = [ 'id' => $user['id'], 'name' => $user['name'], 'document' => $user['document'], 'registration' => $user['registration'], 'departments' => $departments ]; } return $this->response($options); } public function getScaleFunctionsOptions(Request $request): BaseServiceResponse { $options = ScaleFunction::select( 'id as value', 'name as text' )->where('enable', $request->input('enable', 1)); if ($request->has('type')) { $options = $options->where('type', $request->type); } $options = $options->get(); return $this->response($options); } public function getAvailableScales(): BaseServiceResponse { $options = Scale::select( 'id as value', DB::raw('CONCAT(LPAD(month, 2, "0"), "/", year) as text') ) ->orderBy('year', 'desc') ->orderBy('month', 'desc') ->get(); return $this->response($options); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings