From 5e0907195544c004751a57dd1adc9ae7f94186dc Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 7 Jan 2020 15:52:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E7=BC=96=E8=BE=91=E6=97=B6?= =?UTF-8?q?=E6=92=A4=E9=94=80=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/examination_banks_controller.rb | 11 ++++++++++- app/controllers/item_banks_controller.rb | 3 ++- config/routes.rb | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/examination_banks_controller.rb b/app/controllers/examination_banks_controller.rb index ef545e06e..9ffbd6630 100644 --- a/app/controllers/examination_banks_controller.rb +++ b/app/controllers/examination_banks_controller.rb @@ -2,7 +2,7 @@ class ExaminationBanksController < ApplicationController include PaginateHelper before_action :require_login before_action :find_exam, except: [:index, :create] - before_action :edit_auth, only: [:update, :destroy, :set_public] + before_action :edit_auth, only: [:update, :destroy, :set_public, :revoke_item] def index exams = ExaminationBankQuery.call(params) @@ -62,6 +62,15 @@ class ExaminationBanksController < ApplicationController render_ok end + def revoke_item + item = @exam.examination_items.find_by!(item_bank_id: params[:item_id]) + ActiveRecord::Base.transaction do + @exam.examination_items.where(item_type: item.item_type).where("position > #{item.position}").update_all("position = position -1") + item.destroy! + end + render_ok + end + private def form_params diff --git a/app/controllers/item_banks_controller.rb b/app/controllers/item_banks_controller.rb index 8b77e3e9a..24d9c44a9 100644 --- a/app/controllers/item_banks_controller.rb +++ b/app/controllers/item_banks_controller.rb @@ -8,7 +8,8 @@ class ItemBanksController < ApplicationController items = ItemBankQuery.call(params) @items_count = items.size @items = paginate items.includes(:item_analysis, :user, :container) - @item_basket_ids = current_user.item_baskets.pluck(:item_bank_id) + exam = ExaminationBank.find_by(id: params[:exam_id]) if params[:exam_id].present? + @item_basket_ids = exam ? exam.examination_items.pluck(:item_bank_id) : current_user.item_baskets.pluck(:item_bank_id) end def create diff --git a/config/routes.rb b/config/routes.rb index a65a7f4c1..065d12099 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -80,6 +80,7 @@ Rails.application.routes.draw do resources :examination_banks do member do post :set_public + delete :revoke_item end end