Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function list(Request $request)
- {
- DB::enableQueryLog();
- // Amenity Data
- $amenity_data = Amenity::where('status', 1)->get()->toArray();
- // Get Area Data
- $property_area_data = Property::select('area')->where('status', 1)->distinct()->whereNotNull('area')->get()->toArray();
- // Get Apartment Data
- $property_apartment_data = array('Studio' => 'Studio', '1' => '1', '2' => '2', '3' => '3', '4' => '4');
- // Get Sqft Size
- $sqft_min_size = Property::select('sqft')->where('status', 1)->min('sqft');
- $sqft_max_size = Property::select('sqft')->where('status', 1)->max('sqft');
- // Get Price
- $min_price = Property::select('monthly_price')->where('status', 1)->min('monthly_price');
- $max_price = Property::select('monthly_price')->where('status', 1)->max('monthly_price');
- // Get Currency
- $currency = Setting::where('key', 'currency')->first()->value;
- // Get Search Property Data
- $property_data = Property::query()->with('propertyImages', 'PropertyAmenity.AmenityDetail')->where('status', 1);
- //->select(['*', DB::raw( '(3959 * acos( cos( radians(".$lat1.") ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(".$lon1.") ) + sin( radians(".$lat1.") ) * sin( radians( latitude ) ) ) ) AS distance')])
- //->havingRaw('distance < ?',[2.5]);
- if (($request->input('call') == 'ajax' || $request->input('call') == "searchclick") && $request->input('lat') != "" && $request->input('lng') != "") {
- //ajax call
- $lat1 = $request->input('lat');
- $lon1 = $request->input('lng');
- $dist = $request->input('radius') != "" ? $request->input('radius') : 3;
- $select = DB::select("SELECT id, ( 3959 * acos( cos( radians(" . $lat1 . ") ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(" . $lon1 . ") ) + sin( radians(" . $lat1 . ") ) * sin( radians( latitude ) ) ) ) AS distance FROM properties HAVING distance < " . $dist);
- $nearr = array();
- foreach ($select as $key => $value) {
- array_push($nearr, $value->id);
- }
- $property_data->whereIN('id', $nearr);
- //$property_data->whereIN('id',array($select))
- }
- $selected_area = "";
- $selected_apartments = "";
- $selected_guest = "";
- $selected_size = "";
- $selected_price = "";
- // if ($request->get('area') != '') {
- // $selected_area = $request->get('area');
- // $property_data->where('area',$request->get('area'));
- // }
- if ($request->get('apartments') != '') {
- $selected_apartments = $request->get('apartments');
- $property_data->where('bedrooms', $request->get('apartments'));
- }
- if ($request->get('guest') != '') {
- $selected_guest = $request->get('guest');
- $property_data->where('no_of_guest', $selected_guest);
- }
- if ($request->get('size') != '') {
- $selected_size = $request->get('size');
- $property_data->whereBetween('sqft', array(explode(',', $request->get('size'))));
- }
- if ($request->get('price') != '') {
- $selected_price = $request->get('price');
- $property_data->whereBetween('monthly_price', array(explode(',', $selected_price)));
- }
- //area
- if ($request->input('call') == "homebox" && $request->input('call') != 'ajax') // && $request->input('call_page')!=1)
- {
- //country
- $address_component = $request->input('address_component');
- if ($address_component['country'] != '' && $address_component['country'] != null) {
- $property_data->where('country', 'like', '%' . $address_component['country'] . '%');
- }
- $property_data->where(function ($property_data) use ($request) {
- foreach ($request->input('address_component') as $key => $value) {
- if ($value != '' && $value != null) {
- switch ($key) {
- /*case 'country':
- # code...Where('name', 'like', '%' . Input::get('name') . '%')
- $property_data->where('country', 'like', '%' . $value . '%');
- break;*/
- case 'state':
- $property_data->Orwhere('state', 'like', '%' . $value . '%');
- break;
- case 'postal_code':
- $property_data->Orwhere('zipcode', 'like', '%' . $value . '%');
- break;
- case 'administrative_area_level_1':
- $property_data->Orwhere('city', 'like', '%' . $value . '%');
- break;
- case 'locality':
- $property_data->Orwhere('city', 'like', '%' . $value . '%');
- break;
- case 'street_number':
- # code...
- break;
- case 'route':
- # code...
- break;
- }
- }
- }
- if ($request->input('area') != '') {
- $area_search = $request->input('area');
- $area_search = str_replace(',', '', $area_search);
- $area_search = str_replace(' ', ',', $area_search);
- $arr_area_search = explode(',', $area_search);
- $arr_area_search = array_filter($arr_area_search);
- $order_string = array();
- foreach ($arr_area_search as $key => $value) {
- $property_data->Orwhere('area', 'like', '%' . $value . '%');
- $property_data->Orwhere('country', 'like', '%' . $value . '%');
- $property_data->Orwhere('state', 'like', '%' . $value . '%');
- $order_string[] = "'" . $value . "'";
- }
- //$property_data->orderByRaw("FIELD(area, 'Owner', 'Admin', 'Member') ASC");
- $property_data->orderByRaw("FIELD(area, " . implode(',', $order_string) . ") ASC");
- }
- });
- }
- //code added by Hirin
- $checkpass = false;
- if ($request->get('aminities') != '') {
- $data_for_input_of_aminities = $request->get('aminities');
- $selected_aminities = explode(",", $data_for_input_of_aminities);
- //echo "<pre/>";print_r($selected_aminities);exit;
- /*// Code added by Dwarkesh
- $x = PropertyAmenity::select('property_id');
- foreach ($selected_aminities as $key => $selected_aminity) {
- $x->where('amenity_id', $selected_aminity);
- }
- $x = $x->pluck('property_id')->toArray();*/
- $x = PropertyAmenity::select('property_id')->whereIn('amenity_id', $selected_aminities)->pluck('property_id')->toArray();
- $checkpass = true;
- //$property_data->WhereIn('id',$x);
- // $property_data->whereHas('PropertyAmenity', function ($query) use($request){
- // $selected_aminities = explode(",",$request->get('aminities'));
- // $query->whereIn('amenity_id', $selected_aminities);
- // });
- } else {
- $data_for_input_of_aminities = '';
- $x = array();
- }
- if ($request->get('date-range') != '') {
- if ($request->get('date-range') != 'Check-in Check-out') {//DB::enableQueryLog();
- $checkpass = true;
- $date_range = explode(" to ", $request->get('date-range'));
- /*CODE RT STARTS*/
- $query_detail = PropertyAvailability::Distinct('property_id');
- $query_detail->Where(function ($query) use ($date_range) {
- $query->where('start_date', '<=', $date_range[0]);
- $query->where('end_date', '>=', $date_range[1]);
- //$query->orWhereBetween('start_date', array($date_range[0], $date_range[1]));
- //$query->orWhereBetween('end_date', array($date_range[0], $date_range[1]));
- });
- $query_detail->where('status', 1);
- $available_property = $query_detail->pluck('property_id')->toArray();
- $date = \Carbon\Carbon::parse($date_range[1]);
- $now = \Carbon\Carbon::parse($date_range[0]);
- $diff = $date->diffInMonths($now);
- $diff_inweek = $date->diffInWeeks($now);
- $diff_indays = $date->diffInDays($now);
- foreach ($available_property as $ap) {
- $property_check_data = Property::select('properties.inquiry_less_then_one_month', 'properties.inquiry_one_to_three_month', 'properties.inquiry_three_to_six_month', 'properties.inquiry_six_to_twelve_month', 'properties.inquiry_more_then_twelve_month', 'properties.min_stay', 'properties.max_stay')->find($ap);
- if (count($property_check_data)) {
- if ($diff < 1) {
- $week_count = $property_check_data->inquiry_less_then_one_month;
- } elseif ($diff <= 3) {
- $week_count = $property_check_data->inquiry_one_to_three_month;
- } elseif ($diff <= 6) {
- $week_count = $property_check_data->inquiry_three_to_six_month;
- } elseif ($diff <= 12) {
- $week_count = $property_check_data->inquiry_six_to_twelve_month;
- } elseif ($diff > 12) {
- $week_count = $property_check_data->inquiry_more_then_twelve_month;
- }
- if ($property_check_data->max_stay == 'No maximum stay') {
- $max_stay = $diff_indays;
- } else {
- $max_stay = ($property_check_data->max_stay * 30);
- }
- $pavcheck = PropertyAvailability::where('property_availability.property_id', $ap)->where('property_availability.status', 0)->select('property_availability.end_date')->where('property_availability.end_date', '<=', $date)->orderby('property_availability.end_date', 'desc')->first();
- if (count($pavcheck)) {
- $check_enddate = \Carbon\Carbon::parse($pavcheck->end_date);
- $check_startdate = $now;
- $diff_weeks = $check_enddate->diffInWeeks($check_startdate);
- if ($diff_weeks >= $week_count || $diff_inweek < $property_check_data->min_stay || $diff_indays > $max_stay) {
- if (($key = array_search($ap, $available_property)) !== false) {
- unset($available_property[$key]);
- }
- }
- } else {
- //echo $diff_inweek .'--'. $property_check_data->min_stay .'--'. $diff_indays .'--'. $max_stay;
- if ($diff_inweek < $property_check_data->min_stay || $diff_indays > $max_stay) {
- if (($key = array_search($ap, $available_property)) !== false) {
- unset($available_property[$key]);
- }
- }
- }
- }
- }
- } else {
- $available_property = array();
- $date_range = array();
- }
- } else {
- $available_property = array();
- $date_range = array();
- }
- if ($checkpass == true) {
- //$y = array_merge($x,$available_property);
- if (count($x) > 0 && count($available_property) > 0) {
- $y = array_intersect($x, $available_property);
- } else {
- $y = array_merge($x, $available_property);
- }
- $property_data->WhereIn('id', $y);
- }
- if (isset($_GET['area'])) {
- $urla[] = "area=" . $_GET['area'];
- }
- if (isset($_GET['apartments']))
- $urla[] = "apartments=" . $_GET['apartments'];
- if (isset($_GET['price']))
- $urla[] = "price=" . $_GET['price'];
- if (isset($_GET['date-range']))
- $urla[] = "date-range=" . $_GET['date-range'];
- if (isset($_GET['aminities']))
- $urla[] = "aminities=" . $_GET['aminities'];
- if (isset($_GET['guest']))
- $urla[] = "guest=" . $_GET['guest'];
- if (isset($_GET['address_component'])) {
- $address_component = $_GET['address_component'];
- $urla[] = http_build_query(array('address_component' => $address_component), 'flags_');
- } else {
- $address_component['country'] = '';
- $address_component['state'] = '';
- $address_component['postal_code'] = '';
- $address_component['city'] = '';
- $address_component['locality'] = '';
- $address_component['administrative_area_level_1'] = '';
- $address_component['street_number'] = '';
- $address_component['route'] = '';
- }
- $address_component['country'] = (isset($address_component['country']) ? $address_component['country'] : '');
- $address_component['state'] = (isset($address_component['state']) ? $address_component['state'] : '');
- $address_component['postal_code'] = (isset($address_component['postal_code']) ? $address_component['postal_code'] : '');
- $address_component['city'] = (isset($address_component['city']) ? $address_component['city'] : '');
- $address_component['locality'] = (isset($address_component['locality']) ? $address_component['locality'] : '');
- $address_component['administrative_area_level_1'] = (isset($address_component['administrative_area_level_1']) ? $address_component['administrative_area_level_1'] : '');
- $address_component['street_number'] = (isset($address_component['street_number']) ? $address_component['street_number'] : '');
- $address_component['route'] = (isset($address_component['route']) ? $address_component['route'] : '');
- /*$address_component['state']='';
- $address_component['postal_code']='';
- $address_component['city']='';
- $address_component['locality']='';
- $address_component['administrative_area_level_1']='';
- $address_component['street_number']='';
- $address_component['route']='';*/
- //dd($address_component);
- if (!isset($urla)) {
- $urla = "";
- }
- $url = "";
- if (count($urla) > 0 && !empty($urla)) {
- $url = implode('&', $urla);
- }
- $searchResultAll = $property_data->get();
- $searchResultObj = $property_data->paginate(12);
- $searchResultArr = $searchResultObj->toArray();
- //dd($searchResultArr);
- $searchFormResult = $searchResultArr['data'];
- if (count($searchResultAll)) {
- $properties = array();
- $bookmarks = array();
- $mainlat = "";
- $mainlong = "";
- //print_r($user->id);
- //$user = \Auth::user();
- //die();
- foreach ($searchResultAll->toArray() as $key) {
- $image = isset($key['property_images']['0']['path']) ? $key['property_images']['0']['path'] : "";
- $properties[] = array($key['en_name'], $key['latitude'], $key['longitude'], $key['area'], $key['id'], $image, $key['bedrooms'], $key['bathrooms'], $key['sqft'], number_format($key['monthly_price']));
- // if(!empty($user))
- // $bookmark = Bookmark::where('user_id', $user->id)->where('property_id', $key['id'])->get()->first() ;
- }
- $properties = json_encode($properties);
- } else {
- $properties = array();
- $properties = json_encode($properties);
- }
- if ($request->input('call') == 'ajax' && $request->input('call_page') != 1) {
- /*$total_search = $searchResultArr['last_page'];
- $paginate_html = '<ul class="pager">';
- $current_url = $request->fullUrl();
- $current_url = str_replace('ajax', '', $current_url);
- for($i=1;$i<=$total_search;$i++)
- {
- $paginate_html .= '<li';
- if($i==$request->page)
- {
- $paginate_html .= ' class="active my-active" ';
- $paginate_html .='><span>'.$i.'</span></li>';
- }
- else
- {
- $paginate_html .='><a href="'.$current_url.'&page='.$i.'"><span>'.$i.'</span></a></li>';
- }
- }
- $paginate_html .='</ul>';*/
- $request->request->add(['call_page' => '1']);
- $paginate_html = $searchResultObj->appends(request()->input())->links('pagination')->toHtml();
- $request->request->add(['call_page' => '0']);
- }
- //$properties = array();
- $mainlat = "";
- $mainlong = "";
- if (count($searchFormResult)) {
- $mainlat = $searchFormResult[0]['latitude'];
- $mainlong = $searchFormResult[0]['longitude'];
- }
- // foreach($searchFormResult as $key => $skey)
- // {
- // if ($skey['monthly_price']) {
- // $searchFormResult[$key]['monthly_price'] = number_format($skey['monthly_price']);
- // }
- // $image = isset($skey['property_images']['0']['path']) ? $skey['property_images']['0']['path'] : "";
- // //$properties[] = array($key['en_name'], $key['latitude'], $key['longitude'], $key['area'] ,$key['id'], $image, $key['bedrooms'], $key['bathrooms'], $key['sqft'], number_format($key['monthly_price']));
- // $mainlat = $skey['latitude'];
- // $mainlong = $skey['longitude'];
- // }
- if (empty($mainlat)) {
- $mainlat = "0.000000";
- }
- if (empty($mainlong)) {
- $mainlong = "0.000000";
- }
- //$properties = json_encode($properties);
- if (!isset($_COOKIE['modern_tokyo_recent_search'])) {
- setcookie('modern_tokyo_recent_search', $url, time() + 60 * 60 * 24 * 365, '/');
- } else {
- unset($_COOKIE['modern_tokyo_recent_search']);
- setcookie('modern_tokyo_recent_search', '', time() - 60 * 60 * 24 * 365, '/');
- setcookie('modern_tokyo_recent_search', $url, time() + 60 * 60 * 24 * 365, '/');
- }
- if ($request->input('call') == 'ajax' && $request->input('call_page') != 1) {
- $bookmark_property_ids = array();
- if (!empty(\Auth::user())) {
- $bookmark_property_ids = Bookmark::where('user_id', \Auth::user()->id)->pluck('property_id')->toArray();
- //print_r($bookmark_property_ids);
- // die();
- //inside login
- } else {
- if (isset($_COOKIE['modern_tokyo_bookmark'])) {
- $bookmark_property_ids = explode('-', $_COOKIE['modern_tokyo_bookmark']);
- $bookmark_property_ids = array_unique($bookmark_property_ids);
- }
- }
- $finaldata['url'] = $url;
- $finaldata['date_range'] = $date_range;
- $finaldata['data_for_input_of_aminities'] = $data_for_input_of_aminities;
- $finaldata['amenity_data'] = $amenity_data;
- $finaldata['property_area_data'] = $property_area_data;
- $finaldata['sqft_min_size'] = $sqft_min_size;
- $finaldata['sqft_max_size'] = $sqft_max_size;
- $finaldata['min_price'] = $min_price;
- $finaldata['max_price'] = $max_price;
- $finaldata['currency'] = $currency;
- $finaldata['searchFormResult'] = $searchFormResult;
- $finaldata['selected_area'] = $selected_area;
- $finaldata['selected_apartments'] = $selected_apartments;
- $finaldata['selected_guest'] = $selected_guest;
- $finaldata['selected_size'] = $selected_size;
- $finaldata['selected_price'] = $selected_price;
- $finaldata['property_apartment_data'] = $property_apartment_data;
- $finaldata['mainlat'] = $mainlat;
- $finaldata['mainlong'] = $mainlong;
- $finaldata['properties'] = $properties;
- $finaldata['searchResultObj'] = $searchResultObj;
- $finaldata['paginate_html'] = $paginate_html;
- $finaldata['bookmarkdata'] = $bookmark_property_ids;
- return json_encode($finaldata);
- }
- // print_r($address_component);
- // die();
- //Search::create(['data'=>json_encode(compact('url','date_range','data_for_input_of_aminities','amenity_data','property_area_data', 'sqft_min_size', 'sqft_max_size', 'min_price', 'max_price', 'currency', 'searchFormResult', 'selected_area', 'selected_apartments', 'selected_guest', 'selected_size', 'selected_price', 'property_apartment_data', 'mainlat', 'mainlong', 'properties'))]);
- return view('front.list', compact('url', 'address_component', 'date_range', 'data_for_input_of_aminities', 'amenity_data', 'property_area_data', 'sqft_min_size', 'sqft_max_size', 'min_price', 'max_price', 'currency', 'searchFormResult', 'selected_area', 'selected_apartments', 'selected_guest', 'selected_size', 'selected_price', 'property_apartment_data', 'mainlat', 'mainlong', 'properties', 'searchResultObj', 'bookmarkdata'));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement