fix exam and grading

This commit is contained in:
root
2026-06-04 13:25:31 -04:00
parent b4e6ac03c5
commit feb6be0610
22 changed files with 1288 additions and 120 deletions
@@ -4,6 +4,10 @@ namespace App\Http\Controllers\Api\Grading;
use App\Http\Controllers\Api\Core\BaseApiController;
use App\Http\Requests\Grading\BelowSixtyEmailRequest;
use App\Http\Requests\Grading\BelowSixtyDecisionDetailsRequest;
use App\Http\Requests\Grading\BelowSixtyDecisionListRequest;
use App\Http\Requests\Grading\BelowSixtyDecisionSaveRequest;
use App\Http\Requests\Grading\BelowSixtyDecisionSendRequest;
use App\Http\Requests\Grading\BelowSixtyMeetingRequest;
use App\Http\Requests\Grading\BelowSixtyMeetingSaveRequest;
use App\Http\Requests\Grading\BelowSixtySendRequest;
@@ -312,6 +316,73 @@ class GradingController extends BaseApiController
return response()->json(['ok' => true] + $data);
}
public function belowSixtyDecisions(BelowSixtyDecisionListRequest $request): JsonResponse
{
$payload = $request->validated();
$rows = $this->belowSixtyService->listDecisionRows((string) $payload['school_year']);
return response()->json([
'ok' => true,
'rows' => $rows,
'school_year' => $payload['school_year'],
'semester' => 'year',
]);
}
public function saveBelowSixtyDecision(BelowSixtyDecisionSaveRequest $request): JsonResponse
{
$userId = $this->authenticatedUserIdOrUnauthorized();
if ($userId instanceof JsonResponse) {
return $userId;
}
$payload = $request->validated();
$result = $this->belowSixtyService->saveDecision(
(int) $payload['student_id'],
(string) $payload['school_year'],
(string) ($payload['decision'] ?? ''),
(string) ($payload['notes'] ?? ''),
$userId
);
return response()->json(['ok' => true, 'decision' => $result]);
}
public function belowSixtyDecisionDetails(BelowSixtyDecisionDetailsRequest $request): JsonResponse
{
$payload = $request->validated();
$data = $this->belowSixtyService->studentDecisionDetails(
(int) $payload['student_id'],
(string) $payload['school_year']
);
return response()->json(['ok' => true] + $data);
}
public function belowSixtyDecisionEmail(BelowSixtyDecisionDetailsRequest $request): JsonResponse
{
$payload = $request->validated();
$data = $this->belowSixtyService->decisionEmailContext(
(int) $payload['student_id'],
(string) $payload['school_year']
);
return response()->json(['ok' => true] + $data);
}
public function sendBelowSixtyDecisionEmail(BelowSixtyDecisionSendRequest $request): JsonResponse
{
$payload = $request->validated();
$this->belowSixtyService->sendDecisionEmail(
(int) $payload['student_id'],
(string) $payload['school_year'],
isset($payload['subject']) ? (string) $payload['subject'] : null,
isset($payload['html']) ? (string) $payload['html'] : null
);
return response()->json(['ok' => true]);
}
public function saveBelowSixtyMeeting(BelowSixtyMeetingSaveRequest $request): JsonResponse
{
$userId = $this->authenticatedUserIdOrUnauthorized();