where('nama_role', 'Pelatih'); })->with('kolat')->get(); return view('pelatih.pelatih', compact('data_pelatih')); } // Menampilkan form untuk upgrade anggota ke pelatih public function create() { // Ambil anggota yang role-nya masih 'Anggota' (bukan pelatih) $calon_pelatih = Anggota::whereHas('role', function($q) { $q->where('nama_role', 'Anggota'); })->get(); return view('pelatih.pelatihcreate', compact('calon_pelatih')); } // Proses Upgrade Anggota ke Pelatih public function store(Request $request) { $request->validate([ 'anggota_id' => 'required|exists:anggotas,id', 'no_sk' => 'required|unique:anggotas,no_sk', 'tgl_sk' => 'required|date', 'masa_berlaku' => 'required|date', 'foto_sk' => 'nullable|image|mimes:jpg,png,jpeg|max:2048', ]); // Cari data anggota berdasarkan ID yang dipilih $anggota = Anggota::findOrFail($request->anggota_id); // Cari ID Role Pelatih $rolePelatih = Role::where('nama_role', 'Pelatih')->first(); // Data yang akan diupdate $updateData = [ 'role_id' => $rolePelatih->id, 'jabatan' => 'pelatih', // Update status jabatan 'no_sk' => $request->no_sk, 'tgl_sk' => $request->tgl_sk, 'masa_berlaku' => $request->masa_berlaku, 'status' => 'Aktif', ]; // Handle upload foto SK jika ada if ($request->hasFile('foto_sk')) { $path = $request->file('foto_sk')->store('sk_pelatih', 'public'); $updateData['foto_sk'] = $path; } // Eksekusi Update $anggota->update($updateData); return redirect()->route('pelatih.index') ->with('success', $anggota->nama_lengkap . ' berhasil diupgrade menjadi Pelatih!'); } // Menampilkan form edit data kepelatihan (misal perpanjang SK) public function edit($id) { $pelatih = Anggota::findOrFail($id); $data_kolat = Kolat::all(); return view('pelatih.editpelatih', compact('pelatih', 'data_kolat')); } public function update(Request $request, $id) { $pelatih = Anggota::findOrFail($id); $request->validate([ 'nama_lengkap' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $pelatih->user_id, // validasi email user 'no_hp' => 'required', 'no_sk' => 'required|unique:anggotas,no_sk,' . $id, // pastikan nama tabel benar 'anggota' 'tgl_sk' => 'nullable|date', // tambahkan jika di form ada tgl_sk 'foto_sk' => 'nullable|image|max:2048', ]); $data = $request->all(); if ($request->hasFile('foto_sk')) { if ($pelatih->foto_sk) { Storage::disk('public')->delete($pelatih->foto_sk); } $data['foto_sk'] = $request->file('foto_sk')->store('sk_pelatih', 'public'); } $pelatih->update($data); return redirect()->route('pelatih.index')->with('success', 'Data kepelatihan diperbarui!'); } }