From 1f9a350251fa0168e772484076f7f0bfaae7dc97 Mon Sep 17 00:00:00 2001 From: ell Date: Tue, 9 Jun 2026 21:05:50 +0700 Subject: [PATCH] finish --- .../app/Http/Controllers/JadwalController.php | 7 +- .../Http/Controllers/PelatihController.php | 4 +- .../app/Providers/AppServiceProvider.php | 24 +-- manajemen_mp/database/seeders/KolatSeeder.php | 26 ++- manajemen_mp/database/seeders/UserSeeder.php | 89 +++++++++-- .../views/jadwal/jadwalcreate.blade.php | 59 ++++++- .../resources/views/kolat/kolat.blade.php | 148 ++++++++++-------- .../resources/views/layout/footer.blade.php | 4 +- .../resources/views/layout/navbar.blade.php | 6 +- .../resources/views/layout/sidebar.blade.php | 13 +- .../views/pelatih/editpelatih.blade.php | 30 ++++ .../views/pelatih/pelatihcreate.blade.php | 47 +++++- .../resources/views/pengurus/index.blade.php | 110 +++++++++---- .../views/spp/pengurus/index.blade.php | 59 ++++++- manajemen_mp/routes/web.php | 2 +- 15 files changed, 487 insertions(+), 141 deletions(-) diff --git a/manajemen_mp/app/Http/Controllers/JadwalController.php b/manajemen_mp/app/Http/Controllers/JadwalController.php index 11058ac..b3fe6bf 100644 --- a/manajemen_mp/app/Http/Controllers/JadwalController.php +++ b/manajemen_mp/app/Http/Controllers/JadwalController.php @@ -58,6 +58,7 @@ public function create() $data_pelatih = Anggota::whereHas('roles', function($query) { $query->where('nama_role', 'Pelatih'); }) + ->with('kolatLatihan') ->where('status', 'Aktif') ->orderBy('nama_lengkap', 'asc') ->get(); @@ -100,7 +101,11 @@ public function edit($id) // Tetap filter agar hanya muncul daftar pelatih $data_pelatih = Anggota::whereHas('roles', function($query) { $query->where('nama_role', 'Pelatih'); - })->get(); + }) + ->with('kolatLatihan') + ->where('status', 'Aktif') + ->orderBy('nama_lengkap', 'asc') + ->get(); return view('jadwal.editjadwal', compact('jadwal', 'data_kolat', 'data_pelatih')); } diff --git a/manajemen_mp/app/Http/Controllers/PelatihController.php b/manajemen_mp/app/Http/Controllers/PelatihController.php index 03c730b..838e077 100644 --- a/manajemen_mp/app/Http/Controllers/PelatihController.php +++ b/manajemen_mp/app/Http/Controllers/PelatihController.php @@ -79,7 +79,9 @@ public function store(Request $request) $updateData['foto_sk'] = $path; } - $anggota->roles()->syncWithoutDetaching([$rolePelatih->id]); + // $anggota->roles()->syncWithoutDetaching([$rolePelatih->id]); + // KODE BARU (Benar karena akan mengganti role Anggota menjadi murni Pelatih) + $anggota->roles()->sync([$rolePelatih->id]); $anggota->kolatLatihan()->sync($request->kolat_ids); // Eksekusi Update diff --git a/manajemen_mp/app/Providers/AppServiceProvider.php b/manajemen_mp/app/Providers/AppServiceProvider.php index 9437fe0..c26e77b 100644 --- a/manajemen_mp/app/Providers/AppServiceProvider.php +++ b/manajemen_mp/app/Providers/AppServiceProvider.php @@ -67,19 +67,19 @@ public function boot(): void // C. Kandidat Pelatih Baru (Kriteria: Usia >= 18 & Tingkatan Balik 1) // Kita hitung menggunakan Carbon untuk tanggal lahir - $kandidatPelatih = Anggota::where('tingkatan', 'Balik 1') - ->where('status', 'Aktif') - ->where('tgl_lahir', '<=', Carbon::now()->subYears(18)) - ->count(); + // $kandidatPelatih = Anggota::where('tingkatan', 'Balik 1') + // ->where('status', 'Aktif') + // ->where('tgl_lahir', '<=', Carbon::now()->subYears(18)) + // ->count(); - if ($kandidatPelatih > 0) { - $notifications[] = [ - 'icon' => 'bi-star-fill text-info', - 'title' => 'Kandidat Pelatih', - 'msg' => "Ada $kandidatPelatih anggota Balik 1 berusia 18th siap jadi Pelatih.", - 'link' => route('anggota.anggota') // Bisa diarahkan ke daftar anggota filter Balik 1 - ]; - } + // if ($kandidatPelatih > 0) { + // $notifications[] = [ + // 'icon' => 'bi-star-fill text-info', + // 'title' => 'Kandidat Pelatih', + // 'msg' => "Ada $kandidatPelatih anggota Balik 1 berusia 18th siap jadi Pelatih.", + // 'link' => route('anggota.anggota') // Bisa diarahkan ke daftar anggota filter Balik 1 + // ]; + // } // D. Peringatan Saldo Kas Kritis (< 500rb) $saldo = Kas::sum('nominal'); diff --git a/manajemen_mp/database/seeders/KolatSeeder.php b/manajemen_mp/database/seeders/KolatSeeder.php index f970bf8..0ec4294 100644 --- a/manajemen_mp/database/seeders/KolatSeeder.php +++ b/manajemen_mp/database/seeders/KolatSeeder.php @@ -13,11 +13,29 @@ class KolatSeeder extends Seeder */ public function run(): void { + // Menghapus data lama agar tidak bentrok saat migrate:fresh --seed + DB::table('kolat')->delete(); + DB::table('kolat')->insert([ - 'id' => 1, // Kita paksa ID 1 biar nyambung sama UserSeeder tadi - 'nama_kolat' => 'Kolat Unej', - 'created_at' => now(), - 'updated_at' => now(), + [ + 'id' => 1, // Wajib ID 1 agar nyambung dengan UserSeeder (Siti, Budi, Andi) + 'nama_kolat' => 'Kolat Unej', + 'created_at' => now(), + 'updated_at' => now(), + ], + [ + 'id' => 2, + 'nama_kolat' => 'Kolat Matasa', + 'created_at' => now(), + 'updated_at' => now(), + ], + [ + 'id' => 3, + 'nama_kolat' => 'Kolat Ajung', + 'created_at' => now(), + 'updated_at' => now(), + ] ]); + } } diff --git a/manajemen_mp/database/seeders/UserSeeder.php b/manajemen_mp/database/seeders/UserSeeder.php index f6aa56f..2d170fe 100644 --- a/manajemen_mp/database/seeders/UserSeeder.php +++ b/manajemen_mp/database/seeders/UserSeeder.php @@ -16,42 +16,97 @@ class UserSeeder extends Seeder */ public function run(): void { - // 1. Ambil ID Role Pelatih - $rolePelatih = Role::where('nama_role', 'Pelatih')->first(); $rolePengurus = Role::where('nama_role', 'Pengurus')->first(); + $rolePelatih = Role::where('nama_role', 'Pelatih')->first(); + $roleAnggota = Role::where('nama_role', 'Anggota')->first(); - // 2. Buat Akun User untuk Pelatih - $user = User::create([ - 'email' => 'pelatih@tapakmp.com', - 'password' => Hash::make('password123'), // Password default + // ========================================================== + // AKUN 1: PENGURUS (Akun kamu: Super Admin = Pelatih + Pengurus) + // ========================================================== + $userPengurus = User::create([ + 'email' => 'pengurus@tapakmp.com', + 'password' => Hash::make('password123'), ]); - // 3. Buat Profil Anggota untuk User tersebut - $anggota = Anggota::create([ - 'user_id' => $user->id, + $anggotaPengurus = Anggota::create([ + 'user_id' => $userPengurus->id, 'no_induk' => 'MP-2026-001', 'nama_lengkap' => 'Siti Afiah Dahliawati', 'jenis_kelamin' => 'P', 'tempat_lahir' => 'Jember', 'tgl_lahir' => '2004-10-29', 'no_hp' => '081455057453', - 'kolat_id' => 1, // Menyambung ke Kolat Unej di KolatSeeder + 'kolat_id' => 1, // Pastikan ada data Kolat dengan ID 1 'tingkatan' => 'Balik 1', 'tgl_gabung' => now(), 'status' => 'Aktif', 'alamat' => 'Jl. Merpati Putih No. 1, Jember', - 'jabatan' => 'Pelatih, Pengurus Kolat', + 'jabatan' => 'Pengurus (Ketua)', ]); - // 4. INI BAGIAN TERPENTING: Masukkan data ke tabel pivot anggota_role! - // Perintah attach() ini akan otomatis mengisi tabel anggota_role dengan anggota_id dan role_id + // Tempelkan HANYA peran Pengurus + if ($rolePengurus) { + $anggotaPengurus->roles()->attach($rolePengurus->id); + } + // ========================================================== + // AKUN 2: PELATIH (Hanya bisa akses menu kepelatihan) + // ========================================================== + $userPelatih = User::create([ + 'email' => 'pelatih@tapakmp.com', + 'password' => Hash::make('password123'), + ]); + + $anggotaPelatih = Anggota::create([ + 'user_id' => $userPelatih->id, + 'no_induk' => 'MP-2026-002', + 'nama_lengkap' => 'Budi Santoso', + 'jenis_kelamin' => 'L', + 'tempat_lahir' => 'Banyuwangi', + 'tgl_lahir' => '2000-05-15', + 'no_hp' => '081234567890', + 'kolat_id' => 1, + 'tingkatan' => 'Kombinasi 1', + 'tgl_gabung' => now()->subYears(2), + 'status' => 'Aktif', + 'alamat' => 'Jl. Mastrip, Jember', + 'jabatan' => 'Pelatih', + ]); + + // Tempelkan peran Pelatih if ($rolePelatih) { - $anggota->roles()->attach($rolePelatih->id); + $anggotaPelatih->roles()->attach($rolePelatih->id); } - // Menempelkan peran sebagai Pengurus (Menjadikannya akun super ganda untuk kebutuhan pengetesan) - if ($rolePengurus) { - $anggota->roles()->attach($rolePengurus->id); + // Hubungkan pelatih dengan Kolat (1 = Unej) + $anggotaPelatih->kolatLatihan()->attach([1]); + + // ========================================================== + // AKUN 3: ANGGOTA (Hanya bisa akses dashboard anggota, presensi, spp) + // ========================================================== + $userAnggota = User::create([ + 'email' => 'anggota@tapakmp.com', + 'password' => Hash::make('password123'), + ]); + + $anggotaBiasa = Anggota::create([ + 'user_id' => $userAnggota->id, + 'no_induk' => 'MP-2026-003', + 'nama_lengkap' => 'Siti Nurul Amalia', + 'jenis_kelamin' => 'P', + 'tempat_lahir' => 'Jember', + 'tgl_lahir' => '2005-08-20', + 'no_hp' => '085712345678', + 'kolat_id' => 1, + 'tingkatan' => 'Dasar 1', + 'tgl_gabung' => now()->subMonths(3), + 'status' => 'Aktif', + 'alamat' => 'Jl. Kalimantan, Jember', + 'jabatan' => 'Anggota', + ]); + + // Tempelkan hanya peran Anggota + if ($roleAnggota) { + $anggotaBiasa->roles()->attach($roleAnggota->id); } } diff --git a/manajemen_mp/resources/views/jadwal/jadwalcreate.blade.php b/manajemen_mp/resources/views/jadwal/jadwalcreate.blade.php index aa768d6..dfb0cd4 100644 --- a/manajemen_mp/resources/views/jadwal/jadwalcreate.blade.php +++ b/manajemen_mp/resources/views/jadwal/jadwalcreate.blade.php @@ -46,13 +46,24 @@
- @foreach($data_pelatih as $pelatih) @endforeach + --}} + @error('pelatih_id')
{{ $message }}
@@ -161,4 +172,50 @@ margin-bottom: 0.5rem; } +{{-- SCRIPT FILTER PELATIH BERDASARKAN KOLAT --}} + + @endsection diff --git a/manajemen_mp/resources/views/kolat/kolat.blade.php b/manajemen_mp/resources/views/kolat/kolat.blade.php index d694a0f..710f7ee 100644 --- a/manajemen_mp/resources/views/kolat/kolat.blade.php +++ b/manajemen_mp/resources/views/kolat/kolat.blade.php @@ -1,6 +1,11 @@ @extends('layout.app') @section('content') + @php + $user = auth()->user(); + $userRoles = $user && $user->anggota ? $user->anggota->roles->pluck('nama_role')->toArray() : []; + $isPengurus = in_array('Pengurus', $userRoles); + @endphp
-@push('scripts') - -@endpush + + @endpush @endsection diff --git a/manajemen_mp/resources/views/layout/footer.blade.php b/manajemen_mp/resources/views/layout/footer.blade.php index 82a2bba..d012f9f 100644 --- a/manajemen_mp/resources/views/layout/footer.blade.php +++ b/manajemen_mp/resources/views/layout/footer.blade.php @@ -1,4 +1,4 @@ -
+{{--
@@ -9,4 +9,4 @@ Designed by BootstrapMade
- + --}} diff --git a/manajemen_mp/resources/views/layout/navbar.blade.php b/manajemen_mp/resources/views/layout/navbar.blade.php index e31da27..7fb8003 100644 --- a/manajemen_mp/resources/views/layout/navbar.blade.php +++ b/manajemen_mp/resources/views/layout/navbar.blade.php @@ -8,14 +8,14 @@
- --}} -