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/be.naniguide.com/app/Http/Controllers/Refactor/Ads/AdActivityController.php
<?php

namespace App\Http\Controllers\Refactor\Ads;

use App\Http\Controllers\Controller;
use App\Model\AdActivityLog;
use App\Services\Ads\AdActivityLogger;
use Illuminate\Http\Request;

class AdActivityController extends Controller
{
    public function index(Request $request)
    {
        $customer = $request->user()->customer->local();

        $base = AdActivityLog::ofCustomer($customer);

        $counts = [
            'total' => (clone $base)->count(),
            'success' => (clone $base)->where('status', AdActivityLog::STATUS_SUCCESS)->count(),
            'warning' => (clone $base)->where('status', AdActivityLog::STATUS_WARNING)->count(),
            'error' => (clone $base)->where('status', AdActivityLog::STATUS_ERROR)->count(),
            'unread' => (clone $base)->unreadByCustomer()->count(),
        ];

        return view('refactor.pages.ads.activity.index', compact('counts'));
    }

    public function listing(Request $request)
    {
        $customer = $request->user()->customer;

        $logs = AdActivityLog::ofCustomer($customer->local())
            ->when($request->status, fn ($q, $s) => $q->where('status', $s))
            ->when($request->platform, fn ($q, $p) => $q->ofPlatform($p))
            ->search($request->keyword)
            ->orderBy('created_at', 'desc')
            ->paginate($request->per_page ?? 15);

        return view('refactor.pages.ads.activity._list', [
            'logs' => $logs,
        ]);
    }

    public function markRead(Request $request)
    {
        $customer = $request->user()->customer;
        AdActivityLogger::markAllReadForCustomer($customer->local()->id);

        return response()->json(['status' => 'success']);
    }
}