comment = $comment; } /** * Get a comment by ID. * @param $id * @return Comment|\Illuminate\Database\Eloquent\Model */ public function getById($id) { return $this->comment->newQuery()->findOrFail($id); } /** * Create a new comment on an entity. * @param Entity $entity * @param array $data * @return Comment */ public function create (Entity $entity, $data = []) { $userId = user()->id; $comment = $this->comment->newInstance($data); $comment->created_by = $userId; $comment->updated_by = $userId; $comment->local_id = $this->getNextLocalId($entity); $entity->comments()->save($comment); return $comment; } /** * Update an existing comment. * @param Comment $comment * @param array $input * @return mixed */ public function update($comment, $input) { $comment->updated_by = user()->id; $comment->update($input); return $comment; } /** * Delete a comment from the system. * @param Comment $comment * @return mixed */ public function delete($comment) { return $comment->delete(); } /** * Get the next local ID relative to the linked entity. * @param Entity $entity * @return int */ protected function getNextLocalId(Entity $entity) { $comments = $entity->comments(false)->orderBy('local_id', 'desc')->first(); if ($comments === null) return 1; return $comments->local_id + 1; } }