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

54 lines
1.7 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');
}
public function save(Request $request)
{
$validData = $request->validate([
'auditionName' => ['required'],
'auditionAbbreviation' => ['required', 'max:8'],
'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'],
]);
// Olympic Scoring Switch
$validData['olympic_scoring'] = $request->get('olympic_scoring') == '1';
// Judging Enabled Switch
$validData['judging_enabled'] = $request->get('judging_enabled') == '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');
}
}