105 lines
3.7 KiB
PHP
105 lines
3.7 KiB
PHP
<?php
|
|
// app/Http/Controllers/JadwalPelajaranController.php
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Models\Jurusan;
|
|
use App\Models\Kelas;
|
|
use App\Models\Hari;
|
|
use App\Models\JamPelajaran;
|
|
use App\Models\KodePembelajaran;
|
|
use App\Models\JadwalPelajaran;
|
|
use App\Models\Kodemapel;
|
|
|
|
class JadwalPelajaranController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$jurusan = Jurusan::all();
|
|
$kelas = Kelas::all();
|
|
$jadwalpelajaran = JadwalPelajaran::all();
|
|
$hari = Hari::all();
|
|
$kode_pembelajaran = Kodemapel::all();
|
|
|
|
return view('jadwalpelajaran', compact('jurusan', 'kelas', 'jadwalpelajaran', 'hari', 'kode_pembelajaran'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'kelas' => 'required',
|
|
'hari' => 'required',
|
|
'total_jam' => 'required|integer|min:1',
|
|
]);
|
|
|
|
$id_kelas = $request->kelas;
|
|
$id_hari = $request->hari;
|
|
$total_jam = $request->total_jam;
|
|
|
|
// Cek apakah hari Jumat (misal id_hari = 5 untuk Jumat)
|
|
$isJumat = $id_hari == 5;
|
|
|
|
// Jika hari Jumat, ambil id_jam_pelajaran 16-30, selain itu 1-15
|
|
$jamPelajaran = DB::table('jam_pelajaran')
|
|
->whereBetween('id_jam_pelajaran', $isJumat ? [16, 30] : [1, 15])
|
|
->orderBy('id_jam_pelajaran', 'asc')
|
|
->pluck('id_jam_pelajaran');
|
|
|
|
// Menyesuaikan jumlah jam yang diambil (termasuk istirahat)
|
|
$jamTerpilih = $jamPelajaran->take($total_jam + floor($total_jam / 4));
|
|
|
|
foreach ($jamTerpilih as $jam) {
|
|
DB::table('jadwal_pelajaran')->insert([
|
|
'id_kelas' => $id_kelas,
|
|
'id_jam_pelajaran' => $jam,
|
|
'id_hari' => $id_hari,
|
|
'id_kodepembelajaran' => null, // Sesuaikan jika ada kode pembelajaran
|
|
]);
|
|
}
|
|
|
|
return redirect()->back()->with('success', 'Jadwal berhasil disimpan termasuk jam istirahat!');
|
|
}
|
|
|
|
|
|
// Modifikasi method getJadwal di JadwalPelajaranController
|
|
public function getJadwal(Request $request)
|
|
{
|
|
$jadwal = DB::table('jadwal_pelajaran')
|
|
->join('hari', 'jadwal_pelajaran.id_hari', '=', 'hari.id_hari')
|
|
->join('jam_pelajaran', 'jadwal_pelajaran.id_jam_pelajaran', '=', 'jam_pelajaran.id_jam_pelajaran')
|
|
->leftJoin('kode_pembelajaran', 'jadwal_pelajaran.id_kodepembelajaran', '=', 'kode_pembelajaran.id_kodepembelajaran')
|
|
->leftJoin('guru', 'kode_pembelajaran.id_guru', '=', 'guru.id_guru') // Join dengan tabel guru
|
|
->select(
|
|
'jadwal_pelajaran.id_jadwal',
|
|
'hari.nama_hari',
|
|
'hari.id_hari',
|
|
'jam_pelajaran.jamke',
|
|
'jam_pelajaran.id_jam_pelajaran',
|
|
'jam_pelajaran.jam_range',
|
|
'kode_pembelajaran.kode_mapel',
|
|
'guru.nama_guru',
|
|
'jadwal_pelajaran.id_kodepembelajaran'
|
|
)
|
|
->where('jadwal_pelajaran.id_kelas', $request->id_kelas)
|
|
->orderBy('hari.id_hari')
|
|
->orderBy('jadwal_pelajaran.id_jadwal') // Urut berdasarkan id_jadwal
|
|
->get();
|
|
|
|
return response()->json($jadwal);
|
|
}
|
|
|
|
|
|
// Add this method to JadwalPelajaranController
|
|
public function updatePembelajaran(Request $request)
|
|
{
|
|
$jadwal = DB::table('jadwal_pelajaran')
|
|
->where('id_kelas', $request->id_kelas)
|
|
->where('id_hari', $request->id_hari)
|
|
->where('id_jam_pelajaran', $request->id_jam_pelajaran)
|
|
->update(['id_kodepembelajaran' => $request->id_kodepembelajaran]);
|
|
|
|
return response()->json(['success' => true]);
|
|
}
|
|
}
|