Files
hstream/app/Livewire/Playlists.php
2025-09-18 15:31:27 +02:00

66 lines
1.7 KiB
PHP

<?php
namespace App\Livewire;
use App\Models\Playlist;
use Livewire\Component;
use Livewire\WithPagination;
use Livewire\Attributes\Url;
class Playlists extends Component
{
use WithPagination;
#[Url(history: true)]
public $search;
#[Url(history: true)]
public $order = 'episode-count';
public $pagination = 12;
public function render()
{
$orderby = 'episodes_count';
$orderdirection = 'desc';
switch ($this->order) {
case 'az':
$orderby = 'name';
$orderdirection = 'asc';
break;
case 'za':
$orderby = 'name';
$orderdirection = 'desc';
break;
case 'episode-count':
$orderby = 'episodes_count';
$orderdirection = 'desc';
break;
case 'newest':
$orderby = 'created_at';
$orderdirection = 'desc';
break;
case 'oldest':
$orderby = 'created_at';
$orderdirection = 'asc';
break;
default:
$orderby = 'episodes_count';
$orderdirection = 'desc';
}
$playlists = Playlist::where('is_private', 0)
->withCount('episodes')
->having('episodes_count', '>', 1)
->when($this->search != '', fn($query) => $query->where('name', 'like', '%' . $this->search . '%'))
->orderBy($orderby, $orderdirection)
->paginate($this->pagination);
return view('livewire.playlists', [
'playlists' => $playlists
]);
}
}