dev_daiao
daiao 5 years ago
parent dc0e45c0ed
commit 11155590fa

@ -43,6 +43,7 @@ class User < ApplicationRecord
has_many :shixun_members, :dependent => :destroy
has_many :shixuns, :through => :shixun_members
has_many :myshixuns, :dependent => :destroy
has_many :games, :dependent => :destroy
has_many :study_shixuns, through: :myshixuns, source: :shixun # 已学习的实训
has_many :course_messages
has_many :courses, foreign_key: 'tea_id', dependent: :destroy

@ -0,0 +1,30 @@
class Subject::UserUsedInfoService < ApplicationService
attr_reader :subject, :shixun_ids
def initialize(subject)
@subject = subject
@shixun_ids = subject.shixuns.pluck(:id)
end
def call
users = User.joins(:myshixuns).where(myshixuns: {shixun_id: shixun_ids}).group(:user_id)
users_info = []
users.includes(:myshixuns, :games).each do |user|
games = user.games
name = "#{user.lastname}#{user.firstname}"
passed_myshixun_count = user.myshixuns.select{|m| m.status == 1}.size
passed_games_count = games.select{|g| g.status == 2}.size
code_line_count = "未完成"
evaluate_count = games.sum(evaluate_count)
cost_time = games.sum(:cost_time)
user_login = user.login
users_info << {login: user_login, name: name, passed_myshixun_count: passed_myshixun_count,
passed_games_count: passed_games_count, code_line_count: code_line_count,
evaluate_count: evaluate_count, cost_time: cost_time}
end
users_info
end
end
Loading…
Cancel
Save