model->newQuery()->with(['deceased', 'client', 'vehicle', 'departureLocation']); if (! empty($filters['search'])) { $query->where(function ($q) use ($filters) { $q->where('mission_title', 'like', '%' . $filters['search'] . '%') ->orWhere('family_email', 'like', '%' . $filters['search'] . '%') ->orWhere('departure_name', 'like', '%' . $filters['search'] . '%') ->orWhere('departure_city', 'like', '%' . $filters['search'] . '%'); }); } if (! empty($filters['status'])) { $query->where('status', $filters['status']); } if (! empty($filters['convoy_type'])) { $query->where('convoy_type', $filters['convoy_type']); } if (! empty($filters['vehicle_id'])) { $query->where('vehicle_id', $filters['vehicle_id']); } if (! empty($filters['deceased_id'])) { $query->where('deceased_id', $filters['deceased_id']); } $sortField = $filters['sort_by'] ?? 'planned_start_at'; $sortDirection = $filters['sort_direction'] ?? 'desc'; return $query->orderBy($sortField, $sortDirection)->paginate($perPage); } }