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.