class UniversesController < ContentController

  # TODO: pull list of content types out from some centralized list somewhere
  (Rails.application.config.content_types[:all_non_universe] + [Timeline]).each do |content_type|
    content_type_name = content_type.name.downcase.pluralize.to_sym
    define_method content_type_name do
      @content_type = content_type_name.to_s.singularize.capitalize.constantize

      @universe = Universe.find_by(id: params[:id])
      return redirect_to(root_path, notice: "That universe doesn't exist!", status: :not_found) unless @universe.present?
      @content_list = @universe.send(content_type_name)

      # todo just use current_user.can_view?(@universe) and/or individual filtering
      unless user_signed_in? && (current_user == @universe.user || Contributor.exists?(user_id: current_user.id, universe_id: @universe.id))
        @content_list = @content_list.is_public
      end

      @content_list = @content_list.order(:name)

      render :content_list
    end
  end

  private

  def content_param_list
    [
      :user_id,
      :name, :description, :genre,
      :laws_of_physics, :magic_system, :technology,
      :history,
      :privacy,
      :notes, :private_notes,
      custom_attribute_values: [:name, :value],
    ]
  end
end
