ldc-lionor/app/Http/Controllers/Fo/ShopController.php

50 lines
1.4 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers\Fo;
use App\Http\Controllers\Controller;
use App\Http\Requests\Fo\Shop\GetNearestShopRequest;
use App\Models\Shop;
use Illuminate\Support\Facades\DB;
class ShopController extends Controller
{
// * FUNCTIONS FOR FRONT MARKET FINDER
/**
* Get all shops
* @return json
*/
public function index()
{
if (request()->wantsJson()) {
return response()
->json(Shop::all());
}
return abort(404);
}
/**
* Get the 5 nearest shops with the given coords in the request.
* @param App\Http\Requests\Fo\Shop\GetNearestShopRequest $request
* @return json
*/
public function getNearest(GetNearestShopRequest $request)
{
$latitude = $request->latitude;
$longitude = $request->longitude;
$raw = DB::raw(
'ROUND ((6371*acos(cos(radians(' . $latitude . '))*cos(radians(latitude))*cos(radians(longitude)
- radians(' . $longitude . '))+sin(radians(' . $latitude . '))*sin(radians(latitude)))), 2)
AS distance'
);
$results = DB::table("shops")->select('*')->addSelect($raw)->orderBy('distance', 'ASC')->limit(5)->get();
if ($request->wantsJson()) {
return response()
->json($results);
}
return abort(404);
}
}