post->uuid === $request->post->thread->firstpost_uuid) { $this->updateThreadTask->run($request->post->thread, $this->prepareThreadData($request)); $request->post->thread->load('postings'); $postings = $request->post->thread->postings->except($request->post->uuid); if(!empty($postings)) { foreach($postings as $post) { $this->updatePostTask->run($post, ['title' => 'RE: ' . $request->post('title')]); } } } return $this->updatePostTask->run($request->post, $this->preparePostData($request)); } /** * @param Update $request * @return array */ private function preparePostData(Update $request): array { return [ 'updated_uuid' => $request->user()->uuid, 'thread_uuid' => $request->post('thread_uuid'), 'content' => $request->post('content'), 'title' => $request->post('title'), 'users' => $this->preparePivotData($request, 'users'), 'groups' => $this->preparePivotData($request, 'groups'), ]; } /** * @param Update $request * @return array */ private function prepareThreadData(Update $request): array { return [ 'prefix_uuid' => $request->post('prefix'), 'title' => $request->post('title'), 'slug' => Str::slug($request->post('title')) . '-' . $request->post->thread->id, 'users' => $this->preparePivotData($request, 'users'), 'groups' => $this->preparePivotData($request, 'groups'), ]; } }