class TaskBanksController < ApplicationController
  before_action :require_login
  before_action :find_bank, :bank_visit_auth
  before_action :bank_visit_auth
  before_action :bank_admin, only: [:update]

  def show
    @bank_attachments = @bank.attachments
  end

  def update
    ActiveRecord::Base.transaction do
      begin
        @bank.update_attributes(gtask_bank_params)
        Attachment.associate_container(params[:attachment_ids], @bank.id, @bank.class) if params[:attachment_ids]
        normal_status(0, "更新成功")
      rescue Exception => e
        uid_logger(e.message)
        tip_exception(e.message)
        raise ActiveRecord::Rollback
      end
    end
  end

  private

  def find_bank
    @bank = GtaskBank.find_by!(id: params[:id])
  end

  def bank_admin
    tip_exception(403, "无权限") unless @bank.user_id == current_user.id || current_user.admin?
  end

  def gtask_bank_params
    tip_exception("name参数不能为空") if params[:gtask_bank][:name].blank?
    tip_exception("description参数不能为空") if params[:gtask_bank][:description].blank?
    if @bank.task_type == 2
      tip_exception("base_on_project参数不能为空") if params[:gtask_bank][:base_on_project].nil?
      tip_exception("min_num参数不能为空") if params[:gtask_bank][:min_num].blank?
      tip_exception("max_num参数不能为空") if params[:gtask_bank][:max_num].blank?
      tip_exception("最小人数不能小于1") if params[:gtask_bank][:min_num].to_i < 1
      tip_exception("最大人数不能小于最小人数") if params[:gtask_bank][:max_num].to_i < params[:gtask_bank][:min_num].to_i
    end
    if @bank.task_type == 1
      params.require(:gtask_bank).permit(:name, :description)
    else
      params.require(:gtask_bank).permit(:name, :description, :min_num, :max_num, :base_on_project)
    end
  end
end