|
28 | 28 | use Seat\Api\Http\Resources\SquadResource; |
29 | 29 | use Seat\Api\Http\Validation\NewSquad; |
30 | 30 | use Seat\Web\Models\Squads\Squad; |
| 31 | +use Seat\Web\Models\User; |
31 | 32 |
|
32 | 33 | class SquadController extends ApiController |
33 | 34 | { |
@@ -173,4 +174,73 @@ public function destroy(int $squad_id): JsonResponse |
173 | 174 |
|
174 | 175 | return response()->json(); |
175 | 176 | } |
| 177 | + |
| 178 | + #[OA\Post( |
| 179 | + path: '/api/v2/squads/{squad_id}/add/{user_id}', |
| 180 | + description: 'Adds a user to a squad', |
| 181 | + summary: 'Adds a user to a squad. If the user is not eligible according to the squad\'s filters, the user cannot be added.', |
| 182 | + security: [ |
| 183 | + [ |
| 184 | + 'ApiKeyAuth' => [], |
| 185 | + ], |
| 186 | + ], |
| 187 | + tags: [ |
| 188 | + 'Squads', |
| 189 | + ], |
| 190 | + parameters: [ |
| 191 | + new OA\Parameter(name: 'squad_id', description: 'A SeAT Squad ID', in: 'path', required: true, schema: new OA\Schema(type: 'integer')), |
| 192 | + new OA\Parameter(name: 'user_id', description: 'A SeAT User ID', in: 'path', required: true, schema: new OA\Schema(type: 'integer')), |
| 193 | + ], |
| 194 | + responses: [ |
| 195 | + new OA\Response(response: 200, description: 'Successful operation'), |
| 196 | + new OA\Response(response: 400, description: 'Bad request'), |
| 197 | + new OA\Response(response: 401, description: 'Unauthorized'), |
| 198 | + new OA\Response(response: 409, description: 'Conflict'), |
| 199 | + ] |
| 200 | + )] |
| 201 | + public function addUser($squad_id, $user_id) |
| 202 | + { |
| 203 | + $squad = Squad::findOrFail($squad_id); |
| 204 | + $user = User::findOrFail($user_id); |
| 205 | + |
| 206 | + if(! $squad->isUserEligible($user)){ |
| 207 | + return response()->json('The squad filter doesn\'t allow this user in this squad.', 409); |
| 208 | + } |
| 209 | + |
| 210 | + $squad->members()->attach($user->id); |
| 211 | + |
| 212 | + return response()->json(); |
| 213 | + } |
| 214 | + |
| 215 | + #[OA\Post( |
| 216 | + path: '/api/v2/squads/{squad_id}/remove/{user_id}', |
| 217 | + description: 'Removes a user from a squad', |
| 218 | + summary: 'Removes a user from a squad.', |
| 219 | + security: [ |
| 220 | + [ |
| 221 | + 'ApiKeyAuth' => [], |
| 222 | + ], |
| 223 | + ], |
| 224 | + tags: [ |
| 225 | + 'Squads', |
| 226 | + ], |
| 227 | + parameters: [ |
| 228 | + new OA\Parameter(name: 'squad_id', description: 'A SeAT Squad ID', in: 'path', required: true, schema: new OA\Schema(type: 'integer')), |
| 229 | + new OA\Parameter(name: 'user_id', description: 'A SeAT User ID', in: 'path', required: true, schema: new OA\Schema(type: 'integer')), |
| 230 | + ], |
| 231 | + responses: [ |
| 232 | + new OA\Response(response: 200, description: 'Successful operation'), |
| 233 | + new OA\Response(response: 400, description: 'Bad request'), |
| 234 | + new OA\Response(response: 401, description: 'Unauthorized'), |
| 235 | + ] |
| 236 | + )] |
| 237 | + public function removeUser($squad_id, $user_id) |
| 238 | + { |
| 239 | + $squad = Squad::findOrFail($squad_id); |
| 240 | + $user = User::findOrFail($user_id); |
| 241 | + |
| 242 | + $squad->members()->detach($user->id); |
| 243 | + |
| 244 | + return response()->json(); |
| 245 | + } |
176 | 246 | } |
0 commit comments