76 lines
2.6 KiB
PHP
76 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\User;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Exports\AttendanceExportView;
|
|
use App\Exports\AttendanceGroupedExportView;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
use App\Subject;
|
|
use App\Classes;
|
|
use App\Attendance;
|
|
|
|
class UserAttendancesController extends Controller
|
|
{
|
|
public function index($groupBy='classes_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)->orderBy('created_at','DESC')->get();
|
|
$classes_ids = $classes->pluck('id')->toArray();
|
|
$attendances = Attendance::whereIn('classes_id', $classes_ids)->get();
|
|
$attendances_grouped = $attendances->groupBy($groupBy);
|
|
return view('user.user_attendances', ['attendances' => $attendances, 'attendances_grouped' => $attendances_grouped, 'classes' => $classes, 'grouped_by' => $groupBy]);
|
|
}
|
|
|
|
public function add_attendance(Request $request)
|
|
{
|
|
$classes_id = $request->input('classes_id');
|
|
$student_id_number = $request->input('student_id');
|
|
$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 redirect(route('user_attendances'));
|
|
}
|
|
|
|
public function delete_attendance($attendance_id)
|
|
{
|
|
Attendance::find($attendance_id)->delete();
|
|
return redirect(route('user_attendances'));
|
|
}
|
|
|
|
public function edit_attendance($attendance_id)
|
|
{
|
|
Attendance::find($attendance_id);
|
|
return redirect(route('user_attendances'));
|
|
}
|
|
|
|
public function export($classes_id)
|
|
{
|
|
$classes_date = Classes::find($classes_id)->date;
|
|
return Excel::download(new AttendanceExportView($classes_id), "classes-attendance-{$classes_date}.xlsx");
|
|
}
|
|
|
|
public function export_grouped($groupBy)
|
|
{
|
|
$today_date = date('Y-m-d');
|
|
$groupByLabel = str_replace("_", "-", $groupBy);
|
|
if($groupBy == 'classes_id') {
|
|
$groupByLabel = 'classes_name';
|
|
}
|
|
return Excel::download(new AttendanceGroupedExportView($groupBy), "all-attendance-grouped-by-{$groupByLabel}-{$today_date}.xlsx");
|
|
}
|
|
|
|
}
|