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