From 878575a88bb714e87628f8af2b009130eff31d68 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 13 Dec 2018 20:17:22 +0800 Subject: [PATCH 1/5] Add outlet listing api endpoint --- app/Http/Controllers/Api/OutletController.php | 18 ++++++++++++++++++ app/Http/Resources/Outlet.php | 19 +++++++++++++++++++ app/Http/Resources/OutletCollection.php | 19 +++++++++++++++++++ app/Outlet.php | 4 ++++ routes/api.php | 7 +++++++ tests/Feature/Api/OutletListingTest.php | 26 ++++++++++++++++++++++++++ 6 files changed, 93 insertions(+) create mode 100644 app/Http/Controllers/Api/OutletController.php create mode 100644 app/Http/Resources/Outlet.php create mode 100644 app/Http/Resources/OutletCollection.php create mode 100644 tests/Feature/Api/OutletListingTest.php diff --git a/app/Http/Controllers/Api/OutletController.php b/app/Http/Controllers/Api/OutletController.php new file mode 100644 index 0000000..5409e6c --- /dev/null +++ b/app/Http/Controllers/Api/OutletController.php @@ -0,0 +1,18 @@ +get('/user', function (Request $request) { return $request->user(); }); + +Route::group(['as' => 'api.', 'namespace' => 'Api'], function () { + /* + * Outlets Endpoints + */ + Route::get('outlets', 'OutletController@index')->name('outlets.index'); +}); diff --git a/tests/Feature/Api/OutletListingTest.php b/tests/Feature/Api/OutletListingTest.php new file mode 100644 index 0000000..35f6a86 --- /dev/null +++ b/tests/Feature/Api/OutletListingTest.php @@ -0,0 +1,26 @@ +create(); + + $this->getJson(route('api.outlets.index')); + + $this->seeJson([ + 'name' => $outlet->name, + 'address' => $outlet->address, + 'coordinate' => $outlet->coordinate, + ]); + } +} From d46b0f3d8be30f6003bc49d4484cf2c9883fc30d Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 13 Dec 2018 22:53:25 +0800 Subject: [PATCH 2/5] Add interactive map on outlet markers/locations --- app/Http/Controllers/Api/OutletController.php | 25 +++++++++++ app/Http/Controllers/OutletMapController.php | 13 ++++++ resources/views/layouts/app.blade.php | 1 + resources/views/outlets/map.blade.php | 61 +++++++++++++++++++++++++++ routes/api.php | 1 + routes/web.php | 1 + 6 files changed, 102 insertions(+) create mode 100644 app/Http/Controllers/OutletMapController.php create mode 100644 resources/views/outlets/map.blade.php diff --git a/app/Http/Controllers/Api/OutletController.php b/app/Http/Controllers/Api/OutletController.php index 5409e6c..9c3d04d 100644 --- a/app/Http/Controllers/Api/OutletController.php +++ b/app/Http/Controllers/Api/OutletController.php @@ -6,6 +6,7 @@ use App\Outlet; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Http\Resources\OutletCollection; +use App\Http\Resources\Outlet as OutletResource; class OutletController extends Controller { @@ -15,4 +16,28 @@ class OutletController extends Controller return new OutletCollection($outlets); } + + public function geoJSON(Request $request) + { + $outlets = Outlet::all(); + + $geoJSONdata = $outlets->map(function ($outlet) { + return [ + 'type' => 'Feature', + 'properties' => new OutletResource($outlet), + 'geometry' => [ + 'type' => 'Point', + 'coordinates' => [ + $outlet->longitude, + $outlet->latitude, + ], + ], + ]; + }); + + return response()->json([ + 'type' => 'FeatureCollection', + 'features' => $geoJSONdata, + ]); + } } diff --git a/app/Http/Controllers/OutletMapController.php b/app/Http/Controllers/OutletMapController.php new file mode 100644 index 0000000..e162087 --- /dev/null +++ b/app/Http/Controllers/OutletMapController.php @@ -0,0 +1,13 @@ +