public function getIndex($type, $id) { $column = ''; if ($type == 'track') { $column = 'track_id'; } else { if ($type == 'user') { $column = 'profile_id'; } else { if ($type == 'album') { $column = 'album_id'; } else { if ($type == 'playlist') { $column = 'playlist_id'; } else { App::abort(500); } } } } $query = Comment::where($column, '=', $id)->orderBy('created_at', 'desc')->with('user'); $comments = []; foreach ($query->get() as $comment) { $comments[] = Comment::mapPublic($comment); } return Response::json(['list' => $comments, 'count' => count($comments)]); }
/** * @throws \Exception * @return CommandResponse */ public function execute() { $rules = ['content' => 'required', 'track_id' => 'exists:tracks,id', 'albums_id' => 'exists:albums,id', 'playlist_id' => 'exists:playlists,id', 'profile_id' => 'exists:users,id']; $validator = Validator::make($this->_input, $rules); if ($validator->fails()) { return CommandResponse::fail($validator); } $comment = new Comment(); $comment->user_id = Auth::user()->id; $comment->content = $this->_input['content']; if ($this->_type == 'track') { $column = 'track_id'; } else { if ($this->_type == 'user') { $column = 'profile_id'; } else { if ($this->_type == 'album') { $column = 'album_id'; } else { if ($this->_type == 'playlist') { $column = 'playlist_id'; } else { App::abort(500); } } } } $comment->{$column} = $this->_id; $comment->save(); // Recount the track's comments, if this is a track comment if ($this->_type === 'track') { $entity = Track::find($this->_id); } elseif ($this->_type === 'album') { $entity = Album::find($this->_id); } elseif ($this->_type === 'playlist') { $entity = Playlist::find($this->_id); } elseif ($this->_type === 'user') { $entity = User::find($this->_id); } else { App::abort(400, 'This comment is being added to an invalid entity!'); } $entity->comment_count = Comment::where($column, $this->_id)->count(); $entity->save(); return CommandResponse::succeed(Comment::mapPublic($comment)); }