Files
alrahma_sunday_school_api/app/Http/Controllers/Api/Attendance/TeacherAttendanceApiController.php
T
2026-03-08 16:33:24 -04:00

58 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Api\Attendance;
use App\Http\Controllers\Controller;
use App\Http\Requests\Attendance\TeacherSubmitAttendanceRequest;
use App\Http\Resources\Attendance\TeacherAttendanceFormResource;
use App\Http\Resources\Attendance\TeacherGridResource;
use App\Services\Attendance\AttendanceQueryService;
use App\Services\Attendance\AttendanceService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Throwable;
class TeacherAttendanceApiController extends Controller
{
public function __construct(
protected AttendanceQueryService $queryService,
protected AttendanceService $attendanceService
) {}
public function grid(Request $request): TeacherGridResource
{
$semester = (string)($request->query('semester') ?: $this->attendanceService->currentSemester());
$schoolYear = (string)($request->query('school_year') ?: $this->attendanceService->currentSchoolYear());
$date = (string)($request->query('date') ?: now()->toDateString());
$sectionCode = (int)$request->query('class_section_id', 0);
return new TeacherGridResource(
$this->queryService->teacherGrid($semester, $schoolYear, $date, $sectionCode)
);
}
public function form(Request $request): JsonResponse|TeacherAttendanceFormResource
{
try {
return new TeacherAttendanceFormResource(
$this->queryService->teacherAttendanceFormData(
auth()->id(),
(int)$request->query('class_section_id', 0)
)
);
} catch (Throwable $e) {
return response()->json(['message' => $e->getMessage()], 422);
}
}
public function submit(TeacherSubmitAttendanceRequest $request): JsonResponse
{
try {
return response()->json(
$this->attendanceService->submitTeacherAttendance(auth()->user(), $request->validated())
);
} catch (Throwable $e) {
return response()->json(['message' => $e->getMessage()], 422);
}
}
}