diff --git a/WhatsApp Image 2026-02-04 at 19.00.08 (1).jpeg b/WhatsApp Image 2026-02-04 at 19.00.08 (1).jpeg new file mode 100644 index 0000000..427d727 Binary files /dev/null and b/WhatsApp Image 2026-02-04 at 19.00.08 (1).jpeg differ diff --git a/WhatsApp Image 2026-02-04 at 19.00.08.jpeg b/WhatsApp Image 2026-02-04 at 19.00.08.jpeg new file mode 100644 index 0000000..470a1c0 Binary files /dev/null and b/WhatsApp Image 2026-02-04 at 19.00.08.jpeg differ diff --git a/app/Http/Controllers/Admin/GuruController.php b/app/Http/Controllers/Admin/GuruController.php index 85263fe..3e323b0 100644 --- a/app/Http/Controllers/Admin/GuruController.php +++ b/app/Http/Controllers/Admin/GuruController.php @@ -10,8 +10,8 @@ class GuruController extends Controller { public function index() { - $gurus = Guru::orderBy('created_at', 'desc')->get(); - return view('admin.guru.index', compact('gurus')); + $gurus = Guru::orderBy('created_at', 'desc')->get(); + return view('admin.guru.index', compact('gurus')); } public function create() @@ -21,11 +21,12 @@ public function create() public function store(Request $request) { + // Validasi disesuaikan dengan kolom database $request->validate([ - 'nama_guru' => 'required|string|max:100', - 'email' => 'nullable|email|max:100', - 'no_hp' => 'nullable|string|max:20', - 'bidang' => 'nullable|string|max:100', + 'nama_guru' => 'required|string|max:100', + 'email' => 'nullable|email|max:100', + 'no_hp' => 'nullable|string|max:20', + 'jenis_guru' => 'required|in:guru_kelas,shadow_abk', // UBAH 'bidang' JADI 'jenis_guru' ]); Guru::create($request->all()); @@ -41,10 +42,10 @@ public function edit(Guru $guru) public function update(Request $request, Guru $guru) { $request->validate([ - 'nama_guru' => 'required|string|max:100', - 'email' => 'nullable|email|max:100', - 'no_hp' => 'nullable|string|max:20', - 'bidang' => 'nullable|string|max:100', + 'nama_guru' => 'required|string|max:100', + 'email' => 'nullable|email|max:100', + 'no_hp' => 'nullable|string|max:20', + 'jenis_guru' => 'required|in:guru_kelas,shadow_abk', ]); $guru->update($request->all()); diff --git a/app/Http/Controllers/Admin/SiswaController.php b/app/Http/Controllers/Admin/SiswaController.php index 9bc3007..f54e845 100644 --- a/app/Http/Controllers/Admin/SiswaController.php +++ b/app/Http/Controllers/Admin/SiswaController.php @@ -4,91 +4,68 @@ use App\Http\Controllers\Controller; use App\Models\Siswa; -use App\Models\Kelas; use App\Models\WaliMurid; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Storage; class SiswaController extends Controller { public function index() { - $siswas = Siswa::with(['waliMurid', 'kelas'])->orderBy('created_at', 'desc')->get(); + // Ambil data siswa + data walinya (supaya tidak berat query-nya) + $siswas = Siswa::with('wali')->latest()->get(); return view('admin.siswa.index', compact('siswas')); } public function create() { - $kelas = Kelas::all(); - $wali_murids = WaliMurid::all(); - return view('admin.siswa.create', compact('kelas', 'wali_murids')); + // Ambil data wali untuk dropdown pilihan + $walis = WaliMurid::orderBy('nama_wali', 'asc')->get(); + return view('admin.siswa.create', compact('walis')); } - + public function store(Request $request) - { - $validated = $request->validate([ - 'nama' => 'required|string|max:255', - 'tempat_lahir' => 'nullable|string|max:255', - 'tanggal_lahir' => 'nullable|date', - 'alamat' => 'nullable|string', - 'kelas_id' => 'nullable|exists:kelas,id', - 'wali_id' => 'nullable|exists:wali_murids,id', - 'keterangan' => 'nullable|string', - 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', - ]); - - if ($request->hasFile('foto')) { - $validated['foto'] = $request->file('foto')->store('fotosiswa', 'public'); - } - - Siswa::create($validated); - - return redirect()->route('siswa.index')->with('success', 'Data peserta didik berhasil ditambahkan.'); - } - - public function edit(Siswa $siswa) - { - $kelas = Kelas::all(); - $wali_murids = WaliMurid::all(); - - return view('admin.siswa.edit', compact('siswa', 'kelas', 'wali_murids')); - } - - public function update(Request $request, Siswa $siswa) { $request->validate([ - 'nama' => 'required|string|max:255', - 'tempat_lahir' => 'nullable|string|max:100', - 'tanggal_lahir' => 'nullable|date', - 'kelas_id' => 'nullable|exists:kelas,id', - 'wali_id' => 'nullable|exists:wali_murids,id', - 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', + 'nama_siswa' => 'required|string|max:100', + 'wali_id' => 'required|exists:wali_murids,id', // Wajib pilih wali yg valid + 'jenis_kelamin' => 'required|in:L,P', + 'tempat_lahir' => 'required|string', + 'tanggal_lahir' => 'required|date', ]); - - // simpan foto baru kalau diupload - if ($request->hasFile('foto')) { - $fotoPath = $request->file('foto')->store('foto_siswa', 'public'); - $siswa->foto = $fotoPath; - } - - // update data siswa - $siswa->update([ - 'nama' => $request->nama, - 'tempat_lahir' => $request->tempat_lahir, - 'tanggal_lahir' => $request->tanggal_lahir, - 'kelas_id' => $request->kelas_id, - 'wali_id' => $request->wali_id, - ]); - - return redirect()->route('siswa.index')->with('success', 'Data siswa berhasil diperbarui.'); + + Siswa::create($request->all()); + + return redirect()->route('siswa.index')->with('success', 'Data Siswa berhasil ditambahkan.'); } - public function destroy(Siswa $siswa) + public function edit($id) { - if ($siswa->foto && Storage::disk('public')->exists($siswa->foto)) { - Storage::disk('public')->delete($siswa->foto); - } - $siswa->delete(); - return redirect()->route('siswa.index')->with('success','Siswa berhasil dihapus'); + $siswa = Siswa::findOrFail($id); + $walis = WaliMurid::orderBy('nama_wali', 'asc')->get(); + return view('admin.siswa.edit', compact('siswa', 'walis')); } -} + + public function update(Request $request, $id) + { + $siswa = Siswa::findOrFail($id); + + $request->validate([ + 'nama_siswa' => 'required|string|max:100', + 'wali_id' => 'required|exists:wali_murids,id', + 'jenis_kelamin' => 'required|in:L,P', + 'tempat_lahir' => 'required|string', + 'tanggal_lahir' => 'required|date', + ]); + + $siswa->update($request->all()); + + return redirect()->route('siswa.index')->with('success', 'Data Siswa berhasil diperbarui.'); + } + + public function destroy($id) + { + $siswa = Siswa::findOrFail($id); + $siswa->delete(); + return redirect()->route('siswa.index')->with('success', 'Data Siswa berhasil dihapus.'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/WaliMuridController.php b/app/Http/Controllers/Admin/WaliMuridController.php index 59657e4..e4fe4fb 100644 --- a/app/Http/Controllers/Admin/WaliMuridController.php +++ b/app/Http/Controllers/Admin/WaliMuridController.php @@ -10,51 +10,66 @@ class WaliMuridController extends Controller { public function index() { - $wali_murids = WaliMurid::orderBy('created_at', 'desc')->get(); - return view('admin.wali_murid.index', compact('wali_murids')); + $walis = WaliMurid::latest()->get(); + return view('admin.wali.index', compact('walis')); } public function create() { - return view('admin.wali_murid.create'); + return view('admin.wali.create'); } public function store(Request $request) { $request->validate([ 'nama_wali' => 'required|string|max:100', - 'email' => 'nullable|email|max:100', - 'no_hp' => 'nullable|string|max:20', - 'alamat' => 'nullable|string|max:255', + 'no_hp' => 'nullable|string|max:20', + 'alamat' => 'nullable|string', ]); - - WaliMurid::create($request->only(['nama_wali', 'email', 'no_hp', 'alamat'])); - - return redirect()->route('wali-murid.index')->with('success', 'Data wali murid berhasil ditambahkan.'); - } - public function edit(WaliMurid $wali_murid) - { - return view('admin.wali_murid.edit', compact('wali_murid')); + + WaliMurid::create($request->all()); + + return redirect()->route('wali-murid.index')->with('success', 'Data Wali Murid berhasil ditambahkan.'); } - public function update(Request $request, WaliMurid $wali_murid) + public function edit($id) { + $wali = WaliMurid::findOrFail($id); + return view('admin.wali.edit', compact('wali')); + } + + public function update(Request $request, $id) + { + $wali = WaliMurid::findOrFail($id); + $request->validate([ 'nama_wali' => 'required|string|max:100', - 'email' => 'nullable|email|max:100', - 'no_hp' => 'nullable|string|max:20', - 'alamat' => 'nullable|string|max:255', + 'no_hp' => 'nullable|string|max:20', + 'alamat' => 'nullable|string', ]); - $wali_murid->update($request->all()); + $wali->update($request->all()); - return redirect()->route('wali-murid.index')->with('success', 'Data wali murid berhasil diperbarui.'); + return redirect()->route('wali-murid.index')->with('success', 'Data Wali Murid berhasil diperbarui.'); } - public function destroy(WaliMurid $wali_murid) + public function destroy($id) { - $wali_murid->delete(); + $wali = WaliMurid::findOrFail($id); - return redirect()->route('wali-murid.index')->with('success', 'Data wali murid berhasil dihapus.'); + // --- LOGIC AMAN (Mencegah Error Database) --- + // Cek apakah wali ini punya anak didik (siswa) + // Pastikan di Model WaliMurid sudah ada relasi: public function siswas() + $jumlah_siswa = $wali->siswas()->count(); + + if ($jumlah_siswa > 0) { + // Jika masih punya siswa, BATALKAN hapus & beri pesan Error + return redirect()->route('wali-murid.index')->with('error', '❌ Gagal Hapus! Wali ini masih terhubung dengan ' . $jumlah_siswa . ' data Siswa. Hapus atau pindahkan data siswanya dulu.'); + } + + // Jika tidak punya siswa, baru boleh dihapus + $wali->delete(); + + return redirect()->route('wali-murid.index')->with('success', '✅ Data Wali Murid berhasil dihapus.'); } -} +} \ No newline at end of file diff --git a/app/Models/Guru.php b/app/Models/Guru.php index c83a833..540fb63 100644 --- a/app/Models/Guru.php +++ b/app/Models/Guru.php @@ -9,12 +9,11 @@ class Guru extends Model { use HasFactory; - // kasih tahu Laravel kalau nama tabelnya "guru", bukan "gurus" - protected $table = 'guru'; + protected $table = 'guru'; // Sesuai DB kamu protected $fillable = [ - 'nama', - 'jenis_guru', + 'nama_guru', // SEBELUMNYA 'nama' (SALAH), HARUS 'nama_guru' + 'jenis_guru', // SEBELUMNYA 'jenis_guru' (SUDAH BENAR TAPI INPUT FORM SALAH) 'no_hp', 'email', 'user_id', diff --git a/app/Models/Siswa.php b/app/Models/Siswa.php index 0f1c600..7592429 100644 --- a/app/Models/Siswa.php +++ b/app/Models/Siswa.php @@ -1,28 +1,29 @@ belongsTo(Kelas::class); - } - - public function waliMurid() + /** + * Relasi: Setiap Siswa PASTI punya satu Wali Murid + */ + public function wali() { return $this->belongsTo(WaliMurid::class, 'wali_id'); } diff --git a/app/Models/WaliMurid.php b/app/Models/WaliMurid.php index 0e0f087..328fed4 100644 --- a/app/Models/WaliMurid.php +++ b/app/Models/WaliMurid.php @@ -9,18 +9,24 @@ class WaliMurid extends Model { use HasFactory; - protected $table = 'wali_murids'; + protected $table = 'wali_murids'; // Default laravel biasanya plural protected $fillable = [ - 'nama_wali', - 'no_hp', - 'email', - 'alamat', 'user_id', + 'nama_wali', // Pastikan kolom di DB 'nama_wali', bukan 'nama' + 'no_hp', + 'alamat', + 'pekerjaan', // Opsional, jaga-jaga kalau butuh ]; public function user() { return $this->belongsTo(User::class); } + + // Relasi ke Siswa (Satu wali bisa punya banyak anak) + public function siswas() + { + return $this->hasMany(Siswa::class, 'wali_id'); + } } \ No newline at end of file diff --git a/database/migrations/2025_09_17_035749_create_wali_murids_table.php b/database/migrations/2025_09_17_035749_create_wali_murids_table.php index 48bb99f..4052db7 100644 --- a/database/migrations/2025_09_17_035749_create_wali_murids_table.php +++ b/database/migrations/2025_09_17_035749_create_wali_murids_table.php @@ -6,25 +6,22 @@ return new class extends Migration { - /** - * Run the migrations. - */ - public function up(): void + public function up() { Schema::create('wali_murids', function (Blueprint $table) { $table->id(); - $table->unsignedBigInteger('user_id'); + $table->foreignId('user_id')->nullable()->constrained('users')->onDelete('set null'); + + $table->string('nama_wali'); // Sesuai PDF "Nama Orang Tua" + $table->string('no_hp')->nullable(); + $table->text('alamat')->nullable(); // Sesuai PDF "Alamat" $table->string('pekerjaan')->nullable(); - $table->string('alamat')->nullable(); - $table->decimal('lokasi_lat', 10, 7)->nullable(); - $table->decimal('lokasi_lng', 10, 7)->nullable(); + $table->timestamps(); - - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); }); } - public function down(): void + public function down() { Schema::dropIfExists('wali_murids'); } diff --git a/database/migrations/2025_09_17_035928_create_gurus_table.php b/database/migrations/2025_09_17_035928_create_gurus_table.php index f0406c5..9957f89 100644 --- a/database/migrations/2025_09_17_035928_create_gurus_table.php +++ b/database/migrations/2025_09_17_035928_create_gurus_table.php @@ -6,24 +6,25 @@ return new class extends Migration { - /** - * Run the migrations. - */ - public function up(): void + public function up() { - Schema::create('guru', function (Blueprint $table) { - $table->id(); - $table->foreignId('user_id')->constrained('users')->cascadeOnDelete(); - $table->string('bidang')->nullable(); - $table->timestamps(); -}); + Schema::create('guru', function (Blueprint $table) { + $table->id(); + $table->foreignId('user_id')->nullable()->constrained('users')->onDelete('set null'); + + $table->string('nama_guru'); + $table->enum('jenis_guru', ['guru_kelas', 'shadow_abk']); + $table->string('nip')->nullable(); + $table->string('no_hp')->nullable(); + $table->string('email')->nullable(); // Wajib ada biar ga error seeder + $table->text('alamat')->nullable(); + + $table->timestamps(); + }); } - /** - * Reverse the migrations. - */ - public function down(): void + public function down() { - Schema::dropIfExists('gurus'); + Schema::dropIfExists('guru'); } -}; +}; \ No newline at end of file diff --git a/database/migrations/2025_09_17_040000_create_siswas_table.php b/database/migrations/2025_09_17_040000_create_siswas_table.php index fd23055..f2c958f 100644 --- a/database/migrations/2025_09_17_040000_create_siswas_table.php +++ b/database/migrations/2025_09_17_040000_create_siswas_table.php @@ -6,31 +6,24 @@ return new class extends Migration { - /** - * Run the migrations. - */ - public function up(): void + public function up() { - Schema::create('siswas', function (Blueprint $table) { - $table->id(); - $table->string('nama'); - $table->string('nis')->unique(); - $table->date('tanggal_lahir'); - $table->unsignedBigInteger('kelas_id'); - $table->unsignedBigInteger('wali_id'); - $table->string('foto')->nullable(); - $table->timestamps(); - - $table->foreign('kelas_id')->references('id')->on('kelas')->onDelete('cascade'); - $table->foreign('wali_id')->references('id')->on('wali_murids')->onDelete('cascade'); -}); + Schema::create('siswas', function (Blueprint $table) { + $table->id(); + $table->foreignId('wali_id')->constrained('wali_murids')->onDelete('cascade'); + + $table->string('nama_siswa'); // Sesuai PDF "Nama Anak" + $table->string('tempat_lahir'); // Sesuai PDF "Tempat" + $table->date('tanggal_lahir'); // Sesuai PDF "Tgl Lahir" + $table->enum('jenis_kelamin', ['L', 'P']); + $table->date('tanggal_masuk')->nullable(); + + $table->timestamps(); + }); } - /** - * Reverse the migrations. - */ - public function down(): void + public function down() { Schema::dropIfExists('siswas'); } -}; +}; \ No newline at end of file diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index bc1f622..c668321 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,15 +2,33 @@ namespace Database\Seeders; -use App\Models\User; use Illuminate\Database\Seeder; +use App\Models\User; +use Illuminate\Support\Facades\Hash; class DatabaseSeeder extends Seeder { + /** + * Seed the application's database. + */ public function run(): void { - $this->call([ - MasterSeeder::class, + // 1. Buat Akun Admin (Supaya kamu bisa Login) + // Kita buat manual di sini biar tidak error pakai seeder lama + User::create([ + 'name' => 'Administrator', + 'email' => 'admin@admin.com', + 'password' => Hash::make('password'), // Password default + 'role' => 'admin', ]); + + // 2. Jalankan Seeder Data Sekolah (Sesuai PDF) + $this->call([ + GuruSeeder::class, // Data Guru (Fixed) + WaliMuridSeeder::class, // Data Wali (Fixed) + SiswaSeeder::class, // Data Siswa (Fixed) + ]); + + // CATATAN: Jangan panggil MasterSeeder lagi karena kodenya usang. } } \ No newline at end of file diff --git a/database/seeders/GuruSeeder.php b/database/seeders/GuruSeeder.php new file mode 100644 index 0000000..cde472d --- /dev/null +++ b/database/seeders/GuruSeeder.php @@ -0,0 +1,36 @@ + 'Ibu. Junita Dhanesti, S.Pd', 'jenis_guru' => 'guru_kelas'], + ['nama_guru' => 'Ibu. Afif Wais Al Qorni, S.Pd.', 'jenis_guru' => 'guru_kelas'], + ['nama_guru' => 'Ibu. Anisa Nur Pratama, S.Psi', 'jenis_guru' => 'guru_kelas'], + + // Guru Shadow ABK + ['nama_guru' => 'Ibu. Ellyse Clara Nargata', 'jenis_guru' => 'shadow_abk'], + ['nama_guru' => 'Ibu. Efa Nur Azizah', 'jenis_guru' => 'shadow_abk'], + ['nama_guru' => 'Ibu. Istik Sundari, S.Pd.', 'jenis_guru' => 'shadow_abk'], + ]; + + foreach ($data as $d) { + DB::table('guru')->insert([ + 'nama_guru' => $d['nama_guru'], + 'jenis_guru' => $d['jenis_guru'], + 'email' => null, + 'no_hp' => '-', + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now(), + ]); + } + } +} \ No newline at end of file diff --git a/database/seeders/SiswaSeeder.php b/database/seeders/SiswaSeeder.php new file mode 100644 index 0000000..ebb7559 --- /dev/null +++ b/database/seeders/SiswaSeeder.php @@ -0,0 +1,43 @@ +first(); + + if ($wali) { + Siswa::create([ + 'wali_id' => $wali->id, + 'nama_siswa' => $ds[0], + 'tempat_lahir' => $ds[2], + 'tanggal_lahir' => $ds[3], + 'jenis_kelamin' => $ds[4], + ]); + } + } + } +} \ No newline at end of file diff --git a/database/seeders/WaliMuridSeeder.php b/database/seeders/WaliMuridSeeder.php new file mode 100644 index 0000000..c0c98d8 --- /dev/null +++ b/database/seeders/WaliMuridSeeder.php @@ -0,0 +1,37 @@ + 'Tomi Puspita Aji', 'alamat' => 'Jl. Ciliwung No. 22 RT 47 RW 15 Taman'], + ['nama' => 'Yonna Setyawan', 'alamat' => 'Jl. Jambu Kembar 1 No. 1 CRT 20 RW 07 Taman Kota Madiun'], + ['nama' => 'Taufiq Rahman Luis', 'alamat' => 'Griya Kencana Wungu Blok C No. 12'], // Asumsi dari data sebelumnya + ['nama' => 'Andika Bayu', 'alamat' => 'Jl. Pilang Mudya 3 / 8'], + ['nama' => 'Masita Sari', 'alamat' => 'Dsn. Butan Rt 035 Rw 005 Ds. Krandegan Kec. Kebonsari'], + ['nama' => 'Ayu Trisnawati', 'alamat' => 'Rt 018 Rw 004 Jl. Remora Mas Blok O No. 7 Perum Telaga Mas'], + ['nama' => 'Alliemsa Anggi Putra', 'alamat' => 'Jl. Panglima Sudirman No. 75 RT 37 RW 12 Taman Kota Madiun'], + ['nama' => 'Renny Wulandari', 'alamat' => 'Rt 033 Rw 001 Jl. Khairil Anwar Gang Palm 1/284 Ds. Badean'], + ['nama' => 'Anggieta', 'alamat' => 'Dusun II Ds. Sukolilo Kec Jiwan Kab Madiun'], + ['nama' => 'Miftakhul Jannah', 'alamat' => 'Jl. Sasono Mulyo No. 18 Sogaten'], + ['nama' => 'Ika Septina', 'alamat' => 'Jl. Pasopati No. 18 Josenan'], + ]; + + foreach ($walis as $w) { + DB::table('wali_murids')->insert([ + 'nama_wali' => $w['nama'], + 'alamat' => $w['alamat'], + 'no_hp' => '-', + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now(), + ]); + } + } +} \ No newline at end of file diff --git a/resources/views/admin/akun/index.blade.php b/resources/views/admin/akun/index.blade.php index 7f70ca8..67c48ae 100644 --- a/resources/views/admin/akun/index.blade.php +++ b/resources/views/admin/akun/index.blade.php @@ -44,10 +44,10 @@ {{-- Kolom password (disembunyikan tapi bisa dilihat) --}}
- - +
@csrf @method('DELETE') diff --git a/resources/views/admin/guru/create.blade.php b/resources/views/admin/guru/create.blade.php index d82a5ec..fa7e540 100644 --- a/resources/views/admin/guru/create.blade.php +++ b/resources/views/admin/guru/create.blade.php @@ -8,13 +8,18 @@ @csrf
- + + {{-- Name harus 'nama_guru', bukan 'nama' --}}
- - + + {{-- Ganti input text 'bidang' jadi Select 'jenis_guru' sesuai Enum DB --}} +
@@ -30,4 +35,4 @@
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/guru/index.blade.php b/resources/views/admin/guru/index.blade.php index 05a0f2c..811a251 100644 --- a/resources/views/admin/guru/index.blade.php +++ b/resources/views/admin/guru/index.blade.php @@ -14,7 +14,7 @@ Nama Guru Email No HP - Bidang + Jenis Guru Aksi @@ -22,10 +22,19 @@ @forelse ($gurus as $i => $guru) {{ $i + 1 }} - {{ $guru->nama_guru ?? '-' }} + {{ $guru->nama_guru ?? '-' }} {{ $guru->email ?? '-' }} {{ $guru->no_hp ?? '-' }} - {{ $guru->bidang ?? '-' }} + + {{-- Logic tampilan badge --}} + @if($guru->jenis_guru == 'guru_kelas') + Guru Kelas + @elseif($guru->jenis_guru == 'shadow_abk') + Shadow ABK + @else + - + @endif + Edit
@@ -43,4 +52,4 @@
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/penjemputan/index.blade.php b/resources/views/admin/penjemputan/index.blade.php new file mode 100644 index 0000000..541a657 --- /dev/null +++ b/resources/views/admin/penjemputan/index.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('content') +
+
+
+

🚸 Monitoring Penjemputan

+

Data masuk secara real-time dari aplikasi mobile.

+
+
+ +
+ + + + + + + + + + + + {{-- Data ini nanti otomatis muncul saat Wali klik jemput di HP --}} + @forelse ($logs as $log) + + + + + + + + @empty + + + + @endforelse + +
WaktuNama SiswaPenjemputHubunganStatus
{{ \Carbon\Carbon::parse($log->waktu_jemput)->format('H:i') }}{{ $log->siswa->nama_siswa }}{{ $log->nama_penjemput }}{{ $log->hubungan }}✔ Selesai
Belum ada aktifitas penjemputan hari ini.
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/admin/siswa/create.blade.php b/resources/views/admin/siswa/create.blade.php index 81f137e..1f6e5b9 100644 --- a/resources/views/admin/siswa/create.blade.php +++ b/resources/views/admin/siswa/create.blade.php @@ -2,69 +2,54 @@ @section('content')
-

➕ Tambah Peserta Didik

+

👶 Tambah Siswa

- + @csrf + {{-- Dropdown Pilih Wali Murid --}}
- - + + +

*Jika nama orang tua tidak ada, tambahkan dulu di menu Wali Murid.

-
-
- - -
+
+ + +
+
- - + + +
+
+ +
-
- - -
- -
-
- - -
- -
- - +
+ +
+ +
-
- - -
- -
- - -
- -
- Batal - -
+
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/siswa/index.blade.php b/resources/views/admin/siswa/index.blade.php index e267ed1..ce375cb 100644 --- a/resources/views/admin/siswa/index.blade.php +++ b/resources/views/admin/siswa/index.blade.php @@ -3,59 +3,59 @@ @section('content')
-

📚 Data Peserta Didik

- - + Tambah Siswa - +

👶 Data Peserta Didik

+ + Tambah Siswa
- + @if(session('success')) +
+ {{ session('success') }} +
+ @endif + +
- - - - - - - - + + + + + - @forelse ($siswas as $siswa) - - - - - - - - - - - + @forelse ($siswas as $i => $siswa) + + + + + + + + @empty - - - + + + @endforelse
#Nama AnakTempat, Tgl LahirAlamatKelasWali MuridKeteranganFotoNoNama SiswaL/PTTLOrang Tua (Wali) Aksi
{{ $loop->iteration }}{{ $siswa->nama }}{{ $siswa->tempat_lahir }}, {{ $siswa->tanggal_lahir }}{{ $siswa->alamat }}{{ $siswa->kelas->nama_kelas ?? '-' }}{{ $siswa->waliMurid->nama_wali ?? '-' }}{{ $siswa->keterangan ?? '-' }} - @if ($siswa->foto) - {{ $siswa->nama }} - @else - - - @endif - - Edit -
- @csrf - @method('DELETE') - -
-
{{ $i + 1 }}{{ $siswa->nama_siswa }} + + {{ $siswa->jenis_kelamin }} + + + {{ $siswa->tempat_lahir }}, {{ \Carbon\Carbon::parse($siswa->tanggal_lahir)->format('d-m-Y') }} + + {{-- Mengambil nama wali dari relasi --}} + {{ $siswa->wali->nama_wali ?? '⚠️ Data Wali Terhapus' }} + + Edit +
+ @csrf + @method('DELETE') + +
+
Belum ada data siswa
Belum ada data siswa.
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/wali/create.blade.php b/resources/views/admin/wali/create.blade.php index d1a3f09..3e38344 100644 --- a/resources/views/admin/wali/create.blade.php +++ b/resources/views/admin/wali/create.blade.php @@ -4,30 +4,26 @@

➕ Tambah Wali Murid

+ {{-- PERBAIKAN: route('wali-murid.store') --}}
@csrf
- +
- - -
- -
- +
- - + +
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/wali/index.blade.php b/resources/views/admin/wali/index.blade.php index 76e4d74..8389659 100644 --- a/resources/views/admin/wali/index.blade.php +++ b/resources/views/admin/wali/index.blade.php @@ -3,35 +3,46 @@ @section('content')
-

👨‍👩‍👧 Data Wali Murid

- - + Tambah Wali Murid - +

👪 Data Wali Murid

+ + Tambah Wali
- + {{-- TAMBAHAN: Alert Merah untuk Error --}} + @if(session('error')) + + @endif + + {{-- Alert Hijau untuk Sukses --}} + @if(session('success')) + + @endif + +
- - - + + - @forelse($wali_murids as $i => $wali) + @forelse ($walis as $i => $wali) - - + - + @empty - + @endforelse
#Nama Wali MuridEmailNoNama Wali No HP Alamat Aksi
{{ $i + 1 }}{{ $wali->nama_wali ?? '-' }}{{ $wali->email ?? '-' }}{{ $wali->nama_wali ?? '-' }} {{ $wali->no_hp ?? '-' }}{{ $wali->alamat ?? '-' }}{{ $wali->alamat ?? '-' }} Edit -
+ @csrf @method('DELETE') @@ -40,10 +51,10 @@ class="bg-green-600 text-white px-4 py-2 rounded hover:bg-green-700 transition">
Belum ada data wali murid.Belum ada data wali murid.
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/wali_murid/create.blade.php b/resources/views/admin/wali_murid/create.blade.php index 7ce29a3..ffbff7b 100644 --- a/resources/views/admin/wali_murid/create.blade.php +++ b/resources/views/admin/wali_murid/create.blade.php @@ -1,36 +1,29 @@ @extends('layouts.app') @section('content') -
-

Tambah Data Wali Murid

+
+

➕ Tambah Wali Murid

- + @csrf -
- - +
+ + {{-- PENTING: name="nama_wali", bukan "nama" --}} +
-
- - +
+ +
-
- - +
+ +
-
- - -
- -
- Batal - -
+
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/admin/wali_murid/index.blade.php b/resources/views/admin/wali_murid/index.blade.php index 2f27586..70f8da8 100644 --- a/resources/views/admin/wali_murid/index.blade.php +++ b/resources/views/admin/wali_murid/index.blade.php @@ -3,45 +3,42 @@ @section('content')
-

- 👨‍👩‍👧 Data Wali Murid -

- + Tambah Wali Murid +

👪 Data Wali Murid

+ + Tambah Wali
+ - - - - - - - - + + + + + + + - @forelse ($wali_murids as $wali) - - - - - - - - + @forelse ($walis as $i => $wali) + + + + + + + @empty - - - + + + @endforelse
#Nama WaliEmailNo HPAlamatAksi
NoNama WaliNo HPAlamatAksi
{{ $loop->iteration }}{{ $wali->nama_wali }}{{ $wali->email }}{{ $wali->no_hp }}{{ $wali->alamat }} - Edit -
- @csrf - @method('DELETE') - -
-
{{ $i + 1 }}{{ $wali->nama_wali ?? '-' }}{{ $wali->no_hp ?? '-' }}{{ $wali->alamat ?? '-' }} + Edit +
+ @csrf + @method('DELETE') + +
+
Belum ada data wali murid.
Belum ada data wali murid.
-@endsection +@endsection \ No newline at end of file