Merge pull request #1222 from openclassify/dia

#4826 emlak24-theme need this week
This commit is contained in:
spektra2147 2021-11-04 15:19:16 +03:00 committed by GitHub
commit e8916c4605
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 1 deletions

View File

@ -29,7 +29,7 @@ filter.getCats = (catId, divId) => {
};
$(document).ready(function () {
if ($('input[name="slug"]').val() == "") {
if (!$('input[name="slug"]').val()) {
$("select[name='currency']").val(default_currency);
}

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()
];
}
}
}