|
- class StatisticWorksController < ApplicationController
- # before_filter :is_logged
- # before_filter :teacher_of_course
- before_filter :find_course
- before_filter :find_homework, only: :student_work_details
-
- def index
- page = params[:page] || 1
- limit = params[:limit] || 30
- homework_ids = @course.homework_commons.select(:id).pluck(:id)
- student_works = StudentWork.joins(:homework_common).where(homework_common_id: homework_ids,work_status: [1,2], is_delete: 0).page(page).per(limit)
- works_and_commited_users = student_works.group(:homework_common_id, :anonymous_comment,"homework_commons.name").reorder("student_works.id desc").size
- work_and_commited = []
-
- if works_and_commited_users.present?
- works_and_commited_users.each do |k,v|
- work_and_commited.push(
- {
- homework_id: k[0],
- homework_name: k[2],
- anonymous_comment: k[1], #是否开启匿评分,0表示关闭,1表示开启
- commited_students_count: v
- }
- )
- end
- end
-
- course_infos = {
- status: 1,
- main_tearcher: @course&.teacher&.show_name,
- syllabus_name: @course&.syllabus&.title,
- course_name: @course.try(:name),
- teachers_count: teachers_number,
- students_count: student_number,
- homeworks_count: homework_ids.size, #作业数
- work_and_commited: work_and_commited
- }
- respond_to do |formart|
- formart.json {render json: course_infos}
- end
- end
-
- def student_work_details
- page = params[:page] || 1
- limit = params[:limit] || 30
- student_works = @homework.student_works.includes(user: :user_extensions).page(page).per(limit)
- student_works_json = []
- if student_works.present?
- student_works.each do |work|
-
- user = work.user
- work_json = {
- name: user.try(:show_name),
- student_id: user&.user_extensions.try(:student_id),
- description: work.description,
- work_status: work.work_status,
- final_score: work.final_score,
- teacher_score: work.teacher_score,
- student_score: work.student_score,
- teaching_asistant_score: work.teaching_asistant_score,
- system_score: work.system_score, #学生评分
- commit_time: work&.commit_time&.strftime("%Y-%m-%d %H:%M:%S"), #提交时间
- }
- student_works_json.push(work_json)
- end
- end
-
- respond_to do |formart|
- formart.json {render json: student_works_json}
- end
- end
-
- private
-
- def find_course
- @course = Course.find params[:course_id]
- unless @course.present?
- respond_to do |formart|
- formart.json {render json: {status: -1, message: "课程不存在"}}
- end
- end
- end
-
- def find_homework
- @homework = HomeworkCommon.find params[:id]
- unless @homework.present?
- respond_to do |formart|
- formart.json {render json: {status: -1, message: "作业不存在"}}
- end
- end
- end
-
- # def teacher_of_course
- # unless User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
- # respond_to do |formart|
- # formart.json {render json: {status: -1, message: "没有权限"} }
- # end
- # end
- # end
-
- def teachers_number
- Member.joins(:member_roles).where("members.course_id = ? && member_roles.role_id in ('3','7','9')", @course.id)&.size
- end
-
- def student_number
- @course&.student&.size
- end
-
- # def is_logged
- # unless User.current.logged?
- # respond_to do |formart|
- # formart.json {render json: {status: -1, message: "请先登录"} }
- # end
- # end
- # end
-
- end
|