Skip to content

Commit 983571f

Browse files
matiasperrone-exomatiasperrone
authored andcommitted
feat: Extend Swagger Coverage for controller OAuth2PresentationCategoryGroupController
1 parent d20074f commit 983571f

File tree

2 files changed

+294
-1
lines changed

2 files changed

+294
-1
lines changed

app/Http/Controllers/Apis/Protected/Summit/OAuth2PresentationCategoryGroupController.php

Lines changed: 224 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
use App\Models\Foundation\Summit\Events\Presentations\PresentationCategoryGroupConstants;
1616
use App\Models\Foundation\Summit\Repositories\IPresentationCategoryGroupRepository;
1717
use App\Services\Model\IPresentationCategoryGroupService;
18+
use Illuminate\Http\Response;
1819
use Illuminate\Support\Facades\Request;
1920
use Illuminate\Support\Facades\Log;
2021
use Illuminate\Support\Facades\Validator;
22+
use OpenApi\Attributes as OA;
2123
use libs\utils\PaginationValidationRules;
2224
use models\exceptions\ValidationException;
2325
use models\oauth2\IResourceServerContext;
@@ -71,6 +73,32 @@ public function __construct
7173
* @param $summit_id
7274
* @return mixed
7375
*/
76+
#[OA\Get(
77+
path: '/api/v1/summits/{id}/track-groups',
78+
summary: 'Get all track groups by summit',
79+
description: 'Returns a paginated list of track groups (presentation category groups) for a summit',
80+
tags: ['track-groups'],
81+
security: [['Bearer' => []]],
82+
parameters: [
83+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
84+
new OA\Parameter(name: 'page', in: 'query', required: false, schema: new OA\Schema(type: 'integer', default: 1)),
85+
new OA\Parameter(name: 'per_page', in: 'query', required: false, schema: new OA\Schema(type: 'integer', default: 5)),
86+
new OA\Parameter(name: 'filter', in: 'query', required: false, description: 'Filter by name, description, slug, track_title, track_code, group_title, group_code, voting_visible, chair_visible, or class_name', schema: new OA\Schema(type: 'string')),
87+
new OA\Parameter(name: 'order', in: 'query', required: false, description: 'Order by id, name, or slug', schema: new OA\Schema(type: 'string')),
88+
new OA\Parameter(name: 'expand', in: 'query', required: false, description: 'Expand relations (tracks)', schema: new OA\Schema(type: 'string')),
89+
],
90+
responses: [
91+
new OA\Response(
92+
response: Response::HTTP_OK,
93+
description: 'Success',
94+
content: new OA\JsonContent(ref: '#/components/schemas/PaginatedPresentationCategoryGroupsResponse')
95+
),
96+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
97+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
98+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
99+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
100+
]
101+
)]
74102
public function getAllBySummit($summit_id){
75103
$values = Request::all();
76104
$rules = PaginationValidationRules::get();
@@ -290,6 +318,29 @@ public function getAllBySummitCSV($summit_id){
290318
* @param $track_group_id
291319
* @return mixed
292320
*/
321+
#[OA\Get(
322+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}',
323+
summary: 'Get a track group by id',
324+
description: 'Returns a single track group by id',
325+
tags: ['track-groups'],
326+
security: [['Bearer' => []]],
327+
parameters: [
328+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
329+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
330+
new OA\Parameter(name: 'expand', in: 'query', required: false, description: 'Expand relations (tracks)', schema: new OA\Schema(type: 'string')),
331+
],
332+
responses: [
333+
new OA\Response(
334+
response: Response::HTTP_OK,
335+
description: 'Success',
336+
content: new OA\JsonContent(ref: '#/components/schemas/PresentationCategoryGroup')
337+
),
338+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
339+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
340+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
341+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
342+
]
343+
)]
293344
public function getTrackGroupBySummit($summit_id, $track_group_id){
294345
try {
295346
$summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id);
@@ -318,6 +369,33 @@ public function getTrackGroupBySummit($summit_id, $track_group_id){
318369
* @param $track_group_id
319370
* @return mixed
320371
*/
372+
#[OA\Put(
373+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}',
374+
summary: 'Update a track group',
375+
description: 'Updates an existing track group',
376+
tags: ['track-groups'],
377+
security: [['Bearer' => []]],
378+
requestBody: new OA\RequestBody(
379+
required: true,
380+
content: new OA\JsonContent(ref: '#/components/schemas/PresentationCategoryGroupRequest')
381+
),
382+
parameters: [
383+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
384+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
385+
],
386+
responses: [
387+
new OA\Response(
388+
response: Response::HTTP_OK,
389+
description: 'Track Group Updated',
390+
content: new OA\JsonContent(ref: '#/components/schemas/PresentationCategoryGroup')
391+
),
392+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
393+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
394+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
395+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
396+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
397+
]
398+
)]
321399
public function updateTrackGroupBySummit($summit_id, $track_group_id){
322400
try {
323401

@@ -364,6 +442,24 @@ public function updateTrackGroupBySummit($summit_id, $track_group_id){
364442
* @param $track_group_id
365443
* @return mixed
366444
*/
445+
#[OA\Delete(
446+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}',
447+
summary: 'Delete a track group',
448+
description: 'Deletes a track group',
449+
tags: ['track-groups'],
450+
security: [['Bearer' => []]],
451+
parameters: [
452+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
453+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
454+
],
455+
responses: [
456+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: 'Track Group Deleted'),
457+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
458+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
459+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
460+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
461+
]
462+
)]
367463
public function deleteTrackGroupBySummit($summit_id, $track_group_id){
368464
try {
369465

@@ -393,6 +489,32 @@ public function deleteTrackGroupBySummit($summit_id, $track_group_id){
393489
* @param $summit_id
394490
* @return mixed
395491
*/
492+
#[OA\Post(
493+
path: '/api/v1/summits/{id}/track-groups',
494+
summary: 'Create a new track group',
495+
description: 'Creates a new track group for a summit',
496+
tags: ['track-groups'],
497+
security: [['Bearer' => []]],
498+
requestBody: new OA\RequestBody(
499+
required: true,
500+
content: new OA\JsonContent(ref: '#/components/schemas/PresentationCategoryGroupRequest')
501+
),
502+
parameters: [
503+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
504+
],
505+
responses: [
506+
new OA\Response(
507+
response: Response::HTTP_CREATED,
508+
description: 'Track Group Created',
509+
content: new OA\JsonContent(ref: '#/components/schemas/PresentationCategoryGroup')
510+
),
511+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
512+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
513+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
514+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
515+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
516+
]
517+
)]
396518
public function addTrackGroupBySummit($summit_id){
397519
try {
398520

@@ -440,6 +562,25 @@ public function addTrackGroupBySummit($summit_id){
440562
* @param $track_id
441563
* @return mixed
442564
*/
565+
#[OA\Put(
566+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}',
567+
summary: 'Associate a track to a track group',
568+
description: 'Associates a presentation category (track) to a track group',
569+
tags: ['track-groups'],
570+
security: [['Bearer' => []]],
571+
parameters: [
572+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
573+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
574+
new OA\Parameter(name: 'track_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track id'),
575+
],
576+
responses: [
577+
new OA\Response(response: Response::HTTP_OK, description: 'Track Associated'),
578+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
579+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
580+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
581+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
582+
]
583+
)]
443584
public function associateTrack2TrackGroup($summit_id, $track_group_id, $track_id){
444585
try {
445586

@@ -471,6 +612,25 @@ public function associateTrack2TrackGroup($summit_id, $track_group_id, $track_id
471612
* @param $track_id
472613
* @return mixed
473614
*/
615+
#[OA\Delete(
616+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}/tracks/{track_id}',
617+
summary: 'Disassociate a track from a track group',
618+
description: 'Removes the association between a presentation category (track) and a track group',
619+
tags: ['track-groups'],
620+
security: [['Bearer' => []]],
621+
parameters: [
622+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
623+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
624+
new OA\Parameter(name: 'track_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track id'),
625+
],
626+
responses: [
627+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: 'Track Disassociated'),
628+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
629+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
630+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
631+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
632+
]
633+
)]
474634
public function disassociateTrack2TrackGroup($summit_id, $track_group_id, $track_id){
475635
try {
476636

@@ -502,6 +662,25 @@ public function disassociateTrack2TrackGroup($summit_id, $track_group_id, $track
502662
* @param $group_id
503663
* @return mixed
504664
*/
665+
#[OA\Put(
666+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}/allowed-groups/{group_id}',
667+
summary: 'Associate an allowed group to a track group',
668+
description: 'Associates a group to the list of allowed groups for a private track group',
669+
tags: ['track-groups'],
670+
security: [['Bearer' => []]],
671+
parameters: [
672+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
673+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
674+
new OA\Parameter(name: 'group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The group id'),
675+
],
676+
responses: [
677+
new OA\Response(response: Response::HTTP_OK, description: 'Group Associated'),
678+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
679+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
680+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
681+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
682+
]
683+
)]
505684
public function associateAllowedGroup2TrackGroup($summit_id, $track_group_id, $group_id){
506685
try {
507686

@@ -533,6 +712,25 @@ public function associateAllowedGroup2TrackGroup($summit_id, $track_group_id, $g
533712
* @param $group_id
534713
* @return mixed
535714
*/
715+
#[OA\Delete(
716+
path: '/api/v1/summits/{id}/track-groups/{track_group_id}/allowed-groups/{group_id}',
717+
summary: 'Disassociate an allowed group from a track group',
718+
description: 'Removes a group from the list of allowed groups for a private track group',
719+
tags: ['track-groups'],
720+
security: [['Bearer' => []]],
721+
parameters: [
722+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
723+
new OA\Parameter(name: 'track_group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The track group id'),
724+
new OA\Parameter(name: 'group_id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The group id'),
725+
],
726+
responses: [
727+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: 'Group Disassociated'),
728+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
729+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
730+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
731+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
732+
]
733+
)]
536734
public function disassociateAllowedGroup2TrackGroup($summit_id, $track_group_id, $group_id){
537735
try {
538736

@@ -562,6 +760,31 @@ public function disassociateAllowedGroup2TrackGroup($summit_id, $track_group_id,
562760
* @param $summit_id
563761
* @return mixed
564762
*/
763+
#[OA\Get(
764+
path: '/api/v1/summits/{id}/track-groups/metadata',
765+
summary: 'Get track groups metadata',
766+
description: 'Returns metadata about available track group types',
767+
tags: ['track-groups'],
768+
security: [['Bearer' => []]],
769+
parameters: [
770+
new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'), description: 'The summit id'),
771+
],
772+
responses: [
773+
new OA\Response(
774+
response: Response::HTTP_OK,
775+
description: 'Success',
776+
content: new OA\JsonContent(
777+
type: 'object',
778+
properties: [
779+
new OA\Property(property: 'class_names', type: 'array', items: new OA\Items(type: 'string')),
780+
]
781+
)
782+
),
783+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
784+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"),
785+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
786+
]
787+
)]
565788
public function getMetadata($summit_id){
566789
$summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id);
567790
if (is_null($summit)) return $this->error404();
@@ -571,4 +794,4 @@ public function getMetadata($summit_id){
571794
$this->repository->getMetadata($summit)
572795
);
573796
}
574-
}
797+
}

0 commit comments

Comments
 (0)