diff --git a/app/Http/Controllers/Admin/SyncController.php b/app/Http/Controllers/Admin/SyncController.php index 82b0f8a..807be56 100644 --- a/app/Http/Controllers/Admin/SyncController.php +++ b/app/Http/Controllers/Admin/SyncController.php @@ -50,6 +50,41 @@ class SyncController extends Controller return view('settings.sync', compact('baseUrl', 'savedToken', 'hasToken', 'studentCount', 'ejurnalToken', 'hasEjurnalToken')); } + public function testKesiswaanConnection(Request $request): \Illuminate\Http\JsonResponse + { + $url = $request->input('base_url', Setting::getValue('kesiswaan_base_url', '')); + $token = $request->input('token', Setting::getValue('kesiswaan_token', '')); + + if (empty($url) || empty($token)) { + return response()->json(['success' => false, 'message' => 'URL atau token belum diisi.'], 422); + } + + try { + $response = \Illuminate\Support\Facades\Http::acceptJson() + ->withToken($token) + ->timeout(10) + ->get(rtrim($url, '/') . '/api/integration/students?per_page=1'); + + if ($response->successful()) { + $data = $response->json(); + $count = $data['meta']['total'] ?? count($data['data'] ?? []); + return response()->json([ + 'success' => true, + 'message' => 'Koneksi berhasil.', + 'data' => [ + 'students' => $count, + ], + ]); + } elseif ($response->status() === 401) { + return response()->json(['success' => false, 'message' => 'Token tidak valid (401).'], 422); + } else { + return response()->json(['success' => false, 'message' => 'Respon server: ' . $response->status()], 422); + } + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => 'Tidak dapat terhubung: ' . $e->getMessage()], 422); + } + } + public function syncNow(Request $request): RedirectResponse { $validated = $request->validate([ diff --git a/resources/views/settings/sync.blade.php b/resources/views/settings/sync.blade.php index ccfae55..e30ca98 100644 --- a/resources/views/settings/sync.blade.php +++ b/resources/views/settings/sync.blade.php @@ -29,30 +29,28 @@ @endif - {{-- Token --}} + {{-- Token display --}}
-
- - @if($hasToken) - - @endif -
- @error('token')

{{ $message }}

@enderror @if($hasToken) +
+ {{ $savedToken }} + +
+

- Token sudah tersimpan. Klik "Ganti" untuk memperbarui. + Token tersimpan. Ganti dengan mengisi form di bawah jika diperlukan.

@else -

Token didapatkan dari menu Pengaturan → Sync Tokens di Database Kesiswaan.

+ +

Token didapatkan dari menu Pengaturan Database Kesiswaan.

@endif
@@ -68,6 +66,26 @@ @endif + {{-- Status + Test Connection --}} + @if($hasToken && $baseUrl) +
+
+
+
+ + Belum dites +
+

Klik "Test Koneksi" untuk verifikasi.

+
+ +
+
+ @endif + {{-- Tombol --}}