middleware('check.permission:leave-reports.read')->only(['index']); } public function index(Request $request) { $employees = Employee::where('business_id', auth()->user()->business_id)->whereStatus('active')->latest()->get(); $leaves = Leave::with(['employee:id,name', 'leave_type:id,name', 'department:id,name']) ->where('business_id', auth()->user()->business_id) ->when($request->search, function ($query) use ($request) { $search = $request->search; $query->where(function ($query) use ($search) { $query->where('description', 'like', '%' . $search . '%') ->orWhere('start_date', 'like', '%' . $search . '%') ->orWhere('end_date', 'like', '%' . $search . '%') ->orWhere('leave_duration', 'like', '%' . $search . '%') ->orWhere('month', 'like', '%' . $search . '%') ->orWhere('status', 'like', '%' . $search . '%') ->orWhereHas('employee', function ($q) use ($search) { $q->where('name', 'like', '%' . $search . '%'); }) ->orWhereHas('department', function ($q) use ($search) { $q->where('name', 'like', '%' . $search . '%'); }) ->orWhereHas('leave_type', function ($q) use ($search) { $q->where('name', 'like', '%' . $search . '%'); }); }); }) ->when($request->employee, function ($query) use ($request) { $employeeId = $request->employee; $query->where('employee_id', $employeeId); }) ->when($request->filled('month'), function ($query) use ($request) { $query->where('month', $request->month); }) ->latest() ->paginate($request->per_page ?? 20)->appends($request->query()); if ($request->ajax()) { return response()->json([ 'data' => view('hrmaddon::reports.leaves.datas', compact('leaves'))->render() ]); } return view('hrmaddon::reports.leaves.index', compact('leaves', 'employees')); } }