From 788282c3c4a88c5d4781b631a7399fcb50800001 Mon Sep 17 00:00:00 2001 From: RetasyaSalsabila Date: Mon, 9 Feb 2026 12:30:31 +0700 Subject: [PATCH] daftar guru update --- .../Controllers/Admin/AdminController.php | 2 +- app/Http/Controllers/Admin/GuruController.php | 124 +++++++ app/Models/Guru.php | 9 +- app/Models/Kelas.php | 6 + app/Models/Siswa.php | 6 + public/images/icon/main/add.png | Bin 0 -> 163 bytes public/images/icon/main/del.png | Bin 0 -> 242 bytes public/images/icon/main/delete.png | Bin 0 -> 244 bytes public/images/icon/main/download.png | Bin 0 -> 258 bytes public/images/icon/main/edit.png | Bin 0 -> 272 bytes public/images/icon/main/search.png | Bin 0 -> 423 bytes resources/views/admin/guru/create.blade.php | 0 resources/views/admin/guru/edit.blade.php | 0 resources/views/admin/guru/index.blade.php | 328 ++++++++++++++++-- resources/views/admin/guru/show.blade.php | 48 +++ resources/views/guru/create.blade.php | 0 resources/views/guru/edit.blade.php | 0 resources/views/guru/index.blade.php | 0 resources/views/guru/show.blade.php | 0 routes/web.php | 3 +- 20 files changed, 496 insertions(+), 30 deletions(-) create mode 100644 public/images/icon/main/add.png create mode 100644 public/images/icon/main/del.png create mode 100644 public/images/icon/main/delete.png create mode 100644 public/images/icon/main/download.png create mode 100644 public/images/icon/main/edit.png create mode 100644 public/images/icon/main/search.png create mode 100644 resources/views/admin/guru/create.blade.php create mode 100644 resources/views/admin/guru/edit.blade.php create mode 100644 resources/views/admin/guru/show.blade.php create mode 100644 resources/views/guru/create.blade.php create mode 100644 resources/views/guru/edit.blade.php create mode 100644 resources/views/guru/index.blade.php create mode 100644 resources/views/guru/show.blade.php diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php index f05d4b7..63a8a45 100644 --- a/app/Http/Controllers/Admin/AdminController.php +++ b/app/Http/Controllers/Admin/AdminController.php @@ -15,7 +15,7 @@ public function dashboard(){ $totalSiswa = Siswa::count(); $totalKelas = Kelas::count(); $totalMapel = Mapel::count(); - $chartData = Kelas::withCount('siswas')->get(); + $chartData = Kelas::withCount('siswa')->get(); $latestChallenges = Challenge::latest()->take(3)->get(); return view('admin.dashboard', compact('totalGuru','totalSiswa','totalKelas','totalMapel','chartData','latestChallenges')); } diff --git a/app/Http/Controllers/Admin/GuruController.php b/app/Http/Controllers/Admin/GuruController.php index e69de29..922b3e2 100644 --- a/app/Http/Controllers/Admin/GuruController.php +++ b/app/Http/Controllers/Admin/GuruController.php @@ -0,0 +1,124 @@ +has('search')) { + $search = $request->search; + $query->where('nama', 'like', "%$search%") + ->orWhere('nip', 'like', "%$search%"); + } + + // SHOW PER PAGE + $perPage = $request->get('perPage', 10); + + $gurus = $query->paginate($perPage)->appends($request->all()); + + return view('admin.guru.index', compact('gurus')); +} + + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('admin.guru.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $validated = $request->validate([ + 'nip' => 'required|string|max:30|unique:gurus,nip', + 'nama' => 'required|string|max:100', + 'password' => 'required|string|min:6', + ], [ + 'nip.required' => 'NIP wajib diisi', + 'nip.unique' => 'NIP sudah terdaftar', + 'nama.required' => 'Nama wajib diisi', + 'password.required' => 'Password wajib diisi', + 'password.min' => 'Password minimal 6 karakter', + ]); + + Guru::create([ + 'nip' => $validated['nip'], + 'nama' => $validated['nama'], + 'password' => Hash::make($validated['password']), + ]); + + return redirect()->route('admin.guru.index') + ->with('success', 'Data guru berhasil ditambahkan!'); + } + + /** + * Display the specified resource. + */ + public function show(string $nip) + { + $guru = Guru::findOrFail($nip); + return view('admin.guru.show', compact('guru')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $nip) + { + $guru = Guru::findOrFail($nip); + return view('admin.guru.edit', compact('guru')); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $nip) + { + $guru = Guru::findOrFail($nip); + + $validated = $request->validate([ + 'nama' => 'required|string|max:100', + 'password' => 'nullable|string|min:6', + ], [ + 'nama.required' => 'Nama wajib diisi', + 'password.min' => 'Password minimal 6 karakter', + ]); + + $guru->nama = $validated['nama']; + + // Update password hanya jika diisi + if ($request->filled('password')) { + $guru->password = Hash::make($validated['password']); + } + + $guru->save(); + + return redirect()->route('admin.guru.index') + ->with('success', 'Data guru berhasil diupdate!'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $nip) + { + $guru = Guru::findOrFail($nip); + $guru->delete(); + + return redirect()->route('admin.guru.index') + ->with('success', 'Data guru berhasil dihapus!'); + } +} \ No newline at end of file diff --git a/app/Models/Guru.php b/app/Models/Guru.php index d13de0c..1a94554 100644 --- a/app/Models/Guru.php +++ b/app/Models/Guru.php @@ -6,7 +6,7 @@ class Guru extends Model { - protected $table = 'guru'; // INI PENTING! + protected $table = 'gurus'; protected $primaryKey = 'nip'; @@ -17,7 +17,10 @@ class Guru extends Model protected $fillable = [ 'nip', 'nama', - 'email', 'password' ]; -} + + protected $hidden = [ + 'password', + ]; +} \ No newline at end of file diff --git a/app/Models/Kelas.php b/app/Models/Kelas.php index 438617d..1d56693 100644 --- a/app/Models/Kelas.php +++ b/app/Models/Kelas.php @@ -19,4 +19,10 @@ class Kelas extends Model 'nama_kelas', 'tingkat', ]; + + public function siswa() + { + return $this->hasMany(Siswa::class, 'id_kelas', 'id_kelas'); + } + } \ No newline at end of file diff --git a/app/Models/Siswa.php b/app/Models/Siswa.php index f0518be..ec19a81 100644 --- a/app/Models/Siswa.php +++ b/app/Models/Siswa.php @@ -27,4 +27,10 @@ class Siswa extends Model protected $hidden = [ 'password', ]; + + public function kelas() + { + return $this->belongsTo(Kelas::class, 'id_kelas', 'id_kelas'); + } + } \ No newline at end of file diff --git a/public/images/icon/main/add.png b/public/images/icon/main/add.png new file mode 100644 index 0000000000000000000000000000000000000000..7eab5a6a729758656d0a9ba5d08978e482916c25 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;Agr|#RNCo4Y2?x0t6gZqW|NsAd zmxZ8zw-fiLMLaXle=Xaw?_u47kT&OTOLs{lw;PpL0+ctmmHS*^-1Xj4-&;d~C33;< zdCo8N*PSzMInlRptzycF4aN2kSr{1p|GzeM!AGDSY#=+B8L~JvG(R0LbO4Glc)I$z JtaD0e0sy{UIrjhn literal 0 HcmV?d00001 diff --git a/public/images/icon/main/del.png b/public/images/icon/main/del.png new file mode 100644 index 0000000000000000000000000000000000000000..9422bb47272d48f37aba5de6bcfe90676a661579 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEkP5~(lNh<04Fp&&*RA>M zEr02o@;=x2W!4Hs7i|LtSPbt>@_v@*=``=@gF@cJaqESarpmoLwQ*+6y|Zy4N9R7Q zUz1@v+4^7$cTeRc<3GJyF8jP=5!Txv)Nb4}XU^-39Vc#jZ#`;|TlT=LWc{Z6_fyPk zUi8#Rx~xl;%T}*h$t$crgTe~DWM4f=#5~? literal 0 HcmV?d00001 diff --git a/public/images/icon/main/delete.png b/public/images/icon/main/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..2abab59277e876970b1794ba461d8aaeb56e9557 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE3NZkP5~(lP>Z$DDb#+cfZu* zQ__2+V>R=hYf?j)!Lc8SDz+%_?+bCjSHnUy5YR;4_#_Xif#=?(N|FFls4BGkZuUyhK z2|4Mfr@jko-rc~v`S?$7mJIHhg=}*I?m8ase6f+OOiE4Q{Og5LUo^A+8#V4O&99f) p!N|by|Njfg>o0+hW&=5znc>)iG)-U4%QJx@44$rjF6*2UngA6EU0?tJ literal 0 HcmV?d00001 diff --git a/public/images/icon/main/download.png b/public/images/icon/main/download.png new file mode 100644 index 0000000000000000000000000000000000000000..7c17801eeeeadcd4075166734d4d876f84611096 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE` z(Baw7{AwP@snlA5027sKCyp%sI?Zn`^DVDb=^ITUmdKI;Vst E0I`T_x&QzG literal 0 HcmV?d00001 diff --git a/public/images/icon/main/edit.png b/public/images/icon/main/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..b86b61767358e8bc758dd93a08928610e6c04d35 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqEqYQcTg|DzeRs|@SKhyj``(Y`c29g3t@?SA zzeP82ZiLbn5s__dnbR+P*vazchIPqq^YZe-*8vxj-EWCKaSidGCd+Bcl9L>6#h>EY zlDorgDzomJri7$B`9TSW)0kFou-hQD`M`by?kfwgs)+g;TQV^2-`KV(X|lr7@>y>T zPcwagbLFyV@|V)Svpuuz<~pA)zqx6i!R;xx46J^zGBEuAuOD*#D$ql0AP+G!FfP>A Ue6%bs5-7sp>FVdQ&MBb@0LN2pJ^%m! literal 0 HcmV?d00001 diff --git a/public/images/icon/main/search.png b/public/images/icon/main/search.png new file mode 100644 index 0000000000000000000000000000000000000000..33fabf97a98160130cdbe2f46024ed99cd2c15fc GIT binary patch literal 423 zcmV;Y0a*TtP)9v0w1pjgQ@*botjJctGC;Q|~0I04rP$;y&t^FL}^-R(9a z!zNLGRry!>rMlgYwd3EO0`oi{rfIr>YM}+a|C~-|%K*GoRrQXSJ=?aQDdzN8L;mMd zfOz2u-6wTj&%!XYgCIDknA2lT^dL1a1&Ee6$cmyUW|Sp)zddqI&UN5GY*FrMb5R?# zh9S{`hL-g#9r%s2I_pD-+N!TkUjaIfb4)Wyk~>COjpw@Vq3r9q0`z_V0}Zb@s}a6t zon_e*#he~$R#}!ejD1poY{C^eMI1saZc%7i6orTU5#S5_$ph-f)d8{#&`;<9vMF2{ zFOK6S;w6A{fUhw1EqiqtfqIktjEjDa=P5MCxptsy0|Bxy^#oH+G3^+W&geDT2*{VQ z{R!edpkIjX+89UzCLQ4j=FA&y1#BR4+&S -
-

Daftar Guru

- Tambah Guru -
- - - - @foreach($gurus as $g) - - - - - - - @endforeach - -
#NamaEmailAksi
{{ $loop->iteration }}{{ $g->name }}{{ $g->email }} - Edit -
@csrf @method('DELETE') - -
-
+ + +

DAFTAR GURU

+ +
+ +
+ +
+ + + + + +
+ +
+ +
+ +
+ +
+ Tampilkan + + + + data + + +
+ + + + + + + + + + + + + + @forelse($gurus as $index => $guru) + + + + + + + + + + @empty + + + + @endforelse + +
NoNama LengkapNIPPasswordAksi
{{ $gurus->firstItem() + $index }}{{ $guru->nama }}{{ $guru->nip }}******** + + +
+ @csrf + @method('DELETE') + +
+
Belum ada data guru
+ +
+ {{ $gurus->links() }} +
- {{ $gurus->links() }}
+ +{{-- MODAL TAMBAH DATA --}} + + +{{-- MODAL EDIT DATA --}} + + + + @endsection diff --git a/resources/views/admin/guru/show.blade.php b/resources/views/admin/guru/show.blade.php new file mode 100644 index 0000000..7ae5629 --- /dev/null +++ b/resources/views/admin/guru/show.blade.php @@ -0,0 +1,48 @@ +@extends('admin.layouts.app') + +@section('title', 'Detail Guru') + +@section('content') +
+
+
+
+
+

Detail Data Guru

+
+
+ + + + + + + + + + + + + + + + + +
NIP: {{ $guru->nip }}
Nama Lengkap: {{ $guru->nama }}
Tanggal Dibuat: {{ $guru->created_at->format('d F Y, H:i') }} WIB
Terakhir Update: {{ $guru->updated_at->format('d F Y, H:i') }} WIB
+ + +
+
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/guru/create.blade.php b/resources/views/guru/create.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/guru/edit.blade.php b/resources/views/guru/edit.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/guru/index.blade.php b/resources/views/guru/index.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/guru/show.blade.php b/resources/views/guru/show.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/routes/web.php b/routes/web.php index 07af958..e94835c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,8 +6,9 @@ use App\Http\Controllers\Admin\LoginController; use App\Http\Controllers\Admin\AdminController; +use App\Http\Controllers\Admin\GuruController; -use App\Http\Controllers\GuruController; +// use App\Http\Controllers\GuruController; use App\Http\Controllers\SiswaController; use App\Http\Controllers\KelasController; use App\Http\Controllers\MapelController;