From 1ae81221a532ced99e3742cc8413ea779aa5bf69 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 20:43:01 +0100 Subject: [PATCH] feat: implement API endpoint for getting all internships for admins --- .../Http/Controllers/InternshipController.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/backend/app/Http/Controllers/InternshipController.php b/backend/app/Http/Controllers/InternshipController.php index 4677cd1..b7ebf14 100644 --- a/backend/app/Http/Controllers/InternshipController.php +++ b/backend/app/Http/Controllers/InternshipController.php @@ -10,6 +10,39 @@ use Illuminate\Http\Request; class InternshipController extends Controller { + public function all() + { + $user = auth()->user(); + + if ($user->role !== 'ADMIN') { + abort(403, 'Unauthorized'); + } + + $internships = Internship::all()->makeHidden(['created_at', 'updated_at']); + + $internships->each(function ($internship) { + $internship->user = User::find($internship->user_id)->makeHidden(['created_at', 'updated_at', 'email_verified_at']); + unset($internship->user_id); + }); + + $internships->each(function ($internship) { + $internship->company = Company::find($internship->company_id)->makeHidden(['created_at', 'updated_at']); + unset($internship->company_id); + }); + + $internships->each(function ($internship) { + $internship->contact = User::find($internship->company->contact)->makeHidden(['created_at', 'updated_at', 'email_verified_at']); + unset($internship->company->contact); + }); + + $internships->each(function ($internship) { + $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($internships); + } + public function all_student() { $internships = Internship::where('user_id', auth()->id())->get()->makeHidden(['created_at', 'updated_at']);