checkpion
This commit is contained in:
parent
9f467b7dab
commit
d49d88e122
|
|
@ -8,6 +8,7 @@
|
||||||
use App\Models\HasilKarya;
|
use App\Models\HasilKarya;
|
||||||
use App\Models\Penjemputan;
|
use App\Models\Penjemputan;
|
||||||
use App\Models\PenilaianCeklis;
|
use App\Models\PenilaianCeklis;
|
||||||
|
use App\Models\Siswa;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class GuruController extends Controller
|
class GuruController extends Controller
|
||||||
|
|
@ -31,6 +32,13 @@ public function storeAnekdot(Request $request)
|
||||||
return response()->json(['success' => true, 'message' => 'Anekdot berhasil disimpan']);
|
return response()->json(['success' => true, 'message' => 'Anekdot berhasil disimpan']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ambil Riwayat Anekdot yang dibuat oleh Guru yang login
|
||||||
|
public function getAnekdot(Request $request)
|
||||||
|
{
|
||||||
|
$data = Anekdot::with('siswa')->where('guru_id', $request->user()->id)->latest()->get();
|
||||||
|
return response()->json(['success' => true, 'data' => $data]);
|
||||||
|
}
|
||||||
|
|
||||||
// 2. Input Hasil Karya (Upload Foto)
|
// 2. Input Hasil Karya (Upload Foto)
|
||||||
public function storeKarya(Request $request)
|
public function storeKarya(Request $request)
|
||||||
{
|
{
|
||||||
|
|
@ -112,4 +120,38 @@ public function storePenjemputan(Request $request)
|
||||||
|
|
||||||
return response()->json(['success' => true, 'message' => 'Data penjemputan tercatat']);
|
return response()->json(['success' => true, 'message' => 'Data penjemputan tercatat']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4. Scan QR Penjemputan
|
||||||
|
public function scanJemput(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'qr_code' => 'required',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Cari siswa berdasarkan qr_code (Biasanya NIS atau ID Siswa)
|
||||||
|
$siswa = Siswa::where('nis', $request->qr_code)
|
||||||
|
->orWhere('id', $request->qr_code)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$siswa) {
|
||||||
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'QR Code tidak valid! Data siswa tidak ditemukan.'
|
||||||
|
], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Catat Penjemputan
|
||||||
|
// Kita bisa atur default nama penjemput "Orang Tua/Wali"
|
||||||
|
Penjemputan::create([
|
||||||
|
'siswa_id' => $siswa->id,
|
||||||
|
'nama_penjemput' => 'Orang Tua / Wali',
|
||||||
|
'status_hubungan' => 'Orang Tua',
|
||||||
|
'waktu_jemput' => now(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Berhasil mencatat penjemputan untuk ' . $siswa->nama_lengkap
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -9,12 +9,11 @@ class PengumumanController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
// Sementara kita return array kosong dulu atau contoh data
|
$data = \App\Models\Pengumuman::where('status', true)->latest()->get();
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'data' => [
|
'data' => $data
|
||||||
['judul' => 'Libur Nasional', 'isi' => 'Besok sekolah libur ya bunda.'],
|
|
||||||
]
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -19,7 +19,7 @@ public function index()
|
||||||
if ($user->role == 'guru') {
|
if ($user->role == 'guru') {
|
||||||
// --- JIKA GURU ---
|
// --- JIKA GURU ---
|
||||||
// Ambil SEMUA data siswa (untuk menu "Data Kelas")
|
// Ambil SEMUA data siswa (untuk menu "Data Kelas")
|
||||||
$siswa = Siswa::with(['wali_murid', 'kelompok'])->latest()->get();
|
$siswa = Siswa::with(['wali_murid', 'kelompok', 'anekdots'])->latest()->get();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// --- JIKA WALI MURID ---
|
// --- JIKA WALI MURID ---
|
||||||
|
|
|
||||||
|
|
@ -22,4 +22,9 @@ class Anekdot extends Model
|
||||||
'analisis_capaian',
|
'analisis_capaian',
|
||||||
'foto',
|
'foto',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function siswa()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Siswa::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,15 +33,15 @@
|
||||||
<tr class="hover:bg-blue-50 transition duration-150 group">
|
<tr class="hover:bg-blue-50 transition duration-150 group">
|
||||||
<td class="p-4 whitespace-nowrap">
|
<td class="p-4 whitespace-nowrap">
|
||||||
<div class="text-gray-800 font-semibold">
|
<div class="text-gray-800 font-semibold">
|
||||||
{{ \Carbon\Carbon::parse($log->waktu_jemput)->format('H:i') }} WIB
|
{{ \Carbon\Carbon::parse($log->waktu_jemput)->timezone('Asia/Jakarta')->format('H:i') }} WIB
|
||||||
</div>
|
</div>
|
||||||
<div class="text-xs text-gray-500">
|
<div class="text-xs text-gray-500">
|
||||||
{{ \Carbon\Carbon::parse($log->waktu_jemput)->format('d M Y') }}
|
{{ \Carbon\Carbon::parse($log->waktu_jemput)->timezone('Asia/Jakarta')->format('d M Y') }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="p-4">
|
<td class="p-4">
|
||||||
<div class="font-bold text-gray-800">{{ $log->siswa->nama ?? 'Siswa Terhapus' }}</div>
|
<div class="font-bold text-gray-800">{{ $log->siswa->nama_siswa ?? 'Siswa Terhapus' }}</div>
|
||||||
<div class="text-xs text-gray-500">NIS: {{ $log->siswa->nis ?? '-' }}</div>
|
<div class="text-xs text-gray-500">NIS: {{ $log->siswa->nis ?? '-' }}</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
|
|
||||||
// --- KHUSUS GURU (Input Data) ---
|
// --- KHUSUS GURU (Input Data) ---
|
||||||
// Nanti kalau Guru login di HP untuk input data:
|
// Nanti kalau Guru login di HP untuk input data:
|
||||||
|
Route::get('/guru/anekdot', [GuruController::class, 'getAnekdot']); // TAMBAHAN INI
|
||||||
Route::post('/guru/anekdot', [GuruController::class, 'storeAnekdot']);
|
Route::post('/guru/anekdot', [GuruController::class, 'storeAnekdot']);
|
||||||
Route::post('/guru/karya', [GuruController::class, 'storeKarya']);
|
Route::post('/guru/karya', [GuruController::class, 'storeKarya']);
|
||||||
Route::post('/guru/penjemputan', [GuruController::class, 'storePenjemputan']);
|
Route::post('/guru/penjemputan', [GuruController::class, 'storePenjemputan']);
|
||||||
|
|
@ -55,6 +56,7 @@
|
||||||
|
|
||||||
// RUTE PENJEMPUTAN BARU
|
// RUTE PENJEMPUTAN BARU
|
||||||
Route::post('/penjemputan', [PenjemputanController::class, 'store']);
|
Route::post('/penjemputan', [PenjemputanController::class, 'store']);
|
||||||
|
Route::post('/guru/scan-jemput', [GuruController::class, 'scanJemput']);
|
||||||
|
|
||||||
Route::get('/rute-astar', [AStarController::class, 'cariRute']);
|
Route::get('/rute-astar', [AStarController::class, 'cariRute']);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue