diff --git a/app/controllers/attendances_controller.rb b/app/controllers/attendances_controller.rb index c8287f413..985052f18 100644 --- a/app/controllers/attendances_controller.rb +++ b/app/controllers/attendances_controller.rb @@ -2,6 +2,7 @@ class AttendancesController < ApplicationController before_action :require_login before_action :find_course, only: [:index, :statistics] + before_action :find_attendance, except: [:index, :statistics] before_action :user_course_identity def index @@ -66,9 +67,23 @@ class AttendancesController < ApplicationController @avg_leave_rate = data[:avg_leave_rate] end + def edit + @groups = @course.course_groups.where(id: @attendance.course_attendance_groups.pluck(:course_group_id)) + end + + def update + tip_exception(403, "") unless @user_course_identity < Course::PROFESSOR || @attendance.user_id == current_user.id + @attendance.update!(update_params) + render_ok + end + private def find_attendance @attendance = CourseAttendance.find params[:id] @course = @attendance.course end + + def update_params + params.permit(:name, :mode, :attendance_date, :start_time, :end_time) + end end \ No newline at end of file diff --git a/app/views/attendances/edit.json.jbuilder b/app/views/attendances/edit.json.jbuilder new file mode 100644 index 000000000..77d2b09f3 --- /dev/null +++ b/app/views/attendances/edit.json.jbuilder @@ -0,0 +1,4 @@ +json.(@attendance, :name, :mode, :attendance_date, :start_time, :end_time) +json.groups @groups do |group| + json.(group, :id, :name) +end \ No newline at end of file