From 2e5dcda640418fa2dddb3fc947635f3191a6acdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Veronika=20Feh=C3=A9rv=C3=ADziov=C3=A1?= <128744051+VeronikaFeherviziova@users.noreply.github.com> Date: Fri, 31 Oct 2025 21:46:07 +0100 Subject: [PATCH] feat: add API route for getting a single internship --- .../Http/Controllers/InternshipController.php | 27 +++++++++++++++++++ backend/routes/api.php | 1 + 2 files changed, 28 insertions(+) diff --git a/backend/app/Http/Controllers/InternshipController.php b/backend/app/Http/Controllers/InternshipController.php index b7ebf14..80d41b3 100644 --- a/backend/app/Http/Controllers/InternshipController.php +++ b/backend/app/Http/Controllers/InternshipController.php @@ -65,6 +65,33 @@ class InternshipController extends Controller return response()->json($internships); } + public function get(int $id) { + $user = auth()->user(); + + $internship = Internship::find($id); + + if(!$internship) { + return response()->json([ + 'message' => 'No such internship exists.' + ], 400); + } + + if ($user->role !== 'ADMIN' && $internship->user_id !== $user->id) { + abort(403, 'Unauthorized'); + } + + $internship->company = Company::find($internship->company_id)->makeHidden(['created_at', 'updated_at']); + unset($internship->company_id); + + $internship->contact = User::find($internship->company->contact)->makeHidden(['created_at', 'updated_at', 'email_verified_at']); + unset($internship->company->contact); + + $internship->status = InternshipStatus::whereColumn('internship_id', '=', $internship->id)->get()->first()->makeHidden(['created_at', 'updated_at', 'id']); + $internship->status->modified_by = User::find($internship->status->modified_by)->makeHidden(['created_at', 'updated_at', 'email_verified_at']); + + return response()->json($internship); + } + /** * Display a listing of the resource. */ diff --git a/backend/routes/api.php b/backend/routes/api.php index 48ec91f..a1c41d3 100644 --- a/backend/routes/api.php +++ b/backend/routes/api.php @@ -29,6 +29,7 @@ Route::prefix('/internships')->group(function () { Route::get("/my", [InternshipController::class, 'all_student'])->name("api.internships.student"); Route::middleware("auth:sanctum")->group(function () { + Route::get("/{id}", [InternshipController::class, 'get'])->name("api.internships.get"); Route::put("/new", [InternshipController::class, 'store'])->name("api.internships.create"); }); });