1313 **/
1414
1515use App \Http \Exceptions \HTTP403ForbiddenException ;
16+ use App \Models \Foundation \Main \IGroup ;
1617use App \Models \Foundation \Main \Repositories \ISummitAdministratorPermissionGroupRepository ;
1718use App \ModelSerializers \ISummitAttendeeTicketSerializerTypes ;
1819use App \Services \Model \ISummitAdministratorPermissionGroupService ;
20+ use App \Security \SummitScopes ;
1921use Illuminate \Support \Facades \Log ;
2022use models \exceptions \EntityNotFoundException ;
2123use models \exceptions \ValidationException ;
2426use models \utils \IEntity ;
2527use Exception ;
2628use ModelSerializers \SerializerRegistry ;
29+ use OpenApi \Attributes as OA ;
30+ use Symfony \Component \HttpFoundation \Response ;
2731use utils \Filter ;
2832use utils \FilterElement ;
2933
@@ -67,6 +71,50 @@ public function __construct
6771
6872 use GetEntity;
6973
74+ #[OA \Get(
75+ path: "/api/v1/summit-administrator-groups " ,
76+ description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
77+ summary: "Get all summit administrator permission groups " ,
78+ security: [['summit_admin_groups_oauth2 ' => [
79+ SummitScopes::ReadSummitAdminGroups,
80+ ]]],
81+ tags: ["SummitAdministratorPermissionGroups " ],
82+ x: [
83+ 'required-groups ' => [
84+ IGroup::SuperAdmins,
85+ IGroup::Administrators,
86+ ]
87+ ],
88+ parameters: [
89+ new OA \Parameter (
90+ name: "page " ,
91+ description: "Page number " ,
92+ in: "query " ,
93+ required: false ,
94+ schema: new OA \Schema (type: "integer " , default: 1 )
95+ ),
96+ new OA \Parameter (
97+ name: "per_page " ,
98+ description: "Items per page " ,
99+ in: "query " ,
100+ required: false ,
101+ schema: new OA \Schema (type: "integer " , default: 10 )
102+ ),
103+ new OA \Parameter (name: "filter " , description: "Filter " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
104+ new OA \Parameter (name: "order " , description: "Order " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
105+ ],
106+ responses: [
107+ new OA \Response (
108+ response: Response::HTTP_OK ,
109+ description: "OK " ,
110+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroupList " )
111+ ),
112+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
113+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
114+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
115+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
116+ ]
117+ )]
70118 function getAll ()
71119 {
72120 return $ this ->_getAll (
@@ -107,9 +155,32 @@ function () {
107155 );
108156 }
109157
110- /**
111- * @inheritDoc
112- */
158+ #[OA \Post(
159+ path: "/api/v1/summit-administrator-groups " ,
160+ summary: "Create a new summit administrator permission group " ,
161+ security: [['summit_admin_groups_oauth2 ' => [
162+ SummitScopes::WriteSummitAdminGroups,
163+ ]]],
164+ tags: ["SummitAdministratorPermissionGroups " ],
165+ requestBody: new OA \RequestBody (
166+ required: true ,
167+ content: new OA \JsonContent (
168+ ref: "#/components/schemas/CreateSummitAdministratorPermissionGroup "
169+ )
170+ ),
171+ responses: [
172+ new OA \Response (
173+ response: Response::HTTP_CREATED ,
174+ description: "Created " ,
175+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
176+ ),
177+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
178+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
179+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
180+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
181+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
182+ ]
183+ )]
113184 function getAddValidationRules (array $ payload ): array
114185 {
115186 return [
@@ -127,25 +198,64 @@ protected function addEntity(array $payload): IEntity
127198 return $ this ->service ->create ($ payload );
128199 }
129200
130- /**
131- * @inheritDoc
132- */
133- protected function deleteEntity (int $ id ): void
134- {
135- $ this ->service ->delete ($ id );
136- }
137-
138- /**
139- * @inheritDoc
140- */
201+ #[OA \Get(
202+ path: "/api/v1/summit-administrator-groups/{id} " ,
203+ summary: "Get a summit administrator permission group by ID " ,
204+ security: [['summit_admin_groups_oauth2 ' => [
205+ SummitScopes::ReadSummitAdminGroups,
206+ ]]],
207+ tags: ["SummitAdministratorPermissionGroups " ],
208+ parameters: [
209+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
210+ ],
211+ responses: [
212+ new OA \Response (
213+ response: Response::HTTP_OK ,
214+ description: "OK " ,
215+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
216+ ),
217+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
218+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
219+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
220+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
221+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
222+ ]
223+ )]
141224 protected function getEntity (int $ id ): IEntity
142225 {
143226 return $ this ->repository ->getById ($ id );
144227 }
145228
146- /**
147- * @inheritDoc
148- */
229+ #[OA \Put(
230+ path: "/api/v1/summit-administrator-groups/{id} " ,
231+ summary: "Update a summit administrator permission group " ,
232+ security: [['summit_admin_groups_oauth2 ' => [
233+ SummitScopes::WriteSummitAdminGroups,
234+ ]]],
235+ tags: ["SummitAdministratorPermissionGroups " ],
236+ parameters: [
237+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
238+ ],
239+ requestBody: new OA \RequestBody (
240+ required: true ,
241+ content: new OA \JsonContent (
242+ ref: "#/components/schemas/UpdateSummitAdministratorPermissionGroup "
243+ )
244+ ),
245+ responses: [
246+ new OA \Response (
247+ response: Response::HTTP_OK ,
248+ description: "OK " ,
249+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
250+ ),
251+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
252+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
253+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
254+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
255+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
256+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
257+ ]
258+ )]
149259 function getUpdateValidationRules (array $ payload ): array
150260 {
151261 return [
@@ -163,6 +273,62 @@ protected function updateEntity($id, array $payload): IEntity
163273 return $ this ->service ->update ($ id , $ payload );
164274 }
165275
276+ #[OA \Delete(
277+ path: "/api/v1/summit-administrator-groups/{id} " ,
278+ summary: "Delete a summit administrator permission group " ,
279+ security: [['summit_admin_groups_oauth2 ' => [
280+ SummitScopes::WriteSummitAdminGroups,
281+ ]]],
282+ tags: ["SummitAdministratorPermissionGroups " ],
283+ parameters: [
284+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
285+ ],
286+ responses: [
287+ new OA \Response (response: Response::HTTP_NO_CONTENT , description: "No Content " ),
288+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
289+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
290+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
291+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
292+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
293+ ]
294+ )]
295+ protected function deleteEntity (int $ id ): void
296+ {
297+ $ this ->service ->delete ($ id );
298+ }
299+
300+ #[OA \Put(
301+ path: "/api/v1/summit-administrator-groups/{id}/members/{member_id} " ,
302+ description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
303+ summary: "Add member to permission group " ,
304+ security: [['summit_admin_groups_oauth2 ' => [
305+ SummitScopes::WriteSummitAdminGroups,
306+ ]]],
307+ tags: ["SummitAdministratorPermissionGroups " ],
308+ x: [
309+ 'required-groups ' => [
310+ IGroup::SuperAdmins,
311+ IGroup::Administrators,
312+ ]
313+ ],
314+ parameters: [
315+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
316+ new OA \Parameter (name: "member_id " , description: "Member ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
317+ ],
318+ responses: [
319+ new OA \Response (
320+ response: Response::HTTP_OK ,
321+ description: "OK " ,
322+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
323+ ),
324+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
325+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
326+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
327+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
328+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
329+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
330+ ]
331+ )]
166332 public function addMember ($ id , $ member_id )
167333 {
168334 try {
@@ -189,6 +355,38 @@ public function addMember($id, $member_id)
189355 }
190356 }
191357
358+ #[OA \Delete(
359+ path: "/api/v1/summit-administrator-groups/{id}/members/{member_id} " ,
360+ description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
361+ summary: "Remove member from permission group " ,
362+ security: [['summit_admin_groups_oauth2 ' => [
363+ SummitScopes::WriteSummitAdminGroups,
364+ ]]],
365+ tags: ["SummitAdministratorPermissionGroups " ],
366+ x: [
367+ 'required-groups ' => [
368+ IGroup::SuperAdmins,
369+ IGroup::Administrators,
370+ ]
371+ ],
372+ parameters: [
373+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
374+ new OA \Parameter (name: "member_id " , description: "Member ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
375+ ],
376+ responses: [
377+ new OA \Response (
378+ response: Response::HTTP_OK ,
379+ description: "OK " ,
380+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
381+ ),
382+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
383+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
384+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
385+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
386+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
387+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
388+ ]
389+ )]
192390 public function removeMember ($ id , $ member_id )
193391 {
194392 try {
@@ -215,6 +413,38 @@ public function removeMember($id, $member_id)
215413 }
216414 }
217415
416+ #[OA \Put(
417+ path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id} " ,
418+ description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
419+ summary: "Add summit to permission group " ,
420+ security: [['summit_admin_groups_oauth2 ' => [
421+ SummitScopes::WriteSummitAdminGroups,
422+ ]]],
423+ tags: ["SummitAdministratorPermissionGroups " ],
424+ x: [
425+ 'required-groups ' => [
426+ IGroup::SuperAdmins,
427+ IGroup::Administrators,
428+ ]
429+ ],
430+ parameters: [
431+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
432+ new OA \Parameter (name: "summit_id " , description: "Summit ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
433+ ],
434+ responses: [
435+ new OA \Response (
436+ response: Response::HTTP_OK ,
437+ description: "OK " ,
438+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
439+ ),
440+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
441+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
442+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
443+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
444+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
445+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
446+ ]
447+ )]
218448 public function addSummit ($ id , $ summit_id )
219449 {
220450 try {
@@ -241,6 +471,38 @@ public function addSummit($id, $summit_id)
241471 }
242472 }
243473
474+ #[OA \Delete(
475+ path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id} " ,
476+ description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
477+ summary: "Remove summit from permission group " ,
478+ security: [['summit_admin_groups_oauth2 ' => [
479+ SummitScopes::WriteSummitAdminGroups,
480+ ]]],
481+ tags: ["SummitAdministratorPermissionGroups " ],
482+ x: [
483+ 'required-groups ' => [
484+ IGroup::SuperAdmins,
485+ IGroup::Administrators,
486+ ]
487+ ],
488+ parameters: [
489+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
490+ new OA \Parameter (name: "summit_id " , description: "Summit ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
491+ ],
492+ responses: [
493+ new OA \Response (
494+ response: Response::HTTP_OK ,
495+ description: "OK " ,
496+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
497+ ),
498+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
499+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
500+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
501+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
502+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
503+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
504+ ]
505+ )]
244506 public function removeSummit ($ id , $ summit_id )
245507 {
246508 try {
0 commit comments