$request->email, 'password' => $request->password])) { $user = Auth::user(); // Cek role: Hanya Guru dan Wali yang boleh login di HP if ($user->role !== 'guru' && $user->role !== 'wali') { return response()->json([ 'success' => false, 'message' => 'Maaf, Admin hanya bisa login di Website/Laptop.' ], 403); } // Buat Token $token = $user->createToken('MobileAppToken')->plainTextToken; return response()->json([ 'success' => true, 'message' => 'Login Berhasil', 'user' => $user, // Disini ada info 'role' (guru/wali) 'token' => $token, ], 200); } return response()->json(['success' => false, 'message' => 'Email atau Password Salah'], 401); } public function logout(Request $request) { $request->user()->currentAccessToken()->delete(); return response()->json(['success' => true, 'message' => 'Logout Berhasil']); } // ========================================== // 2. FITUR KHUSUS GURU 👩‍🏫 // ========================================== // Ambil Daftar Siswa (Untuk dipilih saat input nilai) public function getSiswa(Request $request) { // Opsional: Bisa difilter berdasarkan kelas guru tersebut $siswas = Siswa::orderBy('nama', 'asc')->get(); return response()->json(['success' => true, 'data' => $siswas]); } // Input Anekdot public function storeAnekdot(Request $request) { $validator = Validator::make($request->all(), [ 'siswa_id' => 'required', 'tanggal' => 'required|date', 'kejadian_teramati' => 'required', 'analisis_capaian' => 'required', ]); if ($validator->fails()) return response()->json($validator->errors(), 400); Anekdot::create($request->all()); return response()->json(['success' => true, 'message' => 'Anekdot berhasil disimpan']); } // Input Hasil Karya (Upload Foto) public function storeKarya(Request $request) { $validator = Validator::make($request->all(), [ 'siswa_id' => 'required', 'tanggal' => 'required|date', 'foto' => 'required|image', 'analisis_capaian' => 'required', ]); if ($validator->fails()) return response()->json($validator->errors(), 400); // Simpan foto ke folder public/storage/karya $path = $request->file('foto')->store('karya', 'public'); HasilKarya::create([ 'siswa_id' => $request->siswa_id, 'tanggal' => $request->tanggal, 'foto' => $path, 'deskripsi_foto' => $request->deskripsi_foto, 'analisis_capaian' => $request->analisis_capaian, ]); return response()->json(['success' => true, 'message' => 'Karya berhasil disimpan']); } // Scan QR Code (Input Penjemputan) public function storePenjemputan(Request $request) { $validator = Validator::make($request->all(), [ 'siswa_id' => 'required', // Didapat dari hasil Scan QR 'nama_penjemput' => 'required', 'status_hubungan' => 'required', 'foto' => 'nullable|image', ]); if ($validator->fails()) return response()->json($validator->errors(), 400); $pathFoto = null; if ($request->hasFile('foto')) { $pathFoto = $request->file('foto')->store('penjemputan', 'public'); } Penjemputan::create([ 'siswa_id' => $request->siswa_id, 'nama_penjemput' => $request->nama_penjemput, 'status_hubungan' => $request->status_hubungan, 'foto_bukti' => $pathFoto, 'waktu_jemput' => now(), ]); return response()->json(['success' => true, 'message' => 'Data penjemputan tercatat']); } // ========================================== // 3. FITUR KHUSUS WALI MURID 👪 // ========================================== // Ambil Data Anak Saya (Berdasarkan Login Wali) public function getAnakSaya(Request $request) { $user = Auth::user(); // Asumsi: Di tabel siswas ada kolom 'user_id' yang nyambung ke Wali // Atau tabel users punya relasi ke siswa. // Kita pakai cara paling umum: Cari siswa yang wali_id nya = ID User login // Cek dulu apakah di tabel siswa ada kolom wali_id atau user_id? // Kalau belum ada relasi, kita ambil dummy dulu atau cari berdasarkan nama (sementara) // SEMENTARA: Kita ambil 1 siswa pertama sebagai contoh (Nanti kita perbaiki relasinya) $anak = Siswa::first(); return response()->json(['success' => true, 'data' => $anak]); } // Lihat Rapot Anak Saya public function getRapotAnak(Request $request) { // Ambil ID siswa dari request (dikirim dari HP) $siswa_id = $request->siswa_id; $anekdots = Anekdot::where('siswa_id', $siswa_id)->orderBy('tanggal', 'desc')->get(); $karyas = HasilKarya::where('siswa_id', $siswa_id)->orderBy('tanggal', 'desc')->get(); // $ceklis = ... (Menyusul) return response()->json([ 'success' => true, 'data' => [ 'anekdots' => $anekdots, 'karyas' => $karyas, ] ]); } }