auditionadmin/app/Http/Requests/AuditionStoreOrUpdateReques...

54 lines
1.7 KiB
PHP

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class AuditionStoreOrUpdateRequest extends FormRequest
{
public function authorize()
{
// Adjust authorization logic as needed
return auth()->user()->is_admin;
}
public function rules()
{
$auditionId = $this->route('audition') ? $this->route('audition')->id : null;
return [
'event_id' => ['required', 'exists:events,id'],
'name' => [
'required',
Rule::unique('auditions', 'name')->ignore($auditionId),
],
'entry_deadline' => ['required', 'date'],
'entry_fee' => ['required', 'numeric'],
'minimum_grade' => ['required', 'integer', 'min:1'],
'maximum_grade' => ['required', 'integer', 'min:1', 'gte:minimum_grade'],
'scoring_guide_id' => ['sometimes', 'nullable', 'exists:scoring_guides,id'],
'for_seating' => ['sometimes', 'boolean'],
'for_advancement' => ['sometimes', 'boolean'],
];
}
public function messages()
{
return [
'maximum_grade.gte' => 'The maximum grade must be greater than or equal to the minimum grade.',
'minimum_grade.min' => 'The minimum grade must be a positive integer.',
'maximum_grade.min' => 'The maximum grade must be a positive integer.',
];
}
protected function prepareForValidation()
{
// Convert checkbox inputs to boolean (1 or 0)
$this->merge([
'for_seating' => $this->has('for_seating') ? 1 : 0,
'for_advancement' => $this->has('for_advancement') ? 1 : 0,
]);
}
}