group(function () { Route::get('/user', function (Request $request) { return $request->user(); }); Route::get('/v1/teams', function () { return new TeamCollection(Team::all()); }); Route::get('/v1/teams/{id}', function ($id) { return new TeamResource(Team::find($id)); }); Route::post('/v1/teams', TeamController::class . '@store'); Route::put('/v1/teams/{id}', TeamController::class . '@update'); Route::delete('/v1/teams/{id}', TeamController::class . '@delete'); Route::get('/v1/employees', function () { return new UserCollection(User::all()); }); Route::get('/v1/employees/{id}', function ($id) { return new UserResource(User::find($id)); }); Route::get('/v1/projects', function () { return new ProjectCollection(Project::all()); }); Route::get('/v1/mastertasks', function () { return new MasterTaskCollection( MasterTask::all()); }); Route::get('/v1/mastertasks/{id}', function ($id) { return new MasterTaskResource( MasterTask::find($id)); }); Route::get('/v1/mastertasks',MasterTaskController::class . '@index'); Route::post('/v1/mastertasks', MasterTaskController::class . '@store'); Route::put('/v1/mastertasks/{id}', MasterTaskController::class . '@update'); Route::delete('/v1/mastertasks/{id}', MasterTaskController::class . '@delete'); Route::get('/v1/mastertasks/{id}/subtasks', function ($id) { return new SubTaskCollection( SubTask::whereHas('mastertask', function ($query) use ($id) { $query->where('id', $id); })->get()); }); Route::post('/v1/mastertasks/{id}/subtasks', SubTaskController::class . '@store'); Route::put('/v1/subtasks/{id}', SubTaskController::class . '@update'); Route::get('/v1/subtasks/{id}', function ($id) { return new SubTaskResource( SubTask::find($id)); }); Route::post('/v1/subtasks/{id}/timesheet', SubTaskController::class . '@submitTimesheet'); Route::get('/v1/subtasks',SubTaskController::class . '@index'); Route::delete('/v1/subtasks/{id}', SubTaskController::class . '@delete'); // zobrazovanie blockerov je na urovni /subtasks ednpointu Route::get('/v1/blockers/{id}', function ($id) { return new BlockerResource(Blocker::find($id)); }); Route::post('/v1/blockers', BlockerController::class . '@store'); Route::put('/v1/blockers/{id}', BlockerController::class . '@update'); 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 () { Route::post('/v1/users/reset', UserController::class . '@resetPassword'); }); Route::post('/v1/users/forgot', UserController::class . '@sendPasswordResetLink'); Route::post('/v1/tokens/create', function (Request $request) { $user = User::where('email', $request->all()['data']['email'])->first(); if (!$user) return response()->json(['message' => 'E-mail address doesnt exist.'], 401); if (! Hash::check($request->all()['data']['password'], $user->password)) return response()->json(['message' => 'Incorrect password.'], 401); $token = $user->createToken($user->email . '-' . now(), ['full-access']); return ['token' => $token->plainTextToken, 'user' => new UserResource($user)]; });