with('user')->where('workspace_task_detail_id', $workspaceTaskDetailId) ->orderBy("id", "desc") ->paginate(10); $unreadMsg = WorkspaceUnreadMessage::where([ ['workspace_task_detail_id', $workspaceTaskDetailId], ['user_id', \Auth::user()->id]])->first(); if (!$unreadMsg) { WorkspaceUnreadMessage::create([ 'workspace_task_detail_id' => $workspaceTaskDetailId, 'user_id' => \Auth::user()->id, 'count' => 0 ]); } else { $unreadMsg->update([ 'count' => 0 ]); } return response()->json([ 'messages' => \array_reverse($messages->items()), "more" => $request->page < $messages->lastPage(), ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $wm = WorkspaceMessage::create([ 'workspace_task_detail_id' => $request->workspace_task_detail_id, 'user_id' => \Auth::user()->id, 'message' => $request->message, 'created_at' => date("Y-m-d H:i:s") ]); $rootOwner = $wm->workspaceTaskDetail->workspaceTask->workspace->user; if ($rootOwner->id !== \Auth::user()->id) { $this->addUnreadCount($wm->workspace_task_detail_id, $rootOwner->id); } $owners = $wm->workspaceTaskDetail->owners; foreach ($owners as $row) { if ($row->user_id !== \Auth::user()->id) { $this->addUnreadCount($wm->workspace_task_detail_id, $row->user_id); } } $unreadMsg = WorkspaceUnreadMessage::where([ ['workspace_task_detail_id', $wm->workspace_task_detail_id], ['user_id', \Auth::user()->id] ])->first(); if (!$unreadMsg) { WorkspaceUnreadMessage::create([ 'workspace_task_detail_id' => $request->workspace_task_detail_id, 'user_id' => \Auth::user()->id, 'count' => 1 ]); } else { $unreadMsg->update([ 'count' => $unreadMsg->count++ ]); } $wm = WorkspaceMessage::with("user")->findOrFail($wm->id); return response()->json($wm); } private function addUnreadCount($taskDetailId, $userId) { $unreadMsg = WorkspaceUnreadMessage::where([ ['workspace_task_detail_id', $taskDetailId], ['user_id', $userId] ])->first(); $count = $unreadMsg->count ?? 0; $count += 1; if (!$unreadMsg) { WorkspaceUnreadMessage::create([ 'workspace_task_detail_id' => $taskDetailId, 'user_id' => $userId, 'count' => $count ]); } else { $unreadMsg->update([ 'count' => $count ]); } } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }