2424use models \utils \IEntity ;
2525use Exception ;
2626use ModelSerializers \SerializerRegistry ;
27+ use OpenApi \Attributes as OA ;
28+ use Symfony \Component \HttpFoundation \Response ;
2729use utils \Filter ;
2830use utils \FilterElement ;
2931
@@ -67,6 +69,55 @@ public function __construct
6769
6870 use GetEntity;
6971
72+ #[OA \Get(
73+ path: "/api/v1/summit-administrator-groups " ,
74+ summary: "Get all summit administrator permission groups " ,
75+ security: [["bearer_token " => []]],
76+ tags: ["SummitAdministratorPermissionGroups " ],
77+ parameters: [
78+ new OA \Parameter (
79+ name: "page " ,
80+ description: "Page number " ,
81+ in: "query " ,
82+ required: false ,
83+ schema: new OA \Schema (type: "integer " , default: 1 )
84+ ),
85+ new OA \Parameter (
86+ name: "per_page " ,
87+ description: "Items per page " ,
88+ in: "query " ,
89+ required: false ,
90+ schema: new OA \Schema (type: "integer " , default: 10 )
91+ ),
92+ new OA \Parameter (name: "filter " , description: "Filter " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
93+ new OA \Parameter (name: "order " , description: "Order " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
94+ ],
95+ responses: [
96+ new OA \Response (
97+ response: Response::HTTP_OK ,
98+ description: "OK " ,
99+ content: new OA \JsonContent (
100+ allOf: [
101+ new OA \Schema (ref: "#/components/schemas/PaginateDataSchemaResponse " ),
102+ new OA \Schema (
103+ type: "object " ,
104+ properties: [
105+ new OA \Property (
106+ property: "data " ,
107+ type: "array " ,
108+ items: new OA \Items (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
109+ )
110+ ]
111+ )
112+ ]
113+ )
114+ ),
115+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
116+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
117+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
118+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
119+ ]
120+ )]
70121 function getAll ()
71122 {
72123 return $ this ->_getAll (
@@ -107,9 +158,35 @@ function () {
107158 );
108159 }
109160
110- /**
111- * @inheritDoc
112- */
161+ #[OA \Post(
162+ path: "/api/v1/summit-administrator-groups " ,
163+ summary: "Create a new summit administrator permission group " ,
164+ security: [["bearer_token " => []]],
165+ tags: ["SummitAdministratorPermissionGroups " ],
166+ requestBody: new OA \RequestBody (
167+ required: true ,
168+ content: new OA \JsonContent (
169+ required: ['title ' , 'summits ' , 'members ' ],
170+ properties: [
171+ new OA \Property (property: 'title ' , type: 'string ' , description: 'Group title ' ),
172+ new OA \Property (property: 'summits ' , type: 'array ' , items: new OA \Items (type: 'integer ' ), description: 'Array of summit IDs ' ),
173+ new OA \Property (property: 'members ' , type: 'array ' , items: new OA \Items (type: 'integer ' ), description: 'Array of member IDs ' ),
174+ ]
175+ )
176+ ),
177+ responses: [
178+ new OA \Response (
179+ response: Response::HTTP_CREATED ,
180+ description: "Created " ,
181+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
182+ ),
183+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
184+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
185+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
186+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
187+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
188+ ]
189+ )]
113190 function getAddValidationRules (array $ payload ): array
114191 {
115192 return [
@@ -127,25 +204,64 @@ protected function addEntity(array $payload): IEntity
127204 return $ this ->service ->create ($ payload );
128205 }
129206
130- /**
131- * @inheritDoc
132- */
133- protected function deleteEntity (int $ id ): void
134- {
135- $ this ->service ->delete ($ id );
136- }
137-
138- /**
139- * @inheritDoc
140- */
207+ #[OA \Get(
208+ path: "/api/v1/summit-administrator-groups/{id} " ,
209+ summary: "Get a summit administrator permission group by ID " ,
210+ security: [["bearer_token " => []]],
211+ tags: ["SummitAdministratorPermissionGroups " ],
212+ parameters: [
213+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
214+ ],
215+ responses: [
216+ new OA \Response (
217+ response: Response::HTTP_OK ,
218+ description: "OK " ,
219+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
220+ ),
221+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
222+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
223+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
224+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
225+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
226+ ]
227+ )]
141228 protected function getEntity (int $ id ): IEntity
142229 {
143230 return $ this ->repository ->getById ($ id );
144231 }
145232
146- /**
147- * @inheritDoc
148- */
233+ #[OA \Put(
234+ path: "/api/v1/summit-administrator-groups/{id} " ,
235+ summary: "Update a summit administrator permission group " ,
236+ security: [["bearer_token " => []]],
237+ tags: ["SummitAdministratorPermissionGroups " ],
238+ parameters: [
239+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
240+ ],
241+ requestBody: new OA \RequestBody (
242+ required: true ,
243+ content: new OA \JsonContent (
244+ properties: [
245+ new OA \Property (property: 'title ' , type: 'string ' , description: 'Group title ' ),
246+ new OA \Property (property: 'summits ' , type: 'array ' , items: new OA \Items (type: 'integer ' ), description: 'Array of summit IDs ' ),
247+ new OA \Property (property: 'members ' , type: 'array ' , items: new OA \Items (type: 'integer ' ), description: 'Array of member IDs ' ),
248+ ]
249+ )
250+ ),
251+ responses: [
252+ new OA \Response (
253+ response: Response::HTTP_OK ,
254+ description: "OK " ,
255+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
256+ ),
257+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
258+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
259+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
260+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
261+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
262+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
263+ ]
264+ )]
149265 function getUpdateValidationRules (array $ payload ): array
150266 {
151267 return [
@@ -163,6 +279,51 @@ protected function updateEntity($id, array $payload): IEntity
163279 return $ this ->service ->update ($ id , $ payload );
164280 }
165281
282+ #[OA \Delete(
283+ path: "/api/v1/summit-administrator-groups/{id} " ,
284+ summary: "Delete a summit administrator permission group " ,
285+ security: [["bearer_token " => []]],
286+ tags: ["SummitAdministratorPermissionGroups " ],
287+ parameters: [
288+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
289+ ],
290+ responses: [
291+ new OA \Response (response: Response::HTTP_NO_CONTENT , description: "No Content " ),
292+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
293+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
294+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
295+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
296+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
297+ ]
298+ )]
299+ protected function deleteEntity (int $ id ): void
300+ {
301+ $ this ->service ->delete ($ id );
302+ }
303+
304+ #[OA \Put(
305+ path: "/api/v1/summit-administrator-groups/{id}/members/{member_id} " ,
306+ summary: "Add member to permission group " ,
307+ security: [["bearer_token " => []]],
308+ tags: ["SummitAdministratorPermissionGroups " ],
309+ parameters: [
310+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
311+ new OA \Parameter (name: "member_id " , description: "Member ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
312+ ],
313+ responses: [
314+ new OA \Response (
315+ response: Response::HTTP_OK ,
316+ description: "OK " ,
317+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
318+ ),
319+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
320+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
321+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
322+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
323+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
324+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
325+ ]
326+ )]
166327 public function addMember ($ id , $ member_id )
167328 {
168329 try {
@@ -189,6 +350,29 @@ public function addMember($id, $member_id)
189350 }
190351 }
191352
353+ #[OA \Delete(
354+ path: "/api/v1/summit-administrator-groups/{id}/members/{member_id} " ,
355+ summary: "Remove member from permission group " ,
356+ security: [["bearer_token " => []]],
357+ tags: ["SummitAdministratorPermissionGroups " ],
358+ parameters: [
359+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
360+ new OA \Parameter (name: "member_id " , description: "Member ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
361+ ],
362+ responses: [
363+ new OA \Response (
364+ response: Response::HTTP_OK ,
365+ description: "OK " ,
366+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
367+ ),
368+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
369+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
370+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
371+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
372+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
373+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
374+ ]
375+ )]
192376 public function removeMember ($ id , $ member_id )
193377 {
194378 try {
@@ -215,6 +399,29 @@ public function removeMember($id, $member_id)
215399 }
216400 }
217401
402+ #[OA \Put(
403+ path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id} " ,
404+ summary: "Add summit to permission group " ,
405+ security: [["bearer_token " => []]],
406+ tags: ["SummitAdministratorPermissionGroups " ],
407+ parameters: [
408+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
409+ new OA \Parameter (name: "summit_id " , description: "Summit ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
410+ ],
411+ responses: [
412+ new OA \Response (
413+ response: Response::HTTP_OK ,
414+ description: "OK " ,
415+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
416+ ),
417+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
418+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
419+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
420+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
421+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
422+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
423+ ]
424+ )]
218425 public function addSummit ($ id , $ summit_id )
219426 {
220427 try {
@@ -241,6 +448,29 @@ public function addSummit($id, $summit_id)
241448 }
242449 }
243450
451+ #[OA \Delete(
452+ path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id} " ,
453+ summary: "Remove summit from permission group " ,
454+ security: [["bearer_token " => []]],
455+ tags: ["SummitAdministratorPermissionGroups " ],
456+ parameters: [
457+ new OA \Parameter (name: "id " , description: "Permission Group ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
458+ new OA \Parameter (name: "summit_id " , description: "Summit ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
459+ ],
460+ responses: [
461+ new OA \Response (
462+ response: Response::HTTP_OK ,
463+ description: "OK " ,
464+ content: new OA \JsonContent (ref: "#/components/schemas/SummitAdministratorPermissionGroup " )
465+ ),
466+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
467+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
468+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
469+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "Not found " ),
470+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
471+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
472+ ]
473+ )]
244474 public function removeSummit ($ id , $ summit_id )
245475 {
246476 try {
0 commit comments