#论坛的板块设置
class Admins::ForumSectionsController < Admins::BaseController
  before_action :set_forum, except: [:index, :new,:create]

  def index
    @menu_type = 8
    @sub_type = 5

    forum_sections = ForumSection.roots.includes(:forum_moderators).order("position desc")
    @max_position = forum_sections&.maximum(:position).to_i
    @min_position = forum_sections&.minimum(:position).to_i
    @forum_sections_count = forum_sections.size
    # page = (params[:page] || 1).to_i
    # per_page = 15
    # @forum_sections_pages = Paginator.new @forum_sections_count, per_page, page
    # @forum_sections = forum_sections.limit(@forum_sections_pages.per_page).offset(@forum_sections_pages.offset).to_a
    @forum_sections = paginate forum_sections
    respond_to do |format|
      format.html
      format.js
    end
  end

  def new
    @parent_id = params[:parent_id]
    @forum_section = ForumSection.new
    respond_to do |format|
      format.js
    end
  end

  def create
    attachment_id = params[:attachments]&.first
    positions = ForumSection.pluck(:position).select { |a| a.is_a? Integer }
    positions = positions.max.to_i
    if params[:forum_section][:parent_id].present?
      @parent_forum = ForumSection.find_by_id(params[:forum_section][:parent_id])
    end
    if params[:forum_section][:title].blank?
      forum_status = 0
      forum_msg = "标题不能为空"
    elsif params[:forum_section][:title].strip.length > 20
      forum_status = 0
      forum_msg = "不能超过最大限制：20个字符"
    elsif ForumSection.exists?(title: params[:forum_section][:title].strip)
      forum_status = 0
      forum_msg = "不能重名"
    else
      forum_section_params = {
        user_id: current_user.id,
        title: params[:forum_section][:title].strip,
        position: positions + 1,
        parent_id: params[:forum_section][:parent_id],
        is_recommend: false,
        description: params[:forum_section][:description].to_s.truncate(200)
      }
      @forum_section = ForumSection.new(forum_section_params)
      if @forum_section.save
        if attachment_id.present?
          attachment = Attachment.find(attachment_id)
          attachment.container = @forum_section
          attachment.save
          @forum_section.attachment_id = attachment_id
          @forum_section.save
        end
        forum_status = 1
        forum_msg = "创建成功"
      else
        forum_status = -1
        forum_msg = "创建失败,请重试"
      end
    end
    @forum_status = {status: forum_status, msg: forum_msg}
  end

  def edit
    @children_forum = params[:children_forum]
    @attachment = @forum_section.image_attachment
  end

  def update
    attachment_id = params[:attachments]&.first
    if params[:forum_section][:title].blank?
      forum_status = 0
      forum_msg = "名称不能为空"
    elsif params[:forum_section][:title].strip.length > 20
      forum_status = 0
      forum_msg = "不能超过最大限制：20个字符"
    elsif params[:forum_section][:title].strip != @forum_section.title && ForumSection.exists?(title: params[:forum_section][:title].strip)
      forum_status = 0
      forum_msg = "不能重名"
    else
      
      if @forum_section.update_attributes(title: params[:forum_section][:title].strip, description: params[:forum_section][:description].to_s.truncate(200))

        unless attachment_id.blank? ||  @forum_section.attachment_id.to_i == attachment_id.to_i
          Attachment.where(id: @forum_section.attachment_id.to_i).destroy_all if @forum_section.attachment_id.present?
          attachment = Attachment.find(attachment_id)
          attachment.container = @forum_section
          attachment.save
          @forum_section.attachment_id = attachment_id
          @forum_section.save
        end
        forum_status = 1
        forum_msg = "更新成功"
      else
        forum_status = -1
        forum_msg = "更新失败,请重试"
      end
    end
    @edit_forum_status = {status: forum_status, msg: forum_msg}
  end

  def destroy
    if @forum_section.destroy
      delete_status = 1
      delete_msg = "删除成功"
    else
      delete_status = -1
      delete_msg = "删除失败,请稍后重试"
    end
    @delete_status = {status: delete_status, msg: delete_msg}
  end

  def order_forums
    @children_forums = @forum_section.get_children_section("asc")
  end

  def recommend_forums
    @forum_section.update_attribute(:is_recommend, params[:is_recommend])
  end

  def move
    cate_opt = params[:opr]
    cate_position = @forum_section.position.to_i
    move_status = up_and_down(cate_opt,@forum_section,cate_position,"forum_section")
    if move_status == 0
      @c_msg = "移动成功"
    else
      @c_msg = "移动失败"
    end
    redirect_to admins_forum_sections_path
  end

  private

  def set_forum
    @forum_section = ForumSection.find_by_id(params[:id])
  end



end
