54 lines
1.7 KiB
PHP
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,
|
|
]);
|
|
}
|
|
}
|