|
|
|
@ -44,36 +44,41 @@ class Weapps::AttendancesController < ApplicationController
|
|
|
|
|
def student_attendances
|
|
|
|
|
# tip_exception("学生身份的签到列表") if @user_course_identity != Course::STUDENT
|
|
|
|
|
member = @course.students.find_by(user_id: current_user.id)
|
|
|
|
|
current_date = Date.current
|
|
|
|
|
current_end_time = Time.current.strftime("%H:%M:%S")
|
|
|
|
|
|
|
|
|
|
# 先算出该学生所在分班的签到id
|
|
|
|
|
# 分班id为0 表示签到不限制分班
|
|
|
|
|
group_ids = [member&.course_group_id.to_i, 0]
|
|
|
|
|
all_attendance_ids = @course.course_attendance_groups.where(course_group_id: group_ids).pluck(:course_attendance_id)
|
|
|
|
|
|
|
|
|
|
@history_attendances = @course.course_attendances.where(id: all_attendance_ids.uniq).
|
|
|
|
|
where("attendance_date < '#{current_date}' or (attendance_date = '#{current_date}' and end_time < '#{current_end_time}')").order("id desc")
|
|
|
|
|
@current_attendance = @course.course_attendances.where(id: all_attendance_ids.uniq).
|
|
|
|
|
where("attendance_date = '#{current_date}' and start_time <= '#{current_end_time}' and end_time > '#{current_end_time}'")
|
|
|
|
|
@history_count = @history_attendances.size
|
|
|
|
|
|
|
|
|
|
student_attendance_ids = @history_attendances.pluck(:id)
|
|
|
|
|
student_attendance_ids += @current_attendance.present? ? @current_attendance.pluck(:id) : []
|
|
|
|
|
if member.present?
|
|
|
|
|
current_date = Date.current
|
|
|
|
|
current_end_time = Time.current.strftime("%H:%M:%S")
|
|
|
|
|
|
|
|
|
|
# 先算出该学生所在分班的签到id
|
|
|
|
|
# 分班id为0 表示签到不限制分班
|
|
|
|
|
group_ids = [member&.course_group_id.to_i, 0]
|
|
|
|
|
all_attendance_ids = @course.course_attendance_groups.where(course_group_id: group_ids).pluck(:course_attendance_id)
|
|
|
|
|
|
|
|
|
|
# 学生的历史签到只统计加入课堂后创建的签到
|
|
|
|
|
history_attendance_ids = member.course_member_attendances.where(course_id: @course.id).pluck(:course_attendance_id)
|
|
|
|
|
|
|
|
|
|
@history_attendances = @course.course_attendances.where(id: history_attendance_ids.uniq).
|
|
|
|
|
where("attendance_date < '#{current_date}' or (attendance_date = '#{current_date}' and end_time < '#{current_end_time}')").order("id desc")
|
|
|
|
|
@current_attendance = @course.course_attendances.where(id: all_attendance_ids.uniq).
|
|
|
|
|
where("attendance_date = '#{current_date}' and start_time <= '#{current_end_time}' and end_time > '#{current_end_time}'")
|
|
|
|
|
@history_count = @history_attendances.size
|
|
|
|
|
|
|
|
|
|
student_attendance_ids = @history_attendances.pluck(:id)
|
|
|
|
|
student_attendance_ids += @current_attendance.present? ? @current_attendance.pluck(:id) : []
|
|
|
|
|
|
|
|
|
|
if student_attendance_ids.uniq.blank?
|
|
|
|
|
@normal_count = 0
|
|
|
|
|
@leave_count = 0
|
|
|
|
|
@absence_count = 0
|
|
|
|
|
else
|
|
|
|
|
@normal_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: student_attendance_ids, attendance_status: "NORMAL").size
|
|
|
|
|
@leave_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: student_attendance_ids, attendance_status: "LEAVE").size
|
|
|
|
|
# 旷课只统计历史签到的
|
|
|
|
|
@absence_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: @history_attendances.pluck(:id), attendance_status: "ABSENCE").size
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if student_attendance_ids.uniq.blank?
|
|
|
|
|
@normal_count = 0
|
|
|
|
|
@leave_count = 0
|
|
|
|
|
@absence_count = 0
|
|
|
|
|
else
|
|
|
|
|
@normal_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: student_attendance_ids, attendance_status: "NORMAL").size
|
|
|
|
|
@leave_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: student_attendance_ids, attendance_status: "LEAVE").size
|
|
|
|
|
# 旷课只统计历史签到的
|
|
|
|
|
@absence_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: @history_attendances.pluck(:id), attendance_status: "ABSENCE").size
|
|
|
|
|
@all_history_count = @history_attendances.size
|
|
|
|
|
@history_attendances = paginate @history_attendances.includes(:course_member_attendances)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@all_history_count = @history_attendances.size
|
|
|
|
|
@history_attendances = paginate @history_attendances.includes(:course_member_attendances)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def show
|
|
|
|
|