_input = $input; $this->_id = $id; $this->_type = $type; } /** * @return bool */ public function authorize() { $user = \Auth::user(); return $user != null; } /** * @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(); return CommandResponse::succeed(Comment::mapPublic($comment)); } }