Added endpoint to get track group by id
GET /api/v1/summits/{id}/track-groups/{track_group_id} Change-Id: Iff131783340bfc657853594fa8262a5d33854b81
This commit is contained in:
parent
b282c01333
commit
1253e7c1fe
@ -291,8 +291,32 @@ final class OAuth2PresentationCategoryGroupController
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $summit_id
|
||||
* @param $track_group_id
|
||||
* @return mixed
|
||||
*/
|
||||
public function getTrackGroupBySummit($summit_id, $track_group_id){
|
||||
try {
|
||||
$summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id);
|
||||
|
||||
if (is_null($summit)) return $this->error404();
|
||||
$track_group = $summit->getCategoryGroupById($track_group_id);
|
||||
|
||||
if(is_null($track_group))
|
||||
return $this->error404();
|
||||
|
||||
return $this->ok(SerializerRegistry::getInstance()->getSerializer($track_group)->serialize( Request::input('expand', '')));
|
||||
} catch (ValidationException $ex1) {
|
||||
Log::warning($ex1);
|
||||
return $this->error412([$ex1->getMessage()]);
|
||||
} catch (EntityNotFoundException $ex2) {
|
||||
Log::warning($ex2);
|
||||
return $this->error404(['message' => $ex2->getMessage()]);
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex);
|
||||
return $this->error500($ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -12,6 +12,8 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
use models\summit\PresentationCategoryGroup;
|
||||
|
||||
/**
|
||||
* Class PresentationCategoryGroupSerializer
|
||||
* @package ModelSerializers
|
||||
@ -36,8 +38,9 @@ class PresentationCategoryGroupSerializer extends SilverStripeSerializer
|
||||
public function serialize($expand = null, array $fields = [], array $relations = [], array $params = [] )
|
||||
{
|
||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
||||
$track_group = $this->object;
|
||||
if(!$track_group instanceof PresentationCategoryGroup) return $values;
|
||||
|
||||
$group = $this->object;
|
||||
$color = isset($values['color']) ? $values['color']:'';
|
||||
if(empty($color))
|
||||
$color = 'f0f0ee';
|
||||
@ -46,9 +49,9 @@ class PresentationCategoryGroupSerializer extends SilverStripeSerializer
|
||||
}
|
||||
$values['color'] = $color;
|
||||
|
||||
$categories = array();
|
||||
$categories = [];
|
||||
|
||||
foreach($group->getCategories() as $c)
|
||||
foreach($track_group->getCategories() as $c)
|
||||
{
|
||||
if(!is_null($expand) && in_array('tracks', explode(',',$expand))){
|
||||
$categories[] = SerializerRegistry::getInstance()->getSerializer($c)->serialize();
|
||||
|
@ -12,6 +12,8 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
use models\summit\PrivatePresentationCategoryGroup;
|
||||
|
||||
/**
|
||||
* Class PrivatePresentationCategoryGroupSerializer
|
||||
* @package ModelSerializers
|
||||
@ -24,4 +26,33 @@ final class PrivatePresentationCategoryGroupSerializer
|
||||
'SubmissionEndDate' => 'submission_end_date:datetime_epoch',
|
||||
'MaxSubmissionAllowedPerUser' => 'max_submission_allowed_per_user:json_int',
|
||||
];
|
||||
|
||||
/**
|
||||
* @param null $expand
|
||||
* @param array $fields
|
||||
* @param array $relations
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
public function serialize($expand = null, array $fields = [], array $relations = [], array $params = [] )
|
||||
{
|
||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
||||
|
||||
$track_group = $this->object;
|
||||
if(!$track_group instanceof PrivatePresentationCategoryGroup) return $values;
|
||||
|
||||
$allowed_groups= [];
|
||||
|
||||
foreach($track_group->getAllowedGroups() as $g)
|
||||
{
|
||||
if(!is_null($expand) && in_array('allowed_groups', explode(',',$expand))){
|
||||
$allowed_groups[] = SerializerRegistry::getInstance()->getSerializer($g)->serialize();
|
||||
}
|
||||
else
|
||||
$allowed_groups[] = intval($g->getId());
|
||||
}
|
||||
|
||||
$values['allowed_groups'] = $allowed_groups;
|
||||
return $values;
|
||||
}
|
||||
}
|
@ -107,10 +107,10 @@ final class PresentationCategoryGroupFactory
|
||||
*/
|
||||
public static function populate(Summit $summit, PresentationCategoryGroup $track_group, array $data){
|
||||
if($track_group instanceof PrivatePresentationCategoryGroup){
|
||||
return self::populatePrivatePresentationCategoryGroup($track_group, $data);
|
||||
return self::populatePrivatePresentationCategoryGroup($summit, $track_group, $data);
|
||||
}
|
||||
else if($track_group instanceof PresentationCategoryGroup){
|
||||
return self::populatePresentationCategoryGroup($summit, $track_group,$data);
|
||||
return self::populatePresentationCategoryGroup($track_group, $data);
|
||||
}
|
||||
return $track_group;
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ final class PresentationCategoryGroupService
|
||||
*/
|
||||
public function updateTrackGroup(Summit $summit, $track_group_id, array $data)
|
||||
{
|
||||
$this->tx_service->transaction(function () use ($summit, $track_group_id, $data) {
|
||||
return $this->tx_service->transaction(function () use ($summit, $track_group_id, $data) {
|
||||
|
||||
if (isset($data['name'])) {
|
||||
$former_track_group = $summit->getCategoryGroupByName(trim($data['name']));
|
||||
|
@ -40,8 +40,48 @@ final class OAuth2TrackGroupsApiTest extends ProtectedApiTest
|
||||
$track_groups = json_decode($content);
|
||||
$this->assertTrue(!is_null($track_groups));
|
||||
$this->assertResponseStatus(200);
|
||||
return $track_groups;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $summit_id
|
||||
*/
|
||||
public function testGetTrackGroupById($summit_id = 24){
|
||||
$track_groups_response = $this->testGetTrackGroups($summit_id);
|
||||
|
||||
$track_groups = $track_groups_response->data;
|
||||
|
||||
$track_group = null;
|
||||
foreach($track_groups as $track_group_aux){
|
||||
if($track_group_aux->class_name == \models\summit\PrivatePresentationCategoryGroup::ClassName){
|
||||
$track_group = $track_group_aux;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$params = [
|
||||
'id' => $summit_id,
|
||||
'track_group_id' => $track_group->id,
|
||||
'expand' => 'tracks,allowed_groups',
|
||||
];
|
||||
|
||||
$headers = ["HTTP_Authorization" => " Bearer " . $this->access_token];
|
||||
$response = $this->action(
|
||||
"GET",
|
||||
"OAuth2PresentationCategoryGroupController@getTrackGroupBySummit",
|
||||
$params,
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
$headers
|
||||
);
|
||||
|
||||
$content = $response->getContent();
|
||||
$track_group = json_decode($content);
|
||||
$this->assertTrue(!is_null($track_group));
|
||||
$this->assertResponseStatus(200);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $summit_id
|
||||
@ -112,6 +152,48 @@ final class OAuth2TrackGroupsApiTest extends ProtectedApiTest
|
||||
return $track_group;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $summit_id
|
||||
* @return mixed
|
||||
*/
|
||||
public function testUpdateTrackGroup($summit_id = 24){
|
||||
|
||||
$track_group = $this->testAddTrackGroup($summit_id);
|
||||
|
||||
$params = [
|
||||
'id' => $summit_id,
|
||||
'track_group_id' => $track_group->id
|
||||
];
|
||||
|
||||
$data = [
|
||||
'description' => 'test desc track group update',
|
||||
'class_name' => \models\summit\PrivatePresentationCategoryGroup::ClassName
|
||||
];
|
||||
|
||||
$headers = [
|
||||
"HTTP_Authorization" => " Bearer " . $this->access_token,
|
||||
"CONTENT_TYPE" => "application/json"
|
||||
];
|
||||
|
||||
$response = $this->action(
|
||||
"PUT",
|
||||
"OAuth2PresentationCategoryGroupController@updateTrackGroupBySummit",
|
||||
$params,
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
$headers,
|
||||
json_encode($data)
|
||||
);
|
||||
|
||||
$content = $response->getContent();
|
||||
$this->assertResponseStatus(201);
|
||||
$track_group = json_decode($content);
|
||||
$this->assertTrue(!is_null($track_group));
|
||||
$this->assertTrue($track_group->description == 'test desc track group update');
|
||||
return $track_group;
|
||||
}
|
||||
|
||||
public function testAssociateTrack2TrackGroup412($summit_id = 24){
|
||||
|
||||
$track_group = $this->testAddTrackGroup($summit_id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user