validate([ 'name' => ['required', 'string', 'max:50'], 'start_date' => ['required', 'date'], 'end_date' => ['required', 'date', 'after:start_date'], 'is_current' => ['nullable', 'boolean'], ]); $validated['is_current'] = !empty($validated['is_current']); if ($validated['is_current']) { Season::where('is_current', true)->update(['is_current' => false]); } Season::create($validated); return redirect()->route('admin.settings.edit', ['tab' => 'seasons']) ->with('success', __('admin.season_created')); } public function update(Request $request, Season $season): RedirectResponse { $validated = $request->validate([ 'name' => ['required', 'string', 'max:50'], 'start_date' => ['required', 'date'], 'end_date' => ['required', 'date', 'after:start_date'], 'is_current' => ['nullable', 'boolean'], ]); $validated['is_current'] = !empty($validated['is_current']); if ($validated['is_current']) { Season::where('is_current', true)->where('id', '!=', $season->id)->update(['is_current' => false]); } $season->update($validated); return redirect()->route('admin.settings.edit', ['tab' => 'seasons']) ->with('success', __('admin.season_updated')); } public function destroy(Season $season): RedirectResponse { $hasData = Finance::whereBetween('date', [$season->start_date, $season->end_date])->exists(); if ($hasData) { return redirect()->route('admin.settings.edit', ['tab' => 'seasons']) ->with('error', __('admin.season_has_data')); } $season->delete(); return redirect()->route('admin.settings.edit', ['tab' => 'seasons']) ->with('success', __('admin.season_deleted')); } }