Files
ploi-core/app/Http/Controllers/Admin/SynchronizeProviderController.php
2021-09-23 08:27:27 +02:00

57 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Models\Provider;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class SynchronizeProviderController extends Controller
{
public function index()
{
if ($this->isDemo()) {
return redirect('/')->with('info', __('This feature is not available in demo mode.'));
}
$availableProviders = $this->getPloi()->user()->serverProviders()->getData();
$currentProviders = Provider::query()
->whereNotIn('id', array_keys((array)$availableProviders))
->get();
return inertia('Admin/Services/Providers', [
'availableProviders' => $availableProviders,
'currentProviders' => $currentProviders
]);
}
public function synchronize(Request $request, $providerId)
{
$ploiProvider = $this->getPloi()->user()->serverProviders($providerId)->getData();
$provider = Provider::updateOrCreate([
'ploi_id' => $ploiProvider->id,
], [
'label' => $ploiProvider->label,
'name' => $ploiProvider->name
]);
foreach ($ploiProvider->provider->plans as $plan) {
$provider->plans()->updateOrCreate([
'plan_id' => $plan->id
], [
'label' => $plan->name,
]);
}
foreach ($ploiProvider->provider->regions as $region) {
$provider->regions()->updateOrCreate([
'region_id' => $region->id
], [
'label' => $region->name,
]);
}
}
}