/home2/mshostin/crm.ms-hostingladz.com/app/Http/Controllers/LogController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\logs;
use App\Models\User;
use App\Models\Complaints;
use Illuminate\Support\Facades\DB;

class LogController extends Controller
{
    /**
     * Display a listing of the logs with advanced filtering
     */
    public function index(Request $request)
    {
        if ($request->ajax()) {
            return $this->getLogsData($request);
        }

        $users = User::where('status', 1)->orderBy('name', 'asc')->get();
        $complaints = Complaints::select('id', 'comp_num')->orderBy('comp_num', 'asc')->get();

        return view('pages.logs.index', compact('users', 'complaints'));
    }

    /**
     * Display the specified log entry
     */
    public function detail($id)
    {
        $log = logs::with(['user', 'complaint'])->findOrFail($id);
        return view('pages.logs.detail', compact('log'));
    }

    /**
     * Get logs data for AJAX requests
     */
    private function getLogsData(Request $request)
    {
        $query = logs::with(['user', 'complaint']);

        // Filter by user
        if ($request->filled('user_id')) {
            $query->where('user_id', $request->user_id);
        }

        // Filter by action
        if ($request->filled('action')) {
            $query->where('action', $request->action);
        }

        // Filter by complaint number
        if ($request->filled('complaint_number')) {
            $query->whereHas('complaint', function($q) use ($request) {
                $q->where('comp_num', 'LIKE', '%' . $request->complaint_number . '%');
            });
        }

        // Filter by user email
        if ($request->filled('user_email')) {
            $query->whereHas('user', function($q) use ($request) {
                $q->where('email', 'LIKE', '%' . $request->user_email . '%');
            });
        }

        // Filter by user name
        if ($request->filled('user_name')) {
            $query->whereHas('user', function($q) use ($request) {
                $q->where('name', 'LIKE', '%' . $request->user_name . '%');
            });
        }

        // Filter by date range
        if ($request->filled('date_from')) {
            $query->whereDate('created_at', '>=', $request->date_from);
        }

        if ($request->filled('date_to')) {
            $query->whereDate('created_at', '<=', $request->date_to);
        }

        $logs = $query->orderBy('created_at', 'desc')->paginate(15);

        $html = view('pages.logs.partials.logs-table', compact('logs'))->render();

        return response()->json([
            'html' => $html,
            'pagination' => $logs->links()->toHtml()
        ]);
    }
}