47 lines
1.7 KiB
PHP
47 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Resources\SiswaResource;
|
|
use App\Models\Devices;
|
|
use App\Models\Siswa;
|
|
use Illuminate\Http\Request;
|
|
|
|
class DeviceStudentController extends Controller
|
|
{
|
|
public function index(Devices $device)
|
|
{
|
|
// Eager load relasi 'kelas' untuk memastikan data tersedia.
|
|
// Ini akan mencegah error jika relasi belum didefinisikan di model.
|
|
// Jika Anda melihat error di sini, berarti relasi di model Devices salah.
|
|
$device->loadMissing('kelas');
|
|
|
|
// Jika device tidak terhubung dengan kelas, kembalikan pesan error yang jelas.
|
|
if (!$device->kelas) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Device ini tidak terhubung dengan kelas manapun.'
|
|
], 404);
|
|
}
|
|
|
|
// Ambil semua siswa dari kelas yang sama dengan device tersebut
|
|
// dan pastikan kita juga memuat relasi 'fotos' untuk setiap siswa.
|
|
$students = Siswa::where('id_kelas', $device->id_kelas)
|
|
->with('fotos') // Eager load relasi 'fotos' dari model Siswa
|
|
->get();
|
|
|
|
// Kembalikan data siswa menggunakan SiswaResource untuk format yang rapi.
|
|
return SiswaResource::collection($students)
|
|
->additional([
|
|
'success' => true,
|
|
'message' => 'Berhasil mengambil data siswa untuk device ' . $device->nama_device,
|
|
'device' => [
|
|
'id' => $device->id,
|
|
'nama' => $device->nama_device,
|
|
'kelas' => $device->kelas->nama_kelas
|
|
]
|
|
]);
|
|
}
|
|
}
|