1313 **/
1414use App \Models \Foundation \Summit \Repositories \ISponsorshipTypeRepository ;
1515use App \ModelSerializers \SerializerUtils ;
16+ use App \Security \SummitScopes ;
1617use App \Services \Model \ISponsorshipTypeService ;
18+ use Illuminate \Support \Facades \Config ;
1719use Illuminate \Support \Facades \Log ;
1820use models \oauth2 \IResourceServerContext ;
1921use models \summit \ISummitRepository ;
2022use ModelSerializers \SerializerRegistry ;
23+ use App \Models \Foundation \Main \IGroup ;
24+ use OpenApi \Attributes as OA ;
25+ use Symfony \Component \HttpFoundation \Response ;
26+
2127/**
2228 * Class OAuth2SponsorshipTypeApiController
2329 * @package App\Http\Controllers
@@ -101,9 +107,108 @@ protected function getSummitRepository(): ISummitRepository
101107 }
102108
103109 use GetAndValidateJsonPayload;
104- /**
105- * @return \Illuminate\Http\JsonResponse|mixed
106- */
110+
111+ #[OA \Get(
112+ path: "/api/v1/sponsorship-types " ,
113+ summary: "Get all sponsorship types " ,
114+ operationId: 'getSponsorshipTypes ' ,
115+ x: [
116+ 'required-groups ' => [
117+ IGroup::SummitAdministrators,
118+ IGroup::SuperAdmins,
119+ IGroup::Administrators
120+ ]
121+ ],
122+ security: [['summit_sponsorship_oauth2 ' => [
123+ SummitScopes::ReadSummitData,
124+ SummitScopes::ReadAllSummitData,
125+ ]]],
126+ tags: ["SponsorshipTypes " ],
127+ parameters: [
128+ new OA \Parameter (name: "page " , description: "Page number " , in: "query " , required: false , schema: new OA \Schema (type: "integer " , default: 1 )),
129+ new OA \Parameter (name: "per_page " , description: "Items per page " , in: "query " , required: false , schema: new OA \Schema (type: "integer " , default: 10 )),
130+ new OA \Parameter (name: "filter " , description: "Filter query (name==value, label=@value, size==value) " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
131+ new OA \Parameter (name: "order " , description: "Order by (+id, -name, +order, +label, +size) " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
132+ ],
133+ responses: [
134+ new OA \Response (
135+ response: Response::HTTP_OK ,
136+ description: "OK " ,
137+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedDataSponsorshipType ' ),
138+ ),
139+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
140+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
141+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
142+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
143+ ]
144+ )]
145+ public function getAll ()
146+ {
147+ return $ this ->_getAll (
148+ function (){
149+ return [
150+ 'name ' => ['== ' , '=@ ' ],
151+ 'label ' => ['== ' , '=@ ' ],
152+ 'size ' => ['== ' , '=@ ' ],
153+ ];
154+ },
155+ function (){
156+ return [
157+ 'name ' => 'sometimes|required|string ' ,
158+ 'label ' => 'sometimes|required|string ' ,
159+ 'size ' => 'sometimes|required|string ' ,
160+ ];
161+ },
162+ function (){
163+ return [
164+ 'id ' ,
165+ 'name ' ,
166+ 'order ' ,
167+ 'label ' ,
168+ 'size ' ,
169+ ];
170+ },
171+ function ($ filter ){
172+ return $ filter ;
173+ },
174+ function (){
175+ return SerializerRegistry::SerializerType_Public;
176+ }
177+ );
178+ }
179+
180+ #[OA \Post(
181+ path: "/api/v1/sponsorship-types " ,
182+ summary: "Add a new sponsorship type " ,
183+ operationId: 'addSponsorshipType ' ,
184+ x: [
185+ 'required-groups ' => [
186+ IGroup::SummitAdministrators,
187+ IGroup::SuperAdmins,
188+ IGroup::Administrators
189+ ]
190+ ],
191+ security: [['summit_sponsorship_oauth2 ' => [
192+ SummitScopes::WriteSummitData,
193+ ]]],
194+ tags: ["SponsorshipTypes " ],
195+ requestBody: new OA \RequestBody (
196+ required: true ,
197+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipTypeAddRequest " )
198+ ),
199+ responses: [
200+ new OA \Response (
201+ response: Response::HTTP_CREATED ,
202+ description: "Created " ,
203+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
204+ ),
205+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
206+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
207+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
208+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
209+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
210+ ]
211+ )]
107212 public function add ()
108213 {
109214 return $ this ->processRequest (function (){
@@ -124,10 +229,31 @@ public function add()
124229 });
125230 }
126231
127- /**
128- * @param $id
129- * @return \Illuminate\Http\JsonResponse|mixed
130- */
232+ #[OA \Get(
233+ path: "/api/v1/sponsorship-types/{id} " ,
234+ summary: "Get a sponsorship type by id " ,
235+ operationId: 'getSponsorshipType ' ,
236+ security: [['summit_sponsorship_oauth2 ' => [
237+ SummitScopes::ReadSummitData,
238+ SummitScopes::ReadAllSummitData,
239+ ]]],
240+ tags: ["SponsorshipTypes " ],
241+ parameters: [
242+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
243+ ],
244+ responses: [
245+ new OA \Response (
246+ response: Response::HTTP_OK ,
247+ description: "OK " ,
248+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
249+ ),
250+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
251+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
252+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
253+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
254+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
255+ ]
256+ )]
131257 public function get ($ id )
132258 {
133259 return $ this ->processRequest (function () use ($ id ){
@@ -144,10 +270,42 @@ public function get($id)
144270 });
145271 }
146272
147- /**
148- * @param $id
149- * @return \Illuminate\Http\JsonResponse|mixed
150- */
273+ #[OA \Put(
274+ path: "/api/v1/sponsorship-types/{id} " ,
275+ summary: "Update a sponsorship type " ,
276+ operationId: 'updateSponsorshipType ' ,
277+ x: [
278+ 'required-groups ' => [
279+ IGroup::SummitAdministrators,
280+ IGroup::SuperAdmins,
281+ IGroup::Administrators
282+ ]
283+ ],
284+ security: [['summit_sponsorship_oauth2 ' => [
285+ SummitScopes::WriteSummitData,
286+ ]]],
287+ tags: ["SponsorshipTypes " ],
288+ parameters: [
289+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
290+ ],
291+ requestBody: new OA \RequestBody (
292+ required: true ,
293+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipTypeUpdateRequest " )
294+ ),
295+ responses: [
296+ new OA \Response (
297+ response: Response::HTTP_OK ,
298+ description: "OK " ,
299+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
300+ ),
301+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
302+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
303+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
304+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
305+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
306+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
307+ ]
308+ )]
151309 public function update ($ id )
152310 {
153311 return $ this ->processRequest (function () use ($ id ){
@@ -168,10 +326,33 @@ public function update($id)
168326 });
169327 }
170328
171- /**
172- * @param $id
173- * @return \Illuminate\Http\JsonResponse|mixed
174- */
329+ #[OA \Delete(
330+ path: "/api/v1/sponsorship-types/{id} " ,
331+ summary: "Delete a sponsorship type " ,
332+ operationId: 'deleteSponsorshipType ' ,
333+ x: [
334+ 'required-groups ' => [
335+ IGroup::SummitAdministrators,
336+ IGroup::SuperAdmins,
337+ IGroup::Administrators
338+ ]
339+ ],
340+ security: [['summit_sponsorship_oauth2 ' => [
341+ SummitScopes::WriteSummitData,
342+ ]]],
343+ tags: ["SponsorshipTypes " ],
344+ parameters: [
345+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
346+ ],
347+ responses: [
348+ new OA \Response (response: Response::HTTP_NO_CONTENT , description: "No Content " ),
349+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
350+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
351+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
352+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
353+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
354+ ]
355+ )]
175356 public function delete ($ id )
176357 {
177358 return $ this ->processRequest (function () use ($ id ){
0 commit comments