fix apply the plan docs/alrahma_api_fix_plan_school_year_only_v7
API CI/CD / Validate (composer + pint) (push) Successful in 3m10s
API CI/CD / Test (PHPUnit) (push) Failing after 6m49s
API CI/CD / Build frontend assets (push) Successful in 1m3s
API CI/CD / Security audit (push) Failing after 1m0s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped

This commit is contained in:
root
2026-07-07 01:52:29 -04:00
parent 58726ee0e9
commit 031e499819
35 changed files with 5633 additions and 182 deletions
@@ -9,9 +9,9 @@ use App\Http\Requests\Families\FamilyAdminSearchRequest;
use App\Http\Requests\Families\FamilyComposeEmailRequest;
use App\Http\Resources\Families\FamilyResource;
use App\Http\Resources\Families\FamilySearchItemResource;
use App\Models\Configuration;
use App\Services\Families\FamilyNotificationService;
use App\Services\Families\FamilyQueryService;
use App\Services\SchoolYears\SelectedSchoolYearContextService;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpFoundation\Response;
@@ -20,7 +20,8 @@ class FamilyAdminController extends BaseApiController
{
public function __construct(
private FamilyQueryService $queryService,
private FamilyNotificationService $notificationService
private FamilyNotificationService $notificationService,
private SelectedSchoolYearContextService $schoolYears
) {
parent::__construct();
}
@@ -28,7 +29,7 @@ class FamilyAdminController extends BaseApiController
public function index(FamilyAdminIndexRequest $request): JsonResponse
{
$payload = $request->validated();
$schoolYear = $this->requestedSchoolYear($request, $payload);
$schoolYear = $this->requestedSchoolYear($request);
$data = $this->queryService->adminIndexData(
$payload['student_id'] ?? null,
@@ -63,7 +64,7 @@ class FamilyAdminController extends BaseApiController
public function card(FamilyAdminCardRequest $request): JsonResponse
{
$payload = $request->validated();
$schoolYear = $this->requestedSchoolYear($request, $payload);
$schoolYear = $this->requestedSchoolYear($request);
$family = $this->queryService->familyCard(
$payload['student_id'] ?? null,
@@ -79,24 +80,9 @@ class FamilyAdminController extends BaseApiController
return $this->success(new FamilyResource($family));
}
private function requestedSchoolYear($request, array $payload): string
private function requestedSchoolYear($request): string
{
$candidates = [
$payload['school_year'] ?? null,
$request->query('school_year'),
$request->header('X-School-Year'),
$request->header('X-Selected-School-Year'),
Configuration::getConfig('school_year'),
];
foreach ($candidates as $candidate) {
$value = trim((string) ($candidate ?? ''));
if ($value !== '') {
return $value;
}
}
return '';
return $this->schoolYears->fromRequest($request)->name;
}
public function composeEmail(FamilyComposeEmailRequest $request): JsonResponse