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 --}}