121 lines
3.3 KiB
PHP
121 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Jadwal;
|
|
use App\Models\Kolat;
|
|
use App\Models\Anggota;
|
|
use App\Models\Role;
|
|
use Illuminate\Http\Request;
|
|
|
|
class JadwalController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$data_jadwal = Jadwal::with(['kolat', 'pelatih'])
|
|
->orderBy('tanggal', 'desc')
|
|
->orderBy('jam_mulai', 'desc')
|
|
->get();
|
|
|
|
return view('jadwal.jadwal', compact('data_jadwal'));
|
|
}
|
|
|
|
public function konfirmasiSelesai($id)
|
|
{
|
|
$jadwal = Jadwal::findOrFail($id);
|
|
|
|
// Kita paksa ubah status ke 'selesai'
|
|
$jadwal->status = 'selesai';
|
|
$jadwal->save();
|
|
|
|
return redirect()->route('jadwal.index')
|
|
->with('success', 'Latihan ' . $jadwal->judul_kegiatan . ' telah dikonfirmasi selesai!');
|
|
}
|
|
|
|
|
|
public function create()
|
|
{
|
|
$data_kolat = Kolat::all();
|
|
$rolePelatih = Role::where('nama_role', 'Pelatih')->first();
|
|
|
|
// Ambil Anggota yang memiliki role 'Pelatih' saja (filter lewat relasi)
|
|
$data_pelatih = Anggota::whereHas('role', function($query) {
|
|
$query->where('nama_role', 'Pelatih');
|
|
})->get();
|
|
|
|
return view('jadwal.jadwalcreate', compact('data_kolat', 'data_pelatih'));
|
|
}
|
|
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'judul_kegiatan' => 'required|string|max:255',
|
|
'kolat_id' => 'required|exists:kolat,id',
|
|
'pelatih_id' => 'required|exists:anggotas,id',
|
|
'jenis' => 'required|in:Rutin,Tambahan,Pengumuman',
|
|
'tanggal' => 'required|date',
|
|
'jam_mulai' => 'required',
|
|
'lokasi' => 'required|string',
|
|
]);
|
|
|
|
Jadwal::create($request->all());
|
|
|
|
return redirect()->route('jadwal.index')
|
|
->with('success', 'Jadwal latihan berhasil ditambahkan!');
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
// Ambil satu data dengan relasinya
|
|
$jadwal = Jadwal::with(['kolat', 'pelatih'])->findOrFail($id);
|
|
|
|
return view('jadwal.show', compact('jadwal'));
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$jadwal = Jadwal::findOrFail($id);
|
|
$data_kolat = Kolat::all();
|
|
|
|
// Tetap filter agar hanya muncul daftar pelatih
|
|
$data_pelatih = Anggota::whereHas('role', function($query) {
|
|
$query->where('nama_role', 'Pelatih');
|
|
})->get();
|
|
|
|
return view('jadwal.editjadwal', compact('jadwal', 'data_kolat', 'data_pelatih'));
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$jadwal = Jadwal::findOrFail($id);
|
|
|
|
$request->validate([
|
|
'judul_kegiatan' => 'required|string|max:255',
|
|
'kolat_id' => 'required|exists:kolat,id',
|
|
'pelatih_id' => 'required|exists:anggotas,id',
|
|
'jenis' => 'required|in:Rutin,Tambahan,Pengumuman',
|
|
'tanggal' => 'required|date',
|
|
'jam_mulai' => 'required',
|
|
'lokasi' => 'required|string',
|
|
]);
|
|
|
|
$jadwal->update($request->all());
|
|
|
|
return redirect()->route('jadwal.index')
|
|
->with('success', 'Jadwal berhasil diperbarui!');
|
|
}
|
|
|
|
|
|
public function destroy($id)
|
|
{
|
|
$jadwal = Jadwal::findOrFail($id);
|
|
$jadwal->delete();
|
|
|
|
return redirect()->route('jadwal.index')
|
|
->with('success', 'Jadwal telah dihapus dari sistem.');
|
|
}
|
|
|
|
}
|