diff --git a/.gitignore b/.gitignore index bb89681c..357dac3b 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ doc/build .env.testing .env storage/* -*.log \ No newline at end of file +*.log +routes.txt \ No newline at end of file diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php index 818875b4..127961d9 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php @@ -100,6 +100,34 @@ final class OAuth2SummitApiController extends OAuth2ProtectedController return $this->error500($ex); } } + + public function getAllSummits() + { + try { + + $summits = []; + + foreach($this->repository->getAllOrderedByBeginDate() as $summit){ + $summits[] = SerializerRegistry::getInstance()->getSerializer($summit)->serialize(); + } + + $response = new PagingResponse + ( + count($summits), + count($summits), + 1, + 1, + $summits + ); + + return $this->ok($response->toArray()); + } + catch (Exception $ex) { + Log::error($ex); + return $this->error500($ex); + } + } + /** * @param $summit_id * @return mixed diff --git a/app/Http/routes.php b/app/Http/routes.php index 2c1e599f..518741d9 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -131,6 +131,10 @@ Route::group([ Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summits_response_lifetime', 600), 'uses' => 'OAuth2SummitApiController@getSummits']); + Route::group(array('prefix' => 'all'), function () { + Route::get('', 'OAuth2SummitApiController@getAllSummits'); + }); + Route::group(array('prefix' => '{id}'), function () { Route::get('', [ 'middleware' => 'cache:'.Config::get('cache_api_response.get_summit_response_lifetime', 1200), 'uses' => 'OAuth2SummitApiController@getSummit'])->where('id', 'current|[0-9]+'); diff --git a/app/Models/Foundation/Summit/Repositories/ISummitRepository.php b/app/Models/Foundation/Summit/Repositories/ISummitRepository.php index 74d94ed4..48f5b85f 100644 --- a/app/Models/Foundation/Summit/Repositories/ISummitRepository.php +++ b/app/Models/Foundation/Summit/Repositories/ISummitRepository.php @@ -25,4 +25,9 @@ interface ISummitRepository extends IBaseRepository * @return Summit[] */ public function getAvailables(); + + /** + * @return Summit[] + */ + public function getAllOrderedByBeginDate(); } \ No newline at end of file diff --git a/app/Repositories/Summit/DoctrineSummitRepository.php b/app/Repositories/Summit/DoctrineSummitRepository.php index 6e21d371..b95b1915 100644 --- a/app/Repositories/Summit/DoctrineSummitRepository.php +++ b/app/Repositories/Summit/DoctrineSummitRepository.php @@ -57,6 +57,19 @@ final class DoctrineSummitRepository ->getResult(); } + /** + * @return Summit[] + */ + public function getAllOrderedByBeginDate() + { + return $this->getEntityManager()->createQueryBuilder() + ->select("s") + ->from(\models\summit\Summit::class, "s") + ->orderBy('s.begin_date', 'ASC') + ->getQuery() + ->getResult(); + } + /** * @return string */ diff --git a/database/seeds/ApiEndpointsSeeder.php b/database/seeds/ApiEndpointsSeeder.php index 7316e12c..e20407d6 100644 --- a/database/seeds/ApiEndpointsSeeder.php +++ b/database/seeds/ApiEndpointsSeeder.php @@ -77,6 +77,12 @@ class ApiEndpointsSeeder extends Seeder 'http_method' => 'GET', 'scopes' => [sprintf('%s/summits/read', $current_realm)], ), + array( + 'name' => 'get-all-summits', + 'route' => '/api/v1/summits/all', + 'http_method' => 'GET', + 'scopes' => [sprintf('%s/summits/read', $current_realm)], + ), array( 'name' => 'get-summit', 'route' => '/api/v1/summits/{id}', diff --git a/tests/OAuth2SummitApiTest.php b/tests/OAuth2SummitApiTest.php index d0d4fa5c..29d3d8bd 100644 --- a/tests/OAuth2SummitApiTest.php +++ b/tests/OAuth2SummitApiTest.php @@ -37,6 +37,73 @@ final class OAuth2SummitApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } + public function testGetAllSummits() + { + + $params = ['expand' => 'type']; + + $headers = array("HTTP_Authorization" => " Bearer " . $this->access_token); + $response = $this->action( + "GET", + "OAuth2SummitApiController@getAllSummits", + $params, + array(), + array(), + array(), + $headers + ); + + $content = $response->getContent(); + $summits = json_decode($content); + $this->assertTrue(!is_null($summits)); + $this->assertResponseStatus(200); + } + + public function testGetSummit($summit_id = 22) + { + + $params = array + ( + 'expand' => 'schedule', + 'id' => $summit_id + ); + + $headers = array("HTTP_Authorization" => " Bearer " . $this->access_token); + $start = time(); + $response = $this->action( + "GET", + "OAuth2SummitApiController@getSummit", + $params, + array(), + array(), + array(), + $headers + ); + $end = time(); + $delta = $end - $start; + echo "execution call " . $delta . " seconds ..."; + $content = $response->getContent(); + $summit = json_decode($content); + $this->assertTrue(!is_null($summit)); + $this->assertResponseStatus(200); + + $response = $this->action( + "GET", + "OAuth2SummitApiController@getSummit", + $params, + array(), + array(), + array(), + $headers + ); + + $content = $response->getContent(); + $summit = json_decode($content); + $this->assertTrue(!is_null($summit)); + $this->assertTrue(count($summit->schedule) > 0); + $this->assertResponseStatus(200); + } + public function testGetTracks() { @@ -89,50 +156,6 @@ final class OAuth2SummitApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - public function testGetSummit($summit_id = 22) - { - - $params = array - ( - 'expand' => 'schedule', - 'id' => $summit_id - ); - - $headers = array("HTTP_Authorization" => " Bearer " . $this->access_token); - $start = time(); - $response = $this->action( - "GET", - "OAuth2SummitApiController@getSummit", - $params, - array(), - array(), - array(), - $headers - ); - $end = time(); - $delta = $end - $start; - echo "execution call " . $delta . " seconds ..."; - $content = $response->getContent(); - $summit = json_decode($content); - $this->assertTrue(!is_null($summit)); - $this->assertResponseStatus(200); - - $response = $this->action( - "GET", - "OAuth2SummitApiController@getSummit", - $params, - array(), - array(), - array(), - $headers - ); - - $content = $response->getContent(); - $summit = json_decode($content); - $this->assertTrue(!is_null($summit)); - $this->assertTrue(count($summit->schedule) > 0); - $this->assertResponseStatus(200); - } public function testGetCurrentSummit($summit_id = 23) {