(bool) WebsiteSetting::where('key', 'radio_requests_enabled')->first()?->value); } public function index(): View|RedirectResponse { if (! $this->isRequestsEnabled()) { return redirect()->route('radio.index')->with('error', __('radio.requests_disabled')); } return view('community.radio.requests'); } public function store(RadioSongRequestFormRequest $request): RedirectResponse { if (! $this->isRequestsEnabled()) { return redirect()->route('radio.index')->with('error', __('radio.requests_disabled')); } $validated = $request->validated(); $user = auth()->user(); $recentRequest = RadioSongRequest::where('user_id', $user->id) ->where('submitted_at', '>', now()->subMinutes(10)) ->exists(); if ($recentRequest) { return back()->with('error', __('radio.request_cooldown')); } RadioSongRequest::create([ 'user_id' => $user->id, 'artist' => $validated['artist'], 'title' => $validated['title'], 'message' => $validated['message'] ?? null, 'ip_address' => $request->ip(), 'is_approved' => false, 'submitted_at' => now(), 'votes' => 0, 'is_played' => false, ]); return back()->with('success', __('radio.request_submitted')); } public function vote(RadioSongRequest $songRequest): RedirectResponse { $user = auth()->user(); if ($songRequest->is_played) { return back()->with('error', __('radio.already_played')); } if ($songRequest->hasUserVoted($user)) { return back()->with('error', __('radio.already_voted')); } $songRequest->addVote($user); return back()->with('success', __('radio.vote_submitted')); } }