New Location public endpoints

* Added new endpoint to get summit
location by id
* added expand for locations

Change-Id: I7a865fb53008c4f7fcbf3aae59709e3c111bd3dd
This commit is contained in:
Sebastian Marcet 2017-10-17 18:01:11 -03:00
parent 7824a64a57
commit 17ac603b38
3 changed files with 9 additions and 5 deletions

View File

@ -116,6 +116,9 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController
{
try {
$expand = Request::input('expand', '');
$relations = Request::input('relations', '');
$relations = !empty($relations) ? explode(',', $relations) : [];
$summit = SummitFinderStrategyFactory::build($this->repository)->find($summit_id);
if (is_null($summit)) return $this->error404();
@ -123,7 +126,7 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController
if (is_null($location)) {
return $this->error404();
}
return $this->ok(SerializerRegistry::getInstance()->getSerializer($location)->serialize());
return $this->ok(SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand,[], $relations));
} catch (Exception $ex) {
Log::error($ex);
return $this->error500($ex);

View File

@ -37,6 +37,7 @@ Route::group([
// locations
Route::group(array('prefix' => 'locations'), function () {
Route::group(array('prefix' => '{location_id}'), function () {
Route::get('', 'OAuth2SummitLocationsApiController@getLocation');
Route::get('/events/published','OAuth2SummitLocationsApiController@getLocationEvents');
});
});

View File

@ -41,7 +41,7 @@ final class SummitSerializer extends SilverStripeSerializer
* @param array $params
* @return array
*/
public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array())
public function serialize($expand = null, array $fields = [], array $relations = [], array $params = [])
{
$summit = $this->object;
if(!$summit instanceof Summit) return [];
@ -75,21 +75,21 @@ final class SummitSerializer extends SilverStripeSerializer
// tickets
$ticket_types = [];
foreach ($summit->getTicketTypes() as $ticket) {
$ticket_types[] = SerializerRegistry::getInstance()->getSerializer($ticket)->serialize();
$ticket_types[] = SerializerRegistry::getInstance()->getSerializer($ticket)->serialize($expand);
}
$values['ticket_types'] = $ticket_types;
//locations
$locations = [];
foreach ($summit->getLocations() as $location) {
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize();
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand);
}
$values['locations'] = $locations;
// wifi connections
$wifi_connections = [];
foreach ($summit->getWifiConnections() as $wifi_connection) {
$wifi_connections[] = SerializerRegistry::getInstance()->getSerializer($wifi_connection)->serialize();
$wifi_connections[] = SerializerRegistry::getInstance()->getSerializer($wifi_connection)->serialize($expand);
}
$values['wifi_connections'] = $wifi_connections;