academy/app/Http/Controllers/TimetableController.php

54 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Timetable;
use Carbon\Carbon;
class TimetableController extends Controller
{
public function index()
{
// Session Check
$studentLogId = session('student_log_id') ?? session('student_id');
if (!$studentLogId) {
return redirect('/signin')->with('error', 'Please login first!');
}
// 1. All Timetable Records Get
// (තනි Student ට අදාළ දත්ත හෝ පොදු Timetable දත්ත)
$rawTimetables = Timetable::whereNull('student_log_id')
->orWhere('student_log_id', $studentLogId)
->orderBy('sort_order', 'asc')
->get();
// Data එක Table එකට ලෙහෙසියෙන් Group කර ගැනීම
// Array structure: $schedule[TimeSlot][Day] = Item
$schedule = [];
$timeSlots = [];
foreach ($rawTimetables as $item) {
if (!in_array($item->time_slot, $timeSlots)) {
$timeSlots[] = $item->time_slot;
}
$schedule[$item->time_slot][$item->day] = $item;
}
// 2. Today's Schedule (අද දවසේ පන්ති පමණක් ලබා ගැනීම)
$todayName = Carbon::now()->format('l'); // Monday, Tuesday etc.
$todaySchedule = Timetable::where('day', $todayName)
->where(function($q) use ($studentLogId) {
$q->whereNull('student_log_id')
->orWhere('student_log_id', $studentLogId);
})
->where('type', '!=', 'Break')
->orderBy('sort_order', 'asc')
->get();
$days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
return view('timetable', compact('schedule', 'timeSlots', 'days', 'todaySchedule', 'todayName'));
}
}