1515use App \Models \Foundation \Summit \Events \Presentations \PresentationCategoryGroupConstants ;
1616use App \Models \Foundation \Summit \Repositories \IPresentationCategoryGroupRepository ;
1717use App \Services \Model \IPresentationCategoryGroupService ;
18+ use Illuminate \Http \Response ;
1819use Illuminate \Support \Facades \Request ;
1920use Illuminate \Support \Facades \Log ;
2021use Illuminate \Support \Facades \Validator ;
22+ use OpenApi \Attributes as OA ;
2123use libs \utils \PaginationValidationRules ;
2224use models \exceptions \ValidationException ;
2325use 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