Files
2026-03-09 16:03:16 -04:00

77 lines
2.0 KiB
PHP

<?php
namespace App\Http\Requests\Administrator;
use App\Http\Requests\ApiFormRequest;
use Illuminate\Validation\Rule;
class UpdateEnrollmentStatusesRequest extends ApiFormRequest
{
public function validationData(): array
{
$data = $this->all();
if (array_key_exists('enrollment_status', $data)) {
return $data;
}
$raw = $this->getContent() ?: '';
if ($raw !== '') {
$json = json_decode($raw, true);
if (is_array($json)) {
return array_merge($data, $json);
}
parse_str($raw, $parsed);
if (is_array($parsed)) {
return array_merge($data, $parsed);
}
}
$queryString = (string) $this->server->get('QUERY_STRING', '');
if ($queryString !== '') {
$parsedQuery = [];
parse_str($queryString, $parsedQuery);
if (is_array($parsedQuery)) {
return array_merge($data, $parsedQuery);
}
}
return $data;
}
public function authorize(): bool
{
return auth()->check();
}
public function rules(): array
{
$allowedStatuses = [
'admission under review',
'payment pending',
'enrolled',
'withdraw under review',
'refund pending',
'withdrawn',
'denied',
'waitlist',
];
return [
'enrollment_status' => ['required', 'array', 'min:1'],
'enrollment_status.*' => ['required', 'string', Rule::in($allowedStatuses)],
];
}
public function messages(): array
{
return [
'enrollment_status.required' => 'Enrollment statuses are required.',
'enrollment_status.array' => 'Enrollment statuses must be an array.',
'enrollment_status.min' => 'At least one enrollment status is required.',
'enrollment_status.*.in' => 'One or more enrollment statuses are invalid.',
];
}
}