From ef91a164303331d98b02327695aca94b54bf0e39 Mon Sep 17 00:00:00 2001 From: ghozahimma65 Date: Tue, 28 Oct 2025 10:50:50 +0700 Subject: [PATCH] au ah --- app/Http/Controllers/Admin/GuruController.php | 73 ++++++++---------- .../Admin/PerkembanganController.php | 29 +++++++ app/Models/Guru.php | 15 ++-- app/Models/Perkembangan.php | 22 ++++++ ...0_03_102330_create_perkembangans_table.php | 36 +++++++++ resources/views/admin/guru/index.blade.php | 77 +++++++------------ .../admin/guru/perkembangan/index.blade.php | 41 ++++++++++ resources/views/layouts/app.blade.php | 6 +- routes/api.php | 1 - routes/web.php | 18 ++--- 10 files changed, 208 insertions(+), 110 deletions(-) create mode 100644 app/Http/Controllers/Admin/PerkembanganController.php create mode 100644 app/Models/Perkembangan.php create mode 100644 database/migrations/2025_10_03_102330_create_perkembangans_table.php create mode 100644 resources/views/admin/guru/perkembangan/index.blade.php diff --git a/app/Http/Controllers/Admin/GuruController.php b/app/Http/Controllers/Admin/GuruController.php index cf48abd..fe3d531 100644 --- a/app/Http/Controllers/Admin/GuruController.php +++ b/app/Http/Controllers/Admin/GuruController.php @@ -1,68 +1,59 @@ get(); + $guru = Guru::latest()->get(); return view('admin.guru.index', compact('guru')); } public function create() { - $users = User::all(); // misalnya guru punya relasi ke user - return view('admin.guru.create', compact('users')); + return view('admin.guru.create'); } public function store(Request $request) { $request->validate([ - 'nama' => 'required|string|max:255', - 'bidang' => 'required|string|max:255', - 'alamat' => 'nullable|string', - 'no_hp' => 'nullable|string', -]); - - - Guru::create($request->all()); - return redirect()->route('guru.index')->with('success', 'Guru berhasil ditambahkan'); - } - - public function show($id) - { - $guru = Guru::with('user')->findOrFail($id); - return view('admin.guru.show', compact('guru')); - } - - public function edit($id) - { - $guru = Guru::findOrFail($id); - $users = User::all(); - return view('admin.guru.edit', compact('guru', 'users')); - } - - public function update(Request $request, $id) - { - $request->validate([ - 'user_id' => 'required|exists:users,id', - 'bidang' => 'required|string|max:255', + 'nama_guru' => 'required|string|max:100', + 'email' => 'nullable|email|max:100', + 'no_hp' => 'nullable|string|max:20', + 'bidang' => 'nullable|string|max:100', ]); - $guru = Guru::findOrFail($id); - $guru->update($request->all()); + Guru::create($request->all()); - return redirect()->route('guru.index')->with('success', 'Data guru berhasil diperbarui'); + return redirect()->route('guru.index')->with('success', 'Data guru berhasil ditambahkan.'); } - public function destroy($id) + public function edit(Guru $guru) { - Guru::destroy($id); - return redirect()->route('guru.index')->with('success', 'Guru berhasil dihapus'); + return view('admin.guru.edit', compact('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', + ]); + + $guru->update($request->all()); + return redirect()->route('guru.index')->with('success', 'Data guru berhasil diperbarui.'); + } + + public function destroy(Guru $guru) + { + $guru->delete(); + return redirect()->route('guru.index')->with('success', 'Data guru berhasil dihapus.'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/PerkembanganController.php b/app/Http/Controllers/Admin/PerkembanganController.php new file mode 100644 index 0000000..b2b779d --- /dev/null +++ b/app/Http/Controllers/Admin/PerkembanganController.php @@ -0,0 +1,29 @@ +get(); + return view('admin.perkembangan.index', compact('perkembangans')); +} + + public function show($id) + { + $perkembangan = Perkembangan::with(['siswa', 'guru'])->findOrFail($id); + return view('admin.perkembangan.show', compact('perkembangan')); + } + + public function print($id) + { + $perkembangan = Perkembangan::with(['siswa', 'guru'])->findOrFail($id); + return view('admin.perkembangan.print', compact('perkembangan')); + } +} diff --git a/app/Models/Guru.php b/app/Models/Guru.php index 7c3376a..d5f234b 100644 --- a/app/Models/Guru.php +++ b/app/Models/Guru.php @@ -2,15 +2,18 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Guru extends Model { + use HasFactory; protected $table = 'guru'; - protected $fillable = ['user_id','bidang']; - - public function user() - { - return $this->belongsTo(User::class); - } + + protected $fillable = [ + 'nama_guru', + 'email', + 'no_hp', + 'bidang', + ]; } \ No newline at end of file diff --git a/app/Models/Perkembangan.php b/app/Models/Perkembangan.php new file mode 100644 index 0000000..dc08a8d --- /dev/null +++ b/app/Models/Perkembangan.php @@ -0,0 +1,22 @@ +belongsTo(Siswa::class); + } + + public function guru() + { + return $this->belongsTo(Guru::class); + } +} diff --git a/database/migrations/2025_10_03_102330_create_perkembangans_table.php b/database/migrations/2025_10_03_102330_create_perkembangans_table.php new file mode 100644 index 0000000..834c5fc --- /dev/null +++ b/database/migrations/2025_10_03_102330_create_perkembangans_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger('siswa_id'); + $table->unsignedBigInteger('guru_id'); + $table->date('tanggal'); + $table->string('aspek'); // contoh: Motorik, Bahasa, Sosial + $table->text('deskripsi'); + $table->string('foto')->nullable(); + $table->timestamps(); + + $table->foreign('siswa_id')->references('id')->on('siswas')->onDelete('cascade'); + $table->foreign('guru_id')->references('id')->on('users')->onDelete('cascade'); + }); +} + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('perkembangans'); + } +}; diff --git a/resources/views/admin/guru/index.blade.php b/resources/views/admin/guru/index.blade.php index 7544cb3..47c04f0 100644 --- a/resources/views/admin/guru/index.blade.php +++ b/resources/views/admin/guru/index.blade.php @@ -1,55 +1,34 @@ @extends('layouts.app') @section('content') -
-
-

👨‍🏫 Data Guru

- - + Tambah Guru - -
+
+

Laporan Perkembangan Anak

- - - - - - - - - - - - - @forelse ($guru as $i => $item) - - - - - - - - - @empty - - - - @endforelse - -
#NamaBidangTeleponAlamatAksi
{{ $i+1 }}{{ $item->nama ?? '-' }}{{ $item->bidang ?? '-' }}{{ $item->telepon ?? '-' }}{{ $item->alamat ?? '-' }} - - Edit - -
- @csrf - @method('DELETE') - -
-
Belum ada data guru
+ @if($perkembangans->isEmpty()) +

Tidak ada data perkembangan yang tersedia.

+ @else + + + + + + + + + + + + @foreach($perkembangans as $p) + + + + + + + + @endforeach + +
Nama SiswaTanggalAspekDeskripsiGuru
{{ $p->siswa->nama ?? '-' }}{{ $p->tanggal }}{{ $p->aspek }}{{ $p->deskripsi }}{{ $p->guru->nama_guru ?? '-' }}
+ @endif
@endsection diff --git a/resources/views/admin/guru/perkembangan/index.blade.php b/resources/views/admin/guru/perkembangan/index.blade.php new file mode 100644 index 0000000..52231a3 --- /dev/null +++ b/resources/views/admin/guru/perkembangan/index.blade.php @@ -0,0 +1,41 @@ +@extends('layouts.app') + +@section('content') +
+

📊 Laporan Perkembangan Anak

+ + + + + + + + + + + + + + + @forelse($perkembangans as $i => $item) + + + + + + + + + + @empty + + @endforelse + +
NoNama AnakGuruTanggalAspekDeskripsiAksi
{{ $i+1 }}{{ $item->siswa->nama ?? '-' }}{{ $item->guru->nama_guru ?? '-' }}{{ $item->tanggal }}{{ $item->aspek }}{{ Str::limit($item->deskripsi, 40) }} + Lihat | + Cetak +
Belum ada data perkembangan
+
+@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 48f2aeb..c61d883 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -26,9 +26,9 @@
- - Laporan Perkembangan - + + Laporan Perkembangan + Menu Pengumuman diff --git a/routes/api.php b/routes/api.php index 174c7fc..6a31ce9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -42,5 +42,4 @@ 'update' => 'api.siswa.update', 'destroy' => 'api.siswa.destroy', ]); - Route::middleware('auth:sanctum')->get('/wali/perkembangan', [ApiPerkembangan::class,'index']); }); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 919e81d..bdd2745 100644 --- a/routes/web.php +++ b/routes/web.php @@ -7,8 +7,7 @@ use App\Http\Controllers\Admin\WaliMuridController; use App\Http\Controllers\Admin\SiswaController; use App\Http\Controllers\Admin\PengumumanController; -use App\Http\Controllers\Guru\PerkembanganController as GuruPerkembangan; -use App\Http\Controllers\Admin\PerkembanganController as AdminPerkembangan; +use App\Http\Controllers\Admin\PerkembanganController; // Login routes Route::get('/login', [AuthController::class, 'showLogin'])->name('login'); @@ -30,13 +29,12 @@ Route::resource('wali', WaliMuridController::class); Route::resource('siswa', SiswaController::class); -Route::middleware(['auth','role:guru'])->prefix('guru')->name('guru.')->group(function(){ - Route::resource('perkembangan', GuruPerkembangan::class); -}); - -Route::middleware(['auth','role:admin'])->prefix('admin')->name('admin.')->group(function(){ - Route::get('perkembangan', [AdminPerkembangan::class, 'index'])->name('perkembangan.index'); - Route::get('perkembangan/{id}', [AdminPerkembangan::class, 'show'])->name('perkembangan.show'); -}); +Route::middleware(['auth'])->group(function () { + Route::prefix('admin')->group(function () { + Route::get('/perkembangan', [PerkembanganController::class, 'index'])->name('admin.perkembangan.index'); + Route::get('/perkembangan/{id}', [PerkembanganController::class, 'show'])->name('admin.perkembangan.show'); + Route::get('/perkembangan/{id}/print', [PerkembanganController::class, 'print'])->name('admin.perkembangan.print'); }); +}); +}); }); \ No newline at end of file