atcheck/app/Http/Controllers/User/UserClassesController.php

102 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers\User;
use App\Attendance;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Subject;
use App\Classes;
use Illuminate\Support\Facades\Auth;
class UserClassesController extends Controller
{
public function index($groupBy='subject_id')
{
$user_id = Auth::id();
$subjects = Subject::where('user_id', $user_id)->get();
$subjects_ids = $subjects->pluck('id')->toArray();
$classes = Classes::whereIn('subject_id', $subjects_ids)->get();
foreach($classes as $classes_item) {
$current_date = date('Y-m-d H:i:s');
$classes_date = $classes_item->date;
$hours_difference = checkHoursDifference($classes_date, $current_date);
if ($hours_difference > 24) {
$classes_item->classes_code = null;
$classes_item->save();
$classes_item->refresh();
}
}
$classes_grouped = $classes->groupBy($groupBy);
$defaultDate = date("Y-m-d");
return view('user.user_classes', ['classes' => $classes, 'classes_grouped' => $classes_grouped, 'subjects' => $subjects, 'grouped_by' => $groupBy, 'defaultDate' => $defaultDate]);
}
public function add_classes(Request $request)
{
$subject_id = $request->input('subject_id');
$date = $request->input('date');
$classes_id = Classes::create([
'subject_id' => $subject_id,
'date' => $date
])->id;
return redirect(route('user_start_classes', ['classes_id' => $classes_id]));
}
public function delete_classes($classes_id)
{
Classes::find($classes_id)->delete();
return redirect(route('user_classes'));
}
public function edit_classes($classes_id)
{
Classes::find($classes_id);
return redirect(route('user_classes'));
}
public function start_classes($classes_id)
{
$classes = Classes::find($classes_id);
$classes_code = $classes->classes_code;
if(!$classes_code){
$classes_code = generateRandomString(10);
$classes->classes_code = $classes_code;
$classes->save();
$classes->refresh();
}
return view('map.start_map', ['classes_code' => $classes_code, 'classes' => $classes]);
}
public function start_classes_verified(Request $request)
{
$student_id_number = $request->input('student_id_number');
$student_name = $request->input('student_name');
$student_surname = $request->input('student_surname');
$classes = Classes::find($request->get('classes_id'));
$attendances = Attendance::where('classes_id', $classes->id)->get();
$seat_numbers = $attendances->pluck('seat_number')->toArray();
return view('map.seat_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'seat_numbers' => $seat_numbers]);
}
public function save_classes_data(Request $request)
{
$classes_id = $request->input('classes_id');
$student_id_number = $request->input('student_id_number');
$student_name = $request->input('student_name');
$student_surname = $request->input('student_surname');
$seat_number = $request->input('seat_number');
Attendance::create([
'classes_id' => $classes_id,
'student_id_number' => $student_id_number,
'student_name' => $student_name,
'student_surname' => $student_surname,
'seat_number' => $seat_number,
]);
return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $seat_number, 'student_id_number' => $student_id_number, 'classes_id' => $classes_id]);
}
}