validate([ 'auditionName' => ['required'], 'auditionAbbreviation' => ['required', 'max:10'], 'organizerName' => ['required'], 'organizerEmail' => ['required', 'email'], 'registrationCode' => ['required'], 'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent'], // Options should align with the boot method of InvoiceDataServiceProvider 'late_fee' => ['nullable', 'numeric', 'min:0'], 'school_fee' => ['nullable', 'numeric', 'min:0'], 'payment_address' => ['required'], 'payment_city' => ['required'], 'payment_state' => ['required', 'max:2'], 'payment_zip' => ['required', 'min:5'], 'advanceTo' => ['nullable'], ]); // Olympic Scoring Switch $validData['olympic_scoring'] = $request->get('olympic_scoring') == '1'; // Judging Enabled Switch $validData['judging_enabled'] = $request->get('judging_enabled') == '1'; // Enable Invoicing Switch $validData['invoicing_enabled'] = $request->get('invoicing_enabled') == '1'; // Enable collect shirt size switch $validData['student_data_collect_shirt_size'] = $request->get('student_data_collect_shirt_size') == '1'; // Store currency values as cents $validData['late_fee'] = $validData['late_fee'] * 100; $validData['school_fee'] = $validData['school_fee'] * 100; foreach ($validData as $key => $value) { Settings::set($key, $value); } Cache::flush(); return to_route('audition-settings')->with('success', 'Settings Saved'); } }