Added endpoint to update category group

PUT /api/v1/summits/{id}/track-groups/{track_group_id}

Payload

Payload

* class_name (required:in:PresentationCategoryGroup,PrivatePresentationCategoryGroup)
* name (sometimes|string)
* description (sometimes|string)
* color (sometimes|hex_color)

Payload for private groups ( optional if class_name == 'PrivatePresentationCategoryGroup'

* submission_begin_date (sometimes|date_format:U)
* submission_end_date (sometimes|date_format:U|required_with:submission_begin_date|after:submission_begin_date)
* max_submission_allowed_per_user (sometimes|integer|min:1)

Change-Id: Iefb7d677466e9e90ddd052e5680d4ea7f47b4ec0
This commit is contained in:
Sebastian Marcet 2018-03-28 12:42:37 -03:00
parent 019f643424
commit b282c01333
5 changed files with 117 additions and 41 deletions

View File

@ -291,6 +291,60 @@ final class OAuth2PresentationCategoryGroupController
} }
} }
public function getTrackGroupBySummit($summit_id, $track_group_id){
}
/**
* @param $summit_id
* @param $track_group_id
* @return mixed
*/
public function updateTrackGroupBySummit($summit_id, $track_group_id){
try {
if(!Request::isJson()) return $this->error400();
$data = Input::json();
$payload = $data->all();
$summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id);
if (is_null($summit)) return $this->error404();
$rules = PresentationCategoryGroupValidationRulesFactory::build($payload, true);
// Creates a Validator instance and validates the data.
$validation = Validator::make($payload, $rules);
if ($validation->fails()) {
$messages = $validation->messages()->toArray();
return $this->error412
(
$messages
);
}
$track_group = $this->presentation_category_group_service->updateTrackGroup($summit, $track_group_id, $payload);
return $this->updated(SerializerRegistry::getInstance()->getSerializer($track_group)->serialize());
}
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);
}
}
public function deleteTrackGroupBySummit($summit_id, $track_group_id){
}
/** /**
* @param $summit_id * @param $summit_id
* @return mixed * @return mixed

View File

@ -492,6 +492,9 @@ Route::group([
Route::post('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2PresentationCategoryGroupController@addTrackGroupBySummit']); Route::post('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2PresentationCategoryGroupController@addTrackGroupBySummit']);
Route::group(['prefix' => '{track_group_id}'], function () { Route::group(['prefix' => '{track_group_id}'], function () {
Route::get('', 'OAuth2PresentationCategoryGroupController@getTrackGroupBySummit');
Route::put('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2PresentationCategoryGroupController@updateTrackGroupBySummit']);
Route::delete('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2PresentationCategoryGroupController@deleteTrackGroupBySummit']);
Route::group(['prefix' => 'tracks'], function () { Route::group(['prefix' => 'tracks'], function () {

View File

@ -55,6 +55,7 @@ abstract class SilverStripeDoctrineRepository extends DoctrineRepository
$resource_server_ctx = App::make(\models\oauth2\IResourceServerContext::class); $resource_server_ctx = App::make(\models\oauth2\IResourceServerContext::class);
$member_repository = App::make(\models\main\IMemberRepository::class); $member_repository = App::make(\models\main\IMemberRepository::class);
$member_id = $resource_server_ctx->getCurrentUserExternalId(); $member_id = $resource_server_ctx->getCurrentUserExternalId();
if(is_null($member_id)) return false;
$member = $member_repository->getById($member_id); $member = $member_repository->getById($member_id);
if (!is_null($member)){ if (!is_null($member)){
return $member->isOnGroup($group_code); return $member->isOnGroup($group_code);

View File

@ -114,7 +114,7 @@ final class PresentationCategoryGroupService
( (
trans('validation_errors.PresentationCategoryGroupService.updateTrackGroup.NameAlreadyExists'), trans('validation_errors.PresentationCategoryGroupService.updateTrackGroup.NameAlreadyExists'),
[ [
'name' => trim($data['name']), 'name' => trim($data['name']),
'summit_id' => $summit->getId(), 'summit_id' => $summit->getId(),
] ]
); );
@ -129,14 +129,14 @@ final class PresentationCategoryGroupService
trans('not_found_errors.PresentationCategoryGroupService.updateTrackGroup.TrackGroupNotFound'), trans('not_found_errors.PresentationCategoryGroupService.updateTrackGroup.TrackGroupNotFound'),
[ [
'track_group_id' => $track_group_id, 'track_group_id' => $track_group_id,
'summit_id' => $summit->getId(), 'summit_id' => $summit->getId(),
] ]
); );
} }
Event::fire Event::fire
( (
new TrackGroupInserted new TrackGroupUpdated
( (
$track_group->getId(), $track_group->getId(),

View File

@ -151,7 +151,7 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::WriteAttendeesData, $current_realm), sprintf(SummitScopes::WriteAttendeesData, $current_realm),
], ],
], ],
array( [
'name' => 'get-attendee-schedule', 'name' => 'get-attendee-schedule',
'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule', 'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule',
'http_method' => 'GET', 'http_method' => 'GET',
@ -159,19 +159,19 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::ReadSummitData, $current_realm), sprintf(SummitScopes::ReadSummitData, $current_realm),
sprintf(SummitScopes::ReadAllSummitData, $current_realm) sprintf(SummitScopes::ReadAllSummitData, $current_realm)
], ],
), ],
array( [
'name' => 'add-event-attendee-schedule', 'name' => 'add-event-attendee-schedule',
'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}', 'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}',
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
array( [
'name' => 'delete-event-attendee-schedule', 'name' => 'delete-event-attendee-schedule',
'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}', 'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
array( array(
'name' => 'checking-event-attendee-schedule', 'name' => 'checking-event-attendee-schedule',
'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}/check-in', 'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}/check-in',
@ -443,19 +443,19 @@ class ApiEndpointsSeeder extends Seeder
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ),
array( [
'name' => 'add-event-feedback-v2', 'name' => 'add-event-feedback-v2',
'route' => '/api/v2/summits/{id}/events/{event_id}/feedback', 'route' => '/api/v2/summits/{id}/events/{event_id}/feedback',
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
array( [
'name' => 'update-event-feedback-v2', 'name' => 'update-event-feedback-v2',
'route' => '/api/v2/summits/{id}/events/{event_id}/feedback', 'route' => '/api/v2/summits/{id}/events/{event_id}/feedback',
'http_method' => 'PUT', 'http_method' => 'PUT',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
array( [
'name' => 'get-event-feedback', 'name' => 'get-event-feedback',
'route' => '/api/v1/summits/{id}/events/{event_id}/feedback/{attendee_id?}', 'route' => '/api/v1/summits/{id}/events/{event_id}/feedback/{attendee_id?}',
'http_method' => 'GET', 'http_method' => 'GET',
@ -463,13 +463,13 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::ReadSummitData, $current_realm), sprintf(SummitScopes::ReadSummitData, $current_realm),
sprintf(SummitScopes::ReadAllSummitData, $current_realm) sprintf(SummitScopes::ReadAllSummitData, $current_realm)
], ],
), ],
array( [
'name' => 'delete-rsvp', 'name' => 'delete-rsvp',
'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}/rsvp', 'route' => '/api/v1/summits/{id}/attendees/{attendee_id}/schedule/{event_id}/rsvp',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
// locations // locations
[ [
'name' => 'get-locations', 'name' => 'get-locations',
@ -1205,6 +1205,24 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::WriteSummitData, $current_realm) sprintf(SummitScopes::WriteSummitData, $current_realm)
], ],
], ],
[
'name' => 'update-track-group',
'route' => '/api/v1/summits/{id}/track-groups/{track_group_id}',
'http_method' => 'PUT',
'scopes' => [
sprintf(SummitScopes::WriteTrackGroupsData, $current_realm),
sprintf(SummitScopes::WriteSummitData, $current_realm)
],
],
[
'name' => 'delete-track-group',
'route' => '/api/v1/summits/{id}/track-groups/{track_group_id}',
'http_method' => 'DELETE',
'scopes' => [
sprintf(SummitScopes::WriteTrackGroupsData, $current_realm),
sprintf(SummitScopes::WriteSummitData, $current_realm)
],
],
[ [
'name' => 'associate-track-2-track-group', 'name' => 'associate-track-2-track-group',
'route' => '/api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}', 'route' => '/api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}',
@ -1255,7 +1273,7 @@ class ApiEndpointsSeeder extends Seeder
'scopes' => [sprintf('%s/summits/confirm-external-orders', $current_realm)], 'scopes' => [sprintf('%s/summits/confirm-external-orders', $current_realm)],
), ),
//videos //videos
array( [
'name' => 'get-presentation-videos', 'name' => 'get-presentation-videos',
'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos', 'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos',
'http_method' => 'GET', 'http_method' => 'GET',
@ -1263,8 +1281,8 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::ReadSummitData, $current_realm), sprintf(SummitScopes::ReadSummitData, $current_realm),
sprintf(SummitScopes::ReadAllSummitData, $current_realm) sprintf(SummitScopes::ReadAllSummitData, $current_realm)
], ],
), ],
array( [
'name' => 'get-presentation-video', 'name' => 'get-presentation-video',
'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/video/{video_id}', 'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/video/{video_id}',
'http_method' => 'GET', 'http_method' => 'GET',
@ -1272,76 +1290,76 @@ class ApiEndpointsSeeder extends Seeder
sprintf(SummitScopes::ReadSummitData, $current_realm), sprintf(SummitScopes::ReadSummitData, $current_realm),
sprintf(SummitScopes::ReadAllSummitData, $current_realm) sprintf(SummitScopes::ReadAllSummitData, $current_realm)
], ],
), ],
array( [
'name' => 'create-presentation-video', 'name' => 'create-presentation-video',
'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos', 'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos',
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)],
), ],
array( [
'name' => 'update-presentation-video', 'name' => 'update-presentation-video',
'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}', 'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}',
'http_method' => 'PUT', 'http_method' => 'PUT',
'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)],
), ],
array( [
'name' => 'delete-presentation-video', 'name' => 'delete-presentation-video',
'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}', 'route' => '/api/v1/summits/{id}/presentations/{presentation_id}/videos/{video_id}',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteVideoData, $current_realm)],
), ],
//members //members
array( [
'name' => 'get-own-member', 'name' => 'get-own-member',
'route' => '/api/v1/summits/{id}/members/{member_id}', 'route' => '/api/v1/summits/{id}/members/{member_id}',
'http_method' => 'GET', 'http_method' => 'GET',
'scopes' => [sprintf('%s/me/read', $current_realm)], 'scopes' => [sprintf('%s/me/read', $current_realm)],
), ],
array( [
'name' => 'get-own-member-favorites', 'name' => 'get-own-member-favorites',
'route' => '/api/v1/summits/{id}/members/{member_id}/favorites', 'route' => '/api/v1/summits/{id}/members/{member_id}/favorites',
'http_method' => 'GET', 'http_method' => 'GET',
'scopes' => [sprintf('%s/me/read', $current_realm)], 'scopes' => [sprintf('%s/me/read', $current_realm)],
), ],
array( [
'name' => 'add-2-own-member-favorites', 'name' => 'add-2-own-member-favorites',
'route' => '/api/v1/summits/{id}/members/{member_id}/favorites/{event_id}', 'route' => '/api/v1/summits/{id}/members/{member_id}/favorites/{event_id}',
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf('%s/me/summits/events/favorites/add', $current_realm)], 'scopes' => [sprintf('%s/me/summits/events/favorites/add', $current_realm)],
), ],
array( [
'name' => 'delete-rsvp-member', 'name' => 'delete-rsvp-member',
'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/rsvp', 'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/rsvp',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
), ],
array( [
'name' => 'remove-from-own-member-favorites', 'name' => 'remove-from-own-member-favorites',
'route' => '/api/v1/summits/{id}/members/{member_id}/favorites/{event_id}', 'route' => '/api/v1/summits/{id}/members/{member_id}/favorites/{event_id}',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf('%s/me/summits/events/favorites/delete', $current_realm)], 'scopes' => [sprintf('%s/me/summits/events/favorites/delete', $current_realm)],
), ],
[ [
'name' => 'get-own-member-schedule', 'name' => 'get-own-member-schedule',
'route' => '/api/v1/summits/{id}/members/{member_id}/schedule', 'route' => '/api/v1/summits/{id}/members/{member_id}/schedule',
'http_method' => 'GET', 'http_method' => 'GET',
'scopes' => [sprintf('%s/me/read', $current_realm)], 'scopes' => [sprintf('%s/me/read', $current_realm)],
], ],
[ [
'name' => 'add-2-own-member-schedule', 'name' => 'add-2-own-member-schedule',
'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}', 'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}',
'http_method' => 'POST', 'http_method' => 'POST',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
], ],
[ [
'name' => 'remove-from-own-member-schedule', 'name' => 'remove-from-own-member-schedule',
'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}', 'route' => '/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}',
'http_method' => 'DELETE', 'http_method' => 'DELETE',
'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)], 'scopes' => [sprintf(SummitScopes::WriteSummitData, $current_realm)],
], ],
// notifications // notifications
[ [
'name' => 'get-notifications', 'name' => 'get-notifications',
'route' => '/api/v1/summits/{id}/notifications', 'route' => '/api/v1/summits/{id}/notifications',
'http_method' => 'GET', 'http_method' => 'GET',