JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "DeleteChannels.php"

Full Path: /home/markqprx/iniasli.pro/Channels/DeleteChannels.php
File size: 1.09 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Common\Channels;

use App\Models\Channel;
use Carbon\Carbon;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class DeleteChannels
{
    public function execute(Collection $channels): void
    {
        $channelIds = $channels
            ->filter(
                fn(Channel $channel) => !Arr::get(
                    $channel->config,
                    'preventDeletion',
                ),
            )
            ->pluck('id');

        // touch all channels that have channels we're deleting
        // nested so cache for them is cleared properly
        $parentChannelIds = DB::table('channelables')
            ->where('channelable_type', Channel::MODEL_TYPE)
            ->whereIn('channelable_id', $channelIds)
            ->pluck('channel_id');
        Channel::whereIn('id', $parentChannelIds)->update([
            'updated_at' => Carbon::now(),
        ]);

        DB::table('channelables')
            ->whereIn('channel_id', $channelIds)
            ->delete();
        Channel::whereIn('id', $channelIds)->delete();
    }
}