|
|
@ -73,7 +73,14 @@ class AttendancesController < ApplicationController
|
|
|
|
|
|
|
|
|
|
|
|
def update
|
|
|
|
def update
|
|
|
|
tip_exception(403, "") unless @user_course_identity < Course::PROFESSOR || @attendance.user_id == current_user.id
|
|
|
|
tip_exception(403, "") unless @user_course_identity < Course::PROFESSOR || @attendance.user_id == current_user.id
|
|
|
|
|
|
|
|
a_end_time = "#{@attendance.attendance_date} #{@attendance.end_time}".to_time
|
|
|
|
|
|
|
|
new_end_time = "#{params[:attendance_date]} #{params[:end_time]}".to_time
|
|
|
|
@attendance.update!(update_params)
|
|
|
|
@attendance.update!(update_params)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 如果历史签到变为了正在签到,将未创建的学生签到数据补上
|
|
|
|
|
|
|
|
if a_end_time < Time.current && new_end_time > Time.current
|
|
|
|
|
|
|
|
create_absence_student_data
|
|
|
|
|
|
|
|
end
|
|
|
|
render_ok
|
|
|
|
render_ok
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -86,4 +93,27 @@ class AttendancesController < ApplicationController
|
|
|
|
def update_params
|
|
|
|
def update_params
|
|
|
|
params.permit(:name, :mode, :attendance_date, :start_time, :end_time)
|
|
|
|
params.permit(:name, :mode, :attendance_date, :start_time, :end_time)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_absence_student_data
|
|
|
|
|
|
|
|
group_ids = @attendance.course_attendance_groups.pluck(:course_group_id)
|
|
|
|
|
|
|
|
if group_ids.include?(0)
|
|
|
|
|
|
|
|
students = @course.students
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
students = @course.students.where(course_group_id: group_ids)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
none_users = students.where.not(user_id: @attendance.course_member_attendances.pluck(:user_id))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
attrs = %i[course_attendance_id user_id course_member_id course_id course_group_id created_at updated_at]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
same_attrs = {course_attendance_id: attendance.id, course_id: course.id}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CourseMemberAttendance.bulk_insert(*attrs) do |worker|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
none_users.each do |student|
|
|
|
|
|
|
|
|
next if @attendance.course_member_attendances.exists?(user_id: student.user_id)
|
|
|
|
|
|
|
|
worker.add same_attrs.merge(user_id: student.user_id, course_member_id: student.id, course_group_id: student.course_group_id)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|