namespace App\Http\Controllers\Front; use App\Http\Controllers\Controller; use App\Mail\ListingPageMessage; use App\Mail\ListingPageReport; use App\Models\EmailTemplate; use App\Models\GeneralSetting; use App\Models\Listing; use App\Models\ListingAdditionalFeature; use App\Models\ListingAmenity; use App\Models\ListingBrand; use App\Models\ListingLocation; use App\Models\ListingPhoto; use App\Models\ListingSocialItem; use App\Models\ListingVideo; use App\Models\Amenity; use App\Models\PageListingBrandItem; use App\Models\PageListingItem; use App\Models\PageListingLocationItem; use App\Models\Review; use App\Models\Wishlist; use App\Models\User; use App\Models\Admin; use Illuminate\Http\Request; use DB; use Auth; use Illuminate\Support\Facades\Mail; class ListingController extends Controller { public function index() { abort(404); } public function detail($id, $slug) { $g_setting = GeneralSetting::where('id', 1)->first(); $detail = Listing::with('rListingLocation', 'rListingBrand') ->where('id', $id) ->where('listing_slug', $slug) ->first(); $listing_social_items = ListingSocialItem::where('listing_id', $detail->id)->get(); $listing_photos = ListingPhoto::where('listing_id', $detail->id)->get(); $listing_videos = ListingVideo::where('listing_id', $detail->id)->get(); $listing_amenities = ListingAmenity::where('listing_id', $detail->id)->get(); $listing_additional_features = ListingAdditionalFeature::where('listing_id', $detail->id)->get(); $listing_brands = ListingBrand::orderBy('listing_brand_name', 'asc')->get(); $listing_locations = ListingLocation::orderBy('listing_location_name', 'asc')->get(); $reviews = Review::where('listing_id', $detail->id) ->orderBy('id', 'asc') ->get(); if ($reviews->isEmpty()) { $overall_rating = 0; } else { $total_number = 0; $count = 0; foreach ($reviews as $item) { $count++; $total_number = $total_number + $item->rating; } $overall_rating = $total_number / $count; $overall_rating = round($overall_rating * 2) / 2; } if ($detail->user_id == 0) { $agent_detail = Admin::where('id', $detail->admin_id)->first(); } elseif ($detail->admin_id == 0) { $agent_detail = User::where('id', $detail->user_id)->first(); } $current_auth_user_id = 0; if (Auth::user()) { $current_auth_user_id = Auth::user()->id; } $already_given = Review::where('listing_id', $detail->id) ->where('agent_id', $current_auth_user_id) ->where('agent_type', 'Customer') ->count(); $all_amenities = Amenity::orderBy('id', 'asc')->get(); return view('front.listing_detail', compact('detail', 'g_setting', 'listing_social_items', 'listing_photos', 'listing_videos', 'listing_amenities', 'listing_additional_features', 'listing_brands', 'listing_locations', 'agent_detail', 'reviews', 'current_auth_user_id', 'already_given', 'overall_rating', 'all_amenities')); } public function search_listing(Request $request) { $query = Listing::query(); if ($request->has('amenities')) { $query->whereHas('listingAminities', function ($q) use ($request) { $q->whereIn('amenity_id', $request->input('amenities')); }); } if ($request->has('brand_id')) { $query->where('listing_brand_id', $request->input('brand_id')); } if ($request->has('location_id')) { $query->where('listing_location_id', $request->input('location_id')); } if ($request->has('price_min') && $request->has('price_max')) { $query->whereBetween('listing_price', [$request->input('price_min'), $request->input('price_max')]); } $listings = $query->get(['id', 'listing_name as title', 'listing_price as price', 'listing_featured_photo as imageUrl']); return response()->json($listings); } } namespace App\Http\Controllers\Front; use App\Http\Controllers\Controller; use App\Mail\ListingPageMessage; use App\Mail\ListingPageReport; use App\Models\EmailTemplate; use App\Models\GeneralSetting; use App\Models\Listing; use App\Models\ListingAdditionalFeature; use App\Models\ListingAmenity; use App\Models\ListingBrand; use App\Models\ListingLocation; use App\Models\ListingPhoto; use App\Models\ListingSocialItem; use App\Models\ListingVideo; use App\Models\Amenity; use App\Models\PageListingBrandItem; use App\Models\PageListingItem; use App\Models\PageListingLocationItem; use App\Models\Review; use App\Models\Wishlist; use App\Models\User; use App\Models\Admin; use Illuminate\Http\Request; use DB; use Auth; use Illuminate\Support\Facades\Mail; class ListingController extends Controller { public function index() { abort(404); } public function detail($id, $slug) { $g_setting = GeneralSetting::where('id', 1)->first(); $detail = Listing::with('rListingLocation', 'rListingBrand') ->where('id', $id) ->where('listing_slug', $slug) ->first(); $listing_social_items = ListingSocialItem::where('listing_id', $detail->id)->get(); $listing_photos = ListingPhoto::where('listing_id', $detail->id)->get(); $listing_videos = ListingVideo::where('listing_id', $detail->id)->get(); $listing_amenities = ListingAmenity::where('listing_id', $detail->id)->get(); $listing_additional_features = ListingAdditionalFeature::where('listing_id', $detail->id)->get(); $listing_brands = ListingBrand::orderBy('listing_brand_name', 'asc')->get(); $listing_locations = ListingLocation::orderBy('listing_location_name', 'asc')->get(); $reviews = Review::where('listing_id', $detail->id) ->orderBy('id', 'asc') ->get(); if ($reviews->isEmpty()) { $overall_rating = 0; } else { $total_number = 0; $count = 0; foreach ($reviews as $item) { $count++; $total_number = $total_number + $item->rating; } $overall_rating = $total_number / $count; $overall_rating = round($overall_rating * 2) / 2; } if ($detail->user_id == 0) { $agent_detail = Admin::where('id', $detail->admin_id)->first(); } elseif ($detail->admin_id == 0) { $agent_detail = User::where('id', $detail->user_id)->first(); } $current_auth_user_id = 0; if (Auth::user()) { $current_auth_user_id = Auth::user()->id; } $already_given = Review::where('listing_id', $detail->id) ->where('agent_id', $current_auth_user_id) ->where('agent_type', 'Customer') ->count(); $all_amenities = Amenity::orderBy('id', 'asc')->get(); return view('front.listing_detail', compact('detail', 'g_setting', 'listing_social_items', 'listing_photos', 'listing_videos', 'listing_amenities', 'listing_additional_features', 'listing_brands', 'listing_locations', 'agent_detail', 'reviews', 'current_auth_user_id', 'already_given', 'overall_rating', 'all_amenities')); } public function search_listing(Request $request) { $query = Listing::query(); if ($request->has('amenities')) { $query->whereHas('listingAminities', function ($q) use ($request) { $q->whereIn('amenity_id', $request->input('amenities')); }); } if ($request->has('brand_id')) { $query->where('listing_brand_id', $request->input('brand_id')); } if ($request->has('location_id')) { $query->where('listing_location_id', $request->input('location_id')); } if ($request->has('price_min') && $request->has('price_max')) { $query->whereBetween('listing_price', [$request->input('price_min'), $request->input('price_max')]); } $listings = $query->get(['id', 'listing_name as title', 'listing_price as price', 'listing_featured_photo as imageUrl']); return response()->json($listings); } } 🧨 Target class [App\Http\Controllers\Front\ListingController] does not exist.