- Rename VICON_TOKEN → VIKON_API_TOKEN in .env and config - Add ViconApiToken service reading from integration_credentials table - Update 3 Vicon services to use ViconApiToken instead of config() - Config/env kept as fallback for clean migration
93 lines
2.8 KiB
PHP
Executable File
93 lines
2.8 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Services\Vicon\DirectionStudy;
|
|
|
|
use App\Services\Vicon\ViconApiToken;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class DirectionStudyService
|
|
{
|
|
public function __construct(
|
|
private readonly ViconApiToken $viconApiToken,
|
|
) {}
|
|
const EDU_LEVELS = [1, 2, 3, 4, 5, 6];
|
|
|
|
public function getAllNaprsUuid() : array
|
|
{
|
|
$naprs = [];
|
|
$naprsUuid = [];
|
|
foreach (self::EDU_LEVELS as $level) {
|
|
$data = $this->getNaprs($level);
|
|
$naprs = array_merge($naprs, $data->rows);
|
|
}
|
|
foreach ($naprs as $napr) {
|
|
$naprUuid = $napr->uuid;
|
|
array_push($naprsUuid, $naprUuid);
|
|
}
|
|
return $naprsUuid;
|
|
}
|
|
|
|
public function getAllProgramsUuid(): array
|
|
{
|
|
$programs = [];
|
|
$programsUuid = [];
|
|
foreach (self::EDU_LEVELS as $level) {
|
|
$data = $this->getPrograms($level);
|
|
$programs = array_merge($programs, $data->rows);
|
|
}
|
|
foreach ($programs as $program) {
|
|
array_push($programsUuid, $program->uuid);
|
|
}
|
|
return $programsUuid;
|
|
}
|
|
|
|
public function getNaprs(int $edu_level): object
|
|
{
|
|
$data = $this->callAPI("https://db-nica.ru/api/v1/naprs?perPage=200&filter_edu_level=$edu_level", $this->viconApiToken->get());
|
|
return $data;
|
|
}
|
|
|
|
public function getNapr(string $uuid): object
|
|
{
|
|
$data = $this->callAPI("https://db-nica.ru/api/v1/napr/$uuid", $this->viconApiToken->get());
|
|
return $data;
|
|
}
|
|
|
|
public function getPrograms(int $edu_level): object
|
|
{
|
|
$data = $this->callAPI("https://db-nica.ru/api/v1/programs?filter_edu_level=$edu_level&perPage=200", $this->viconApiToken->get());
|
|
return $data;
|
|
}
|
|
|
|
public function getProgram(string $uuid): object
|
|
{
|
|
$data = $this->callAPI("https://db-nica.ru/api/v1/program/$uuid", $this->viconApiToken->get());
|
|
return $data;
|
|
}
|
|
|
|
public function getProgramDocs(string $uuid): object
|
|
{
|
|
$data = $this->callAPI("https://db-nica.ru/api/v1/program/$uuid/edu-docs?perPage=200", $this->viconApiToken->get());
|
|
return $data;
|
|
}
|
|
|
|
private function callAPI(string $endpoint, string $token = null): object
|
|
{
|
|
try {
|
|
$response = Http::withToken($token)->get($endpoint);
|
|
$data = $response->object();
|
|
|
|
// Проверяем наличие сообщения об ошибке в ответе
|
|
if (isset($data->message)) {
|
|
throw new \Exception($data->message);
|
|
}
|
|
|
|
return $data;
|
|
} catch (\Exception $e) {
|
|
Log::channel('app')->error('API call failed', ['error' => $e->getMessage()]);
|
|
throw $e; // Перебрасываем исключение
|
|
}
|
|
}
|
|
|
|
} |