From 1402cd7a8ffbd03bb3c8915f3196f46b5d6a309b Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Tue, 4 Apr 2023 09:40:58 +0200 Subject: [PATCH] search endpoint --- be/routes/api.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/be/routes/api.php b/be/routes/api.php index fc49363..9613c7b 100644 --- a/be/routes/api.php +++ b/be/routes/api.php @@ -103,6 +103,29 @@ Route::middleware(['auth:sanctum', 'abilities:full-access'])->group(function () Route::delete('/v1/blockers/{id}', BlockerController::class . '@delete'); Route::put('/v1/users/{id}', UserController::class . '@update'); + + Route::post('/v1/search', function (Request $request) { + $search = $request->all()['data']['search']; + + $projectIDs = Project::where('name', 'like', '%' . $search . '%')->orWhere('code', 'like', '%' . $search . '%')->get()->pluck('id'); + + $userIDs = User::where('firstname', 'like', '%' . $search . '%')->orWhere('lastname', 'like', '%' . $search . '%')->get()->pluck('id'); + + + $teams = Team::whereHas('users', function($q) use($userIDs) { + $q->whereIn('user_id', $userIDs); + })->get(); + + $mastertasks = MasterTask::with('subtasks')->where('title', 'like', '%' . $search . '%')->orWhereIn('project_id', $projectIDs)->orWhereIn('team_id', $teams->pluck('id'))->get(); + + $subtasks = $mastertasks->pluck('subtasks')->flatten(); + + return [ + 'teams' => new TeamCollection($teams), + 'mastertasks' => new MasterTaskCollection($mastertasks), + 'subtasks' => new SubTaskCollection($subtasks), + ]; + }); }); Route::middleware(['auth:sanctum', 'abilities:password-reset'])->group(function () { @@ -132,3 +155,5 @@ Route::post('/v1/tokens/create', function (Request $request) { + +