Files
portal-api/app/View/Components/Module/OsServerVersion.php
T
2026-01-17 11:27:54 +07:00

53 lines
1.4 KiB
PHP

<?php
namespace App\View\Components\Module;
use App\Http\Services\vCenter;
use App\Repositories\vCenter\vCenterRepositoryInterface;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class OsServerVersion extends Component
{
public function __construct(
public vCenter $vCenter,
public vCenterRepositoryInterface $vCenterRepository,
public $model = null
) {
}
public function render(): View|Closure|string
{
$versions = $this->fetchVersions();
return view('components.module.os-server-version', compact('versions'));
}
protected function fetchVersions()
{
$vCenter = $this->model?->osGroup?->host?->datacenter?->vCenter;
if (!$vCenter || !$vCenter->host) {
return null;
}
$this->vCenter->token = $vCenter->token ?? '';
$this->vCenter->apiUri = $vCenter->host ?? '';
$templateId = $this->model?->osGroup?->host?->template;
$versions = $this->vCenter->getAllVersion($templateId);
if ($versions === "Login_Again") {
$token = $this->vCenter->loginServer($vCenter);
if ($token) {
$this->vCenterRepository->update($vCenter->id, ['token' => $token]);
$this->vCenter->token = $token;
$versions = $this->vCenter->getAllVersion($templateId);
}
}
return $versions;
}
}