diff --git a/be/app/Http/Controllers/TeamController.php b/be/app/Http/Controllers/TeamController.php index 471fe69..666a38b 100644 --- a/be/app/Http/Controllers/TeamController.php +++ b/be/app/Http/Controllers/TeamController.php @@ -40,4 +40,49 @@ class TeamController extends Controller 'team' => $team ], 201); } + + public function delete(Request $request) + { + $validator = Validator::make($request->all(), [ + 'data.id' => 'required', + ]); + + if($validator->fails()){ + return response()->json($validator->errors(), 400); + } + + $team = Team::find($request->all()['data']['id']); + $team->users()->detach(); + $team->delete(); + + return response()->json([ + 'message' => 'Team deleted successfully', + 'team' => $team + ], 201); + } + + public function update(Request $request) + { + $validator = Validator::make($request->all(), [ + 'data.id' => 'required', + 'data.name' => 'required', + 'data.employees' => 'required', + ]); + + if($validator->fails()){ + return response()->json($validator->errors(), 400); + } + + $userIdsArray = array_column($request->all()['data']['employees'], 'id'); + + $team = Team::find($request->all()['data']['id']); + $team->users()->detach(); + $team->users()->attach( $userIdsArray ); + $team->update($request->all()['data']); + + return response()->json([ + 'message' => 'Team updated successfully', + 'team' => $team + ], 201); + } } diff --git a/be/routes/api.php b/be/routes/api.php index 8859024..653e70e 100644 --- a/be/routes/api.php +++ b/be/routes/api.php @@ -32,8 +32,9 @@ use Illuminate\Support\Facades\Route; Route::get('/v1/teams', function () { return new TeamCollection(Team::all()); }); - Route::post('/v1/teams', TeamController::class . '@store'); +Route::delete('/v1/teams', TeamController::class . '@delete'); +Route::put('/v1/teams', TeamController::class . '@update'); Route::get('/v1/teams/{id}', function ($id) { return new TeamResource(Team::find($id));