#4826 emlak24-theme need this week

This commit is contained in:
diashalabi 2021-11-03 16:59:45 +03:00
parent 47fdf64923
commit ec48f1be07
4 changed files with 36 additions and 0 deletions

View File

@ -727,4 +727,17 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
return $classifieds->paginate($limit, ['*'], 'page', $page);
}
public function getClassifiedsByCoordinates($lat, $lng, $distance = 50)
{
return $this
->currentAds()
->whereNotNull('map_Val')
->select(
DB::raw("*, ( 3959 * acos( cos( radians('$lat') ) * cos( radians( SUBSTRING_INDEX(map_Val, ',', 1) ) ) * cos( radians( SUBSTRING_INDEX(map_Val, ',', -1) ) - radians('$lng') ) + sin( radians('$lat') ) * sin( radians( SUBSTRING_INDEX(map_Val, ',', 1) ) ) ) ) AS distance")
)
->havingRaw("distance < $distance")
->orderBy('distance')
->get();
}
}

View File

@ -74,4 +74,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
public function getUnexplainedClassifiedsReport();
public function getNoImageClassifiedsReport();
public function getClassifiedsByCoordinates($lat, $lng, $distance = 50);
}

View File

@ -177,6 +177,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'class/getcats/{id}' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@getCatsForNewAd',
'mapJson' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@mapJson',
'check_user' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@checkUser',
'api/classified/get-by-coordinates' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@getClassifiedsByCoordinates',
// AjaxController
'admin/advs/ajax' => [

View File

@ -1204,4 +1204,24 @@ class AdvsController extends PublicController
$response['maxQuantity'] = $adv->stock;
return $response;
}
public function getClassifiedsByCoordinates()
{
\request()->validate([
'lat' => 'required',
'lng' => 'required',
]);
try {
return [
'success' => true,
'classifieds' => $this->adv_repository->getClassifiedsByCoordinates(\request()->lat, \request()->lng),
];
} catch (\Exception $e) {
return [
'success' => false,
'msg' => $e->getMessage()
];
}
}
}