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+
27+ #[
28+ OA \SecurityScheme(
29+ type: 'oauth2 ' ,
30+ securityScheme: 'summit_sponsorship_oauth2 ' ,
31+ flows: [
32+ new OA \Flow (
33+ authorizationUrl: L5_SWAGGER_CONST_AUTH_URL ,
34+ tokenUrl: L5_SWAGGER_CONST_TOKEN_URL ,
35+ flow: 'authorizationCode ' ,
36+ scopes: [
37+ SummitScopes::ReadSummitData => 'Read Sponsorship Types Data ' ,
38+ SummitScopes::WriteSummitData => 'Write Sponsorship Types Data ' ,
39+ ],
40+ ),
41+ ],
42+ )
43+ ]
44+ class SponsorshipTypeAuthSchema {}
2145/**
2246 * Class OAuth2SponsorshipTypeApiController
2347 * @package App\Http\Controllers
@@ -101,9 +125,108 @@ protected function getSummitRepository(): ISummitRepository
101125 }
102126
103127 use GetAndValidateJsonPayload;
104- /**
105- * @return \Illuminate\Http\JsonResponse|mixed
106- */
128+
129+ #[OA \Get(
130+ path: "/api/v1/sponsorship-types " ,
131+ summary: "Get all sponsorship types " ,
132+ operationId: 'getSponsorshipTypes ' ,
133+ x: [
134+ 'required-groups ' => [
135+ IGroup::SummitAdministrators,
136+ IGroup::SuperAdmins,
137+ IGroup::Administrators
138+ ]
139+ ],
140+ security: [['summit_sponsorship_oauth2 ' => [
141+ SummitScopes::ReadSummitData,
142+ SummitScopes::ReadAllSummitData,
143+ ]]],
144+ tags: ["SponsorshipTypes " ],
145+ parameters: [
146+ new OA \Parameter (name: "page " , description: "Page number " , in: "query " , required: false , schema: new OA \Schema (type: "integer " , default: 1 )),
147+ new OA \Parameter (name: "per_page " , description: "Items per page " , in: "query " , required: false , schema: new OA \Schema (type: "integer " , default: 10 )),
148+ new OA \Parameter (name: "filter " , description: "Filter query (name==value, label=@value, size==value) " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
149+ new OA \Parameter (name: "order " , description: "Order by (+id, -name, +order, +label, +size) " , in: "query " , required: false , schema: new OA \Schema (type: "string " )),
150+ ],
151+ responses: [
152+ new OA \Response (
153+ response: Response::HTTP_OK ,
154+ description: "OK " ,
155+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedDataSponsorshipType ' ),
156+ ),
157+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
158+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
159+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
160+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
161+ ]
162+ )]
163+ public function getAll ()
164+ {
165+ return $ this ->_getAll (
166+ function (){
167+ return [
168+ 'name ' => ['== ' , '=@ ' ],
169+ 'label ' => ['== ' , '=@ ' ],
170+ 'size ' => ['== ' , '=@ ' ],
171+ ];
172+ },
173+ function (){
174+ return [
175+ 'name ' => 'sometimes|required|string ' ,
176+ 'label ' => 'sometimes|required|string ' ,
177+ 'size ' => 'sometimes|required|string ' ,
178+ ];
179+ },
180+ function (){
181+ return [
182+ 'id ' ,
183+ 'name ' ,
184+ 'order ' ,
185+ 'label ' ,
186+ 'size ' ,
187+ ];
188+ },
189+ function ($ filter ){
190+ return $ filter ;
191+ },
192+ function (){
193+ return SerializerRegistry::SerializerType_Public;
194+ }
195+ );
196+ }
197+
198+ #[OA \Post(
199+ path: "/api/v1/sponsorship-types " ,
200+ summary: "Add a new sponsorship type " ,
201+ operationId: 'addSponsorshipType ' ,
202+ x: [
203+ 'required-groups ' => [
204+ IGroup::SummitAdministrators,
205+ IGroup::SuperAdmins,
206+ IGroup::Administrators
207+ ]
208+ ],
209+ security: [['summit_sponsorship_oauth2 ' => [
210+ SummitScopes::WriteSummitData,
211+ ]]],
212+ tags: ["SponsorshipTypes " ],
213+ requestBody: new OA \RequestBody (
214+ required: true ,
215+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipTypeAddRequest " )
216+ ),
217+ responses: [
218+ new OA \Response (
219+ response: Response::HTTP_CREATED ,
220+ description: "Created " ,
221+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
222+ ),
223+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
224+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
225+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
226+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: "Validation Error " ),
227+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
228+ ]
229+ )]
107230 public function add ()
108231 {
109232 return $ this ->processRequest (function (){
@@ -124,10 +247,31 @@ public function add()
124247 });
125248 }
126249
127- /**
128- * @param $id
129- * @return \Illuminate\Http\JsonResponse|mixed
130- */
250+ #[OA \Get(
251+ path: "/api/v1/sponsorship-types/{id} " ,
252+ summary: "Get a sponsorship type by id " ,
253+ operationId: 'getSponsorshipType ' ,
254+ security: [['summit_sponsorship_oauth2 ' => [
255+ SummitScopes::ReadSummitData,
256+ SummitScopes::ReadAllSummitData,
257+ ]]],
258+ tags: ["SponsorshipTypes " ],
259+ parameters: [
260+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
261+ ],
262+ responses: [
263+ new OA \Response (
264+ response: Response::HTTP_OK ,
265+ description: "OK " ,
266+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
267+ ),
268+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
269+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
270+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
271+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
272+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
273+ ]
274+ )]
131275 public function get ($ id )
132276 {
133277 return $ this ->processRequest (function () use ($ id ){
@@ -144,10 +288,42 @@ public function get($id)
144288 });
145289 }
146290
147- /**
148- * @param $id
149- * @return \Illuminate\Http\JsonResponse|mixed
150- */
291+ #[OA \Put(
292+ path: "/api/v1/sponsorship-types/{id} " ,
293+ summary: "Update a sponsorship type " ,
294+ operationId: 'updateSponsorshipType ' ,
295+ x: [
296+ 'required-groups ' => [
297+ IGroup::SummitAdministrators,
298+ IGroup::SuperAdmins,
299+ IGroup::Administrators
300+ ]
301+ ],
302+ security: [['summit_sponsorship_oauth2 ' => [
303+ SummitScopes::WriteSummitData,
304+ ]]],
305+ tags: ["SponsorshipTypes " ],
306+ parameters: [
307+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
308+ ],
309+ requestBody: new OA \RequestBody (
310+ required: true ,
311+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipTypeUpdateRequest " )
312+ ),
313+ responses: [
314+ new OA \Response (
315+ response: Response::HTTP_OK ,
316+ description: "OK " ,
317+ content: new OA \JsonContent (ref: "#/components/schemas/SponsorshipType " )
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+ )]
151327 public function update ($ id )
152328 {
153329 return $ this ->processRequest (function () use ($ id ){
@@ -168,10 +344,33 @@ public function update($id)
168344 });
169345 }
170346
171- /**
172- * @param $id
173- * @return \Illuminate\Http\JsonResponse|mixed
174- */
347+ #[OA \Delete(
348+ path: "/api/v1/sponsorship-types/{id} " ,
349+ summary: "Delete a sponsorship type " ,
350+ operationId: 'deleteSponsorshipType ' ,
351+ x: [
352+ 'required-groups ' => [
353+ IGroup::SummitAdministrators,
354+ IGroup::SuperAdmins,
355+ IGroup::Administrators
356+ ]
357+ ],
358+ security: [['summit_sponsorship_oauth2 ' => [
359+ SummitScopes::WriteSummitData,
360+ ]]],
361+ tags: ["SponsorshipTypes " ],
362+ parameters: [
363+ new OA \Parameter (name: "id " , description: "Sponsorship Type ID " , in: "path " , required: true , schema: new OA \Schema (type: "integer " )),
364+ ],
365+ responses: [
366+ new OA \Response (response: Response::HTTP_NO_CONTENT , description: "No Content " ),
367+ new OA \Response (response: Response::HTTP_BAD_REQUEST , description: "Bad Request " ),
368+ new OA \Response (response: Response::HTTP_UNAUTHORIZED , description: "Unauthorized " ),
369+ new OA \Response (response: Response::HTTP_FORBIDDEN , description: "Forbidden " ),
370+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
371+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
372+ ]
373+ )]
175374 public function delete ($ id )
176375 {
177376 return $ this ->processRequest (function () use ($ id ){
0 commit comments