/home2/mshostin/farms.ms-hostingladz.com/app/Http/Controllers/Backend/AdminController.php
<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use App\Models\Activity;
use Illuminate\Http\Request;

class AdminController extends Controller
{
    public function __construct()
    {
        $permissions = [
            // 'activityLogs' => 'view-activityLogs',
        ];

        foreach ($permissions as $method => $permission) {
            $this->middleware("permission:{$permission}")->only($method);
        }
    }

    public function activityLogs(Request $request)
    {
        $search = $request->input('search');

        $query = Activity::with(['causer', 'subject']);

        $user = auth()->user();
        if (! $user->hasRole('super_admin') && $user->farm) {
            $farmUserIds = $user->farm->users()->pluck('id');
            $query->where('causer_type', \App\Models\User::class)
                ->whereIn('causer_id', $farmUserIds);
        }

        $logs = $query->when($search, function ($query) use ($search) {
            $query->where(function ($q) use ($search) {
                $q->where('log_name', 'LIKE', "%{$search}%")
                    ->orWhere('description', 'LIKE', "%{$search}%")
                    ->orWhere('causer_type', 'LIKE', "%{$search}%")
                    ->orWhere('subject_type', 'LIKE', "%{$search}%")
                    ->orWhere('properties', 'LIKE', "%{$search}%")
                    ->orWhere('created_at', 'LIKE', "%{$search}%");
            });
        })
            ->latest()
            ->paginate(20)
            ->appends(['search' => $search]);

        return view('dashboard.pages.activity_logs', compact('logs', 'search'));
    }
    // public function activityLogs(Request $request)
    // {
    //     $search = $request->input('search');

    //     $logs = Activity::when($search, function ($query) use ($search) {
    //         $query->where(function ($q) use ($search) {
    //             $q->where('log_name', 'LIKE', "%{$search}%")
    //                 ->orWhere('description', 'LIKE', "%{$search}%")
    //                 ->orWhere('causer_type', 'LIKE', "%{$search}%")
    //                 ->orWhere('subject_type', 'LIKE', "%{$search}%")
    //                 ->orWhere('properties', 'LIKE', "%{$search}%")
    //                 ->orWhere('created_at', 'LIKE', "%{$search}%");
    //         });
    //     })
    //         ->latest()
    //         ->paginate(20)
    //         ->appends(['search' => $search]);

    //     return view('dashboard.pages.activity_logs', compact('logs', 'search'));
    // }
}