From d63f0ee2f8f1c9078621a83da8692fe3d56df3ae Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sat, 6 Jan 2018 15:41:23 -0600 Subject: [PATCH] Added /api/settings to retrieve all VA settings #120 --- .../Controllers/Api/SettingsController.php | 28 +++++++++++++++++++ app/Http/Resources/Setting.php | 21 ++++++++++++++ app/Models/Setting.php | 14 ++++++++++ app/Routes/api.php | 3 ++ tests/ApiTest.php | 7 +++++ 5 files changed, 73 insertions(+) create mode 100644 app/Http/Controllers/Api/SettingsController.php create mode 100644 app/Http/Resources/Setting.php diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php new file mode 100644 index 00000000..248159b4 --- /dev/null +++ b/app/Http/Controllers/Api/SettingsController.php @@ -0,0 +1,28 @@ +settingRepo = $settingRepo; + } + + /** + * Return all the airlines, paginated + */ + public function index(Request $request) + { + $settings = $this->settingRepo + ->orderBy('order', 'asc')->get(); + + return SettingResource::collection($settings); + } +} diff --git a/app/Http/Resources/Setting.php b/app/Http/Resources/Setting.php new file mode 100644 index 00000000..ff0214fc --- /dev/null +++ b/app/Http/Resources/Setting.php @@ -0,0 +1,21 @@ + $this->id, + 'type' => $this->type, + 'name' => $this->name, + 'value' => $this->value, + 'group' => $this->group, + 'order' => $this->order, + 'description' => $this->description, + ]; + } +} diff --git a/app/Models/Setting.php b/app/Models/Setting.php index f48602a4..5f546dcd 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -44,4 +44,18 @@ class Setting extends BaseModel } }); } + + /** + * Override the casting mechanism + * @param string $key + * @return mixed|string + */ + /*protected function getCastType($key) + { + if ($key === 'value' && !empty($this->type)) { + return $this->type; + } else { + return parent::getCastType($key); + } + }*/ } diff --git a/app/Routes/api.php b/app/Routes/api.php index 8724125e..3033b48b 100755 --- a/app/Routes/api.php +++ b/app/Routes/api.php @@ -49,8 +49,11 @@ Route::group(['middleware' => ['api.auth']], function () Route::post('pireps/{id}/route', 'PirepController@route_post'); Route::delete('pireps/{id}/route', 'PirepController@route_delete'); + Route::get('settings', 'SettingsController@index'); + # This is the info of the user whose token is in use Route::get('user', 'UserController@index'); + Route::get('users/{id}', 'UserController@get'); Route::get('users/{id}/bids', 'UserController@bids'); }); diff --git a/tests/ApiTest.php b/tests/ApiTest.php index daf48d61..0a5a6798 100644 --- a/tests/ApiTest.php +++ b/tests/ApiTest.php @@ -190,4 +190,11 @@ class ApiTest extends TestCase $body = $resp->json(); $this->assertEquals($body['id'], $aircraft->id); } + + public function testGetAllSettings() + { + $this->user = factory(App\Models\User::class)->create(); + $res = $this->get('/api/settings')->assertStatus(200); + $settings = $res->json(); + } }