auditionadmin/app/Http/Controllers/Admin/AuditionSettings.php

66 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Settings;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use function to_route;
class AuditionSettings extends Controller
{
public function index()
{
return view('admin.audition-settings');
}
/** @codeCoverageIgnore */
public function save(Request $request)
{
// TODO update validation rules to match the settings table
$validData = $request->validate([
'auditionName' => ['required'],
'auditionAbbreviation' => ['required', 'max:10'],
'organizerName' => ['required'],
'organizerEmail' => ['required', 'email'],
'registrationCode' => ['required'],
'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent,oneFeePerStudentPerEvent'],
// 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'],
'nomination_ensemble_rules' => ['required', 'in:disabled,scobda,meobda'],
// Options should align with the boot method of NominationEnsembleServiceProvider
]);
// 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');
}
}