user()->id; return $data; } ); return $this->_create($request); } /** * @api {post} /task-comment/edit Edit Task Comment * @apiDescription Edit an existing task comment * * @apiVersion 4.0.0 * @apiName EditTaskComment * @apiGroup TaskComments * * * @apiParam {Integer} id ID of the comment to edit * @apiParam {String} comment The updated content of the comment * * @apiParamExample {json} Request Example: * { * "id": 1, * "comment": "This is the updated comment" * } * * @apiSuccess {Integer} id ID of the edited comment * @apiSuccess {Integer} task_id ID of the task * @apiSuccess {Integer} user_id ID of the user who edited the comment * @apiSuccess {String} comment The updated content of the comment * @apiSuccess {String} created_at Creation timestamp * @apiSuccess {String} updated_at Last update timestamp * @apiSuccess {String} deleted_at Deletion timestamp (if applicable, otherwise null) * * @apiSuccessExample {json} Response Example: * HTTP/1.1 200 OK * { * "id": 1, * "task_id": 1, * "user_id": 1, * "content": "2344", * "created_at": "2024-05-03T10:45:36.000000Z", * "updated_at": "2024-05-03T10:45:36.000000Z", * "deleted_at": null * } * * @apiUse 400Error * @apiUse UnauthorizedError */ public function edit(UpdateTaskCommentRequest $request): JsonResponse { return $this->_edit($request); } /** * @api {any} /task-comment/list List Task Comments * @apiDescription Get list of Task Comments * * @apiVersion 4.0.0 * @apiName GetTaskCommentList * @apiGroup Task Comments * * @apiPermission task_comment_list * @apiPermission task_comment_full_access * * @apiParam {Integer} [task_id] Optional task ID to filter comments * * @apiParamExample {json} Request Example: * { * "task_id": 1 * } * * @apiSuccess {Integer} id ID of the comment * @apiSuccess {Integer} task_id ID of the task * @apiSuccess {Integer} user_id ID of the user who created the comment * @apiSuccess {String} content Content of the comment * @apiSuccess {String} created_at Creation timestamp * @apiSuccess {String} updated_at Last update timestamp * @apiSuccess {String} deleted_at Deletion timestamp (if applicable, otherwise null) * @apiSuccess {Object} user User who created the comment * * @apiSuccessExample {json} Response Example: * HTTP/1.1 200 OK * { * "id": 1, * "task_id": 1, * "user_id": 1, * "content": "2344", * "created_at": "2024-05-03T10:45:36.000000Z", * "updated_at": "2024-05-03T10:45:36.000000Z", * "deleted_at": null, * "user": { * "id": 1, * "full_name": "Admin", * "email": "admin@cattr.app", * "url": "", * "company_id": 1, * "avatar": "", * "screenshots_active": 1, * "manual_time": 0, * "computer_time_popup": 300, * "blur_screenshots": false, * "web_and_app_monitoring": true, * "screenshots_interval": 5, * "active": 1, * "deleted_at": null, * "created_at": "2023-10-26T10:26:17.000000Z", * "updated_at": "2024-02-15T19:06:42.000000Z", * "timezone": null, * "important": 0, * "change_password": 0, * "role_id": 0, * "user_language": "en", * "type": "employee", * "invitation_sent": false, * "nonce": 0, * "client_installed": 0, * "permanent_screenshots": 0, * "last_activity": "2023-10-26 10:26:17", * "online": false, * "can_view_team_tab": true, * "can_create_task": true * } * } * * @apiUse 400Error * @apiUse UnauthorizedError */ public function index(ListTaskCommentRequest $request): JsonResponse { Filter::listen( Filter::getQueryFilterName(), static function ($query) use ($request) { if (!$request->user()->can('edit', TaskComment::class)) { $query = $query->whereHas( 'task', static fn (Builder $taskQuery) => $taskQuery->where( 'user_id', '=', $request->user()->id ) ); } return $query->with('user'); } ); return $this->_index($request); } /** * @apiDeprecated since 1.0.0 * @throws Throwable * @api {post} /task-comment/show Show * @apiDescription Show Task Comment * * @apiVersion 1.0.0 * @apiName ShowTaskComment * @apiGroup Task Comment * * @apiPermission task_comment_show * @apiPermission task_comment_full_access */ public function show(ShowTaskCommentRequestStatus $request): JsonResponse { return $this->_show($request); } /** * @apiDeprecated since 4.0.0 * @api {post} /task-comment/remove Destroy Task Comment * @apiDescription Destroy a Task Comment * * @apiVersion 4.0.0 * @apiName DestroyTaskComment * @apiGroup Task Comment * * @apiPermission task_comment_remove * @apiPermission task_comment_full_access * * @apiParam {Integer} id ID of the task comment to destroy * * @apiParamExample {json} Request Example: * { * "id": 1 * } * * @apiSuccess {Integer} status Response status code * @apiSuccess {Boolean} success Response success status * @apiSuccess {String} message Success message * * @apiUse 400Error * @apiUse UnauthorizedError */ public function destroy(DestroyTaskCommentRequest $request): JsonResponse { $user = $request->user(); Filter::listen( Filter::getQueryFilterName(), static fn($query) => $user->hasRole([Role::ADMIN, Role::MANAGER]) ? $query : $query->where(['user_id' => $user->id]) ->whereHas('task', static fn($taskQuery) => $taskQuery->where(['user_id' => $user->id])) ); return $this->_destroy($request); } }