Files
technical-services-exchange/app/Http/Controllers/AdminController.php
T
2026-07-10 13:50:15 -05:00

40 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Attachment;
use App\Models\Dispute;
use App\Models\JobPost;
use App\Models\Review;
use App\Models\User;
use App\Models\WorkOrder;
use Illuminate\Http\Request;
use Illuminate\View\View;
class AdminController extends Controller
{
public function index(Request $request): View
{
abort_unless($request->user()->hasRole('admin'), 403);
return view('admin.index', [
'counts' => [
'users' => User::count(),
'jobs' => JobPost::count(),
'work_orders' => WorkOrder::count(),
'disputes' => Dispute::count(),
'attachments' => Attachment::count(),
],
'users' => User::with('roles')->latest()->limit(10)->get(),
'jobs' => JobPost::with('buyer')->latest()->limit(10)->get(),
'workOrders' => WorkOrder::with('jobPost', 'buyer', 'provider')->latest()->limit(10)->get(),
'disputes' => Dispute::with('workOrder.jobPost', 'openedBy')->latest()->limit(10)->get(),
'reportedReviews' => Review::with('workOrder.jobPost', 'reviewer', 'reviewee', 'reportedBy')
->where('moderation_status', 'reported')
->latest('reported_at')
->limit(10)
->get(),
]);
}
}