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, ]); } }