episodeId = $episode->id; $this->interpolated = $interpolated; $user = Auth::user()->id; if (Auth::check()) { $this->downloadsLeft = (int) User::where('id', $user)->firstOrFail()->downloads_left; } if ($this->downloadsLeft === 0) { $this->granted = 3; } if ($episode->created_at >= Carbon::now()->subDays(7)) { $this->granted = 4; } $alreadyDownloaded = UserDownload::where('user_id', $user) ->where('episode_id', $this->episodeId) ->where('interpolated', $this->interpolated) ->first(); if ($alreadyDownloaded) { // Check timestamp if (Carbon::parse($alreadyDownloaded->created_at)->addHours(6) <= Carbon::now()) { // Already expired $alreadyDownloaded->forceDelete(); return; } $this->override = true; } } public function generate() { $user = User::where('id', Auth::user()->id)->firstOrFail(); if ($user->downloads_left <= 0) { // Daily limit reached $this->granted = 3; return; } $user->downloads_left -= 1; $user->save(); $this->downloadsLeft -= 1; $this->granted = 1; UserDownload::create([ 'user_id' => $user->id, 'episode_id' => $this->episodeId, 'interpolated' => $this->interpolated, ]); } public function render() { return view('livewire.downloads-free'); } }