HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/iphim.naniguide.com/common/Channels/PaginateChannels.php
<?php

namespace Common\Channels;

use App\Models\Channel;
use Common\Database\Datasource\Datasource;
use Illuminate\Pagination\AbstractPaginator;

class PaginateChannels
{
    public function execute(array $params): AbstractPaginator
    {
        //        $builder = Channel::where('type', 'channel')->whereNotExists(function (
        //            $query,
        //        ) {
        //            $query
        //                ->select('id')
        //                ->from('channelables')
        //                ->whereColumn('channelable_id', 'channels.id');
        //        });

        $builder = Channel::where('type', 'channel');

        $paginator = new Datasource($builder, $params);

        if (!isset($params['orderBy'])) {
            $builder->orderByRaw('`internal` = "1" desc, `updated_at` desc');
            $paginator->order = false;
        }

        $pagination = $paginator->paginate();

        $pagination->transform(function (Channel $channel) {
            $channel->makeVisible(['internal']);
            return $channel;
        });

        return $pagination;
    }
}