File: /home/xedaptot/ai.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']);
}
}