|
14 | 14 |
|
15 | 15 | use App\Http\Controllers\GetAllTrait; |
16 | 16 | use App\libs\Auth\Repositories\IUserRegistrationRequestRepository; |
| 17 | +use App\libs\OAuth2\IUserScopes; |
17 | 18 | use App\ModelSerializers\SerializerRegistry; |
18 | 19 | use App\Services\Auth\IUserService; |
19 | 20 | use Illuminate\Support\Facades\Log; |
|
22 | 23 | use models\exceptions\EntityNotFoundException; |
23 | 24 | use models\exceptions\ValidationException; |
24 | 25 | use OAuth2\IResourceServerContext; |
| 26 | +use OpenApi\Attributes as OA; |
| 27 | +use Symfony\Component\HttpFoundation\Response as HttpResponse; |
25 | 28 | use Utils\Services\ILogService; |
26 | 29 | /** |
27 | 30 | * Class OAuth2UserRegistrationRequestApiController |
28 | 31 | * @package App\Http\Controllers\Api\OAuth2 |
29 | 32 | */ |
| 33 | +#[OA\Get( |
| 34 | + path: '/api/v1/user-registration-requests', |
| 35 | + operationId: 'getUserRegistrationRequests', |
| 36 | + summary: 'Get all user registration requests', |
| 37 | + security: [['OAuth2UserRegistrationRequestApi' => [IUserScopes::Registration]]], |
| 38 | + tags: ['User Registration Requests'], |
| 39 | + parameters: [ |
| 40 | + new OA\Parameter( |
| 41 | + name: 'page', |
| 42 | + description: 'Page number', |
| 43 | + in: 'query', |
| 44 | + required: false, |
| 45 | + schema: new OA\Schema(type: 'integer') |
| 46 | + ), |
| 47 | + new OA\Parameter( |
| 48 | + name: 'per_page', |
| 49 | + description: 'Items per page', |
| 50 | + in: 'query', |
| 51 | + required: false, |
| 52 | + schema: new OA\Schema(type: 'integer') |
| 53 | + ), |
| 54 | + new OA\Parameter( |
| 55 | + name: 'filter', |
| 56 | + description: 'Filter criteria (first_name, last_name, email, is_redeemed) ("=@" starts with, "==" exact match); is_redeemed supports "==" only.', |
| 57 | + in: 'query', |
| 58 | + required: false, |
| 59 | + schema: new OA\Schema(type: 'string') |
| 60 | + ), |
| 61 | + new OA\Parameter( |
| 62 | + name: 'order', |
| 63 | + description: 'Order criteria. Accepted fields: id. Use +id for ascending, -id for descending.', |
| 64 | + in: 'query', |
| 65 | + required: false, |
| 66 | + schema: new OA\Schema(type: 'string') |
| 67 | + ), |
| 68 | + ], |
| 69 | + responses: [ |
| 70 | + new OA\Response( |
| 71 | + response: HttpResponse::HTTP_OK, |
| 72 | + description: 'OK', |
| 73 | + content: new OA\JsonContent(ref: '#/components/schemas/PaginatedUserRegistrationRequestResponse') |
| 74 | + ), |
| 75 | + new OA\Response( |
| 76 | + response: HttpResponse::HTTP_PRECONDITION_FAILED, |
| 77 | + description: 'Precondition Failed' |
| 78 | + ), |
| 79 | + new OA\Response( |
| 80 | + response: HttpResponse::HTTP_INTERNAL_SERVER_ERROR, |
| 81 | + description: 'Server Error' |
| 82 | + ), |
| 83 | + ] |
| 84 | +)] |
30 | 85 | final class OAuth2UserRegistrationRequestApiController extends OAuth2ProtectedController |
31 | 86 | { |
32 | 87 |
|
@@ -97,6 +152,41 @@ protected function getFilterValidatorRules(): array |
97 | 152 | /** |
98 | 153 | * @return \Illuminate\Http\JsonResponse|mixed |
99 | 154 | */ |
| 155 | + #[OA\Post( |
| 156 | + path: '/api/v1/user-registration-requests', |
| 157 | + operationId: 'createUserRegistrationRequest', |
| 158 | + summary: 'Create a user registration request', |
| 159 | + security: [['OAuth2UserRegistrationRequestApi' => [IUserScopes::Registration]]], |
| 160 | + tags: ['User Registration Requests'], |
| 161 | + requestBody: new OA\RequestBody( |
| 162 | + description: 'User registration request data', |
| 163 | + required: true, |
| 164 | + content: new OA\JsonContent(ref: '#/components/schemas/CreateUserRegistrationRequestRequest') |
| 165 | + ), |
| 166 | + responses: [ |
| 167 | + new OA\Response( |
| 168 | + response: HttpResponse::HTTP_CREATED, |
| 169 | + description: 'Created', |
| 170 | + content: new OA\JsonContent(ref: '#/components/schemas/UserRegistrationRequest') |
| 171 | + ), |
| 172 | + new OA\Response( |
| 173 | + response: HttpResponse::HTTP_BAD_REQUEST, |
| 174 | + description: 'Bad Request' |
| 175 | + ), |
| 176 | + new OA\Response( |
| 177 | + response: HttpResponse::HTTP_PRECONDITION_FAILED, |
| 178 | + description: 'Precondition Failed' |
| 179 | + ), |
| 180 | + new OA\Response( |
| 181 | + response: HttpResponse::HTTP_NOT_FOUND, |
| 182 | + description: 'Not Found' |
| 183 | + ), |
| 184 | + new OA\Response( |
| 185 | + response: HttpResponse::HTTP_INTERNAL_SERVER_ERROR, |
| 186 | + description: 'Server Error' |
| 187 | + ), |
| 188 | + ] |
| 189 | + )] |
100 | 190 | public function register(){ |
101 | 191 | try { |
102 | 192 |
|
@@ -148,6 +238,50 @@ public function register(){ |
148 | 238 | * @param $id |
149 | 239 | * @return \Illuminate\Http\JsonResponse|mixed |
150 | 240 | */ |
| 241 | + #[OA\Put( |
| 242 | + path: '/api/v1/user-registration-requests/{id}', |
| 243 | + operationId: 'updateUserRegistrationRequest', |
| 244 | + summary: 'Update a user registration request', |
| 245 | + security: [['OAuth2UserRegistrationRequestApi' => [IUserScopes::Registration]]], |
| 246 | + tags: ['User Registration Requests'], |
| 247 | + parameters: [ |
| 248 | + new OA\Parameter( |
| 249 | + name: 'id', |
| 250 | + description: 'Registration request ID', |
| 251 | + in: 'path', |
| 252 | + required: true, |
| 253 | + schema: new OA\Schema(type: 'integer') |
| 254 | + ), |
| 255 | + ], |
| 256 | + requestBody: new OA\RequestBody( |
| 257 | + description: 'User registration request data to update', |
| 258 | + required: true, |
| 259 | + content: new OA\JsonContent(ref: '#/components/schemas/UpdateUserRegistrationRequestRequest') |
| 260 | + ), |
| 261 | + responses: [ |
| 262 | + new OA\Response( |
| 263 | + response: HttpResponse::HTTP_CREATED, |
| 264 | + description: 'OK', |
| 265 | + content: new OA\JsonContent(ref: '#/components/schemas/UserRegistrationRequest') |
| 266 | + ), |
| 267 | + new OA\Response( |
| 268 | + response: HttpResponse::HTTP_BAD_REQUEST, |
| 269 | + description: 'Bad Request' |
| 270 | + ), |
| 271 | + new OA\Response( |
| 272 | + response: HttpResponse::HTTP_PRECONDITION_FAILED, |
| 273 | + description: 'Precondition Failed' |
| 274 | + ), |
| 275 | + new OA\Response( |
| 276 | + response: HttpResponse::HTTP_NOT_FOUND, |
| 277 | + description: 'Not Found' |
| 278 | + ), |
| 279 | + new OA\Response( |
| 280 | + response: HttpResponse::HTTP_INTERNAL_SERVER_ERROR, |
| 281 | + description: 'Server Error' |
| 282 | + ), |
| 283 | + ] |
| 284 | + )] |
151 | 285 | public function update($id){ |
152 | 286 | try { |
153 | 287 |
|
|
0 commit comments