parent
db6062b0c4
commit
8ae1ac5e20
@ -0,0 +1,14 @@
|
|||||||
|
class ExaminationIntelligentSettingsController < ApplicationController
|
||||||
|
|
||||||
|
def optinal_items
|
||||||
|
items = OptionalItemQuery.call(params)
|
||||||
|
@single_question_count = items[:single_question_count]
|
||||||
|
@multiple_question_count = items[:multiple_question_count]
|
||||||
|
@judgement_question_count = items[:judgement_question_count]
|
||||||
|
@program_question_count = items[:program_question_count]
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,4 @@
|
|||||||
|
class ExaminationIntelligentSetting < ApplicationRecord
|
||||||
|
belongs_to :sub_discipline
|
||||||
|
has_many :examination_type_settings, dependent: :destroy
|
||||||
|
end
|
@ -0,0 +1,3 @@
|
|||||||
|
class ExaminationTypeSetting < ApplicationRecord
|
||||||
|
belongs_to :examination_intelligent_setting
|
||||||
|
end
|
@ -0,0 +1,32 @@
|
|||||||
|
class OptionalItemQuery < ApplicationQuery
|
||||||
|
attr_reader :params
|
||||||
|
|
||||||
|
def initialize(params)
|
||||||
|
@params = params
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
items = ItemBank.all
|
||||||
|
if params[:tag_discipline_id].present? && params[:sub_discipline_id].present?
|
||||||
|
items = items.joins(:tag_discipline_containers).where(tag_discipline_containers: {tag_discipline_id: params[:tag_discipline_id]})
|
||||||
|
hacks = Hack.joins(:tag_discipline_containers).where(tag_discipline_containers: {tag_discipline_id: params[:tag_discipline_id]})
|
||||||
|
elsif params[:sub_discipline_id].present?
|
||||||
|
items = items.where(sub_discipline_id: params[:sub_discipline_id])
|
||||||
|
hacks = Hack.where(sub_discipline_id: params[:sub_discipline_id])
|
||||||
|
end
|
||||||
|
|
||||||
|
# 来源
|
||||||
|
source = params[:source].present? ? params[:source].to_i : 1
|
||||||
|
public = source == 3 ? [0, 1] : source
|
||||||
|
items = items.where(public: public)
|
||||||
|
|
||||||
|
# 难度
|
||||||
|
difficulty = params[:difficulty] ? params[:difficulty].to_i : 1
|
||||||
|
items = items.where(difficulty: difficulty)
|
||||||
|
single_question_count = items.select{ |item| item.item_type == "SINGLE" }.size
|
||||||
|
multiple_question_count = items.select{ |item| item.item_type == "MULTIPLE" }.size
|
||||||
|
judgement_question_count = items.select{ |item| item.item_type == "JUDGMENT" }.size
|
||||||
|
program_question_count = hacks.present? ? hacks.pluck(:item_bank_id).reject(&:blank?).size : items.select{ |item| item.item_type == "PROGRAM" }.size
|
||||||
|
{single_question_count: single_question_count, multiple_question_count: multiple_question_count, judgement_question_count: judgement_question_count, program_question_count: program_question_count}
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,4 @@
|
|||||||
|
json.single_question_count @single_question_count
|
||||||
|
json.multiple_question_count @multiple_question_count
|
||||||
|
json.judgement_question_count @judgement_question_count
|
||||||
|
json.program_question_count @program_question_count
|
@ -0,0 +1,13 @@
|
|||||||
|
class CreateExaminationIntelligentSettings < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
create_table :examination_intelligent_settings do |t|
|
||||||
|
t.references :sub_discipline
|
||||||
|
t.integer :public, default: 1
|
||||||
|
t.integer :difficulty, default: 1
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :examination_intelligent_settings, :sub_discipline_id, name: "index_on_sub_discipline_id"
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,13 @@
|
|||||||
|
class CreateExaminationTypeSettings < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
create_table :examination_type_settings do |t|
|
||||||
|
t.references :examination_intelligent_setting, index: false
|
||||||
|
t.integer :item_type
|
||||||
|
t.integer :count
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index :examination_type_settings, :examination_intelligent_setting_id, name: "index_on_examination_intelligent_setting"
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe ExaminationIntelligentSetting, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe ExaminationTypeSetting, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
Reference in new issue