课堂更新接口

dev_home
cxt 6 years ago
parent d09e141ab0
commit 5d36f8c9ed

@ -1,5 +1,6 @@
class Weapps::CoursesController < Weapps::BaseController
# before_action :require_wechat_login!
before_action :teacher_allowed, except: [:create]
def create
return render_error("只有老师身份才能创建课堂") unless current_user.is_teacher?
@ -12,11 +13,12 @@ class Weapps::CoursesController < Weapps::BaseController
end
def edit
@course = current_course
end
def update
Weapps::UpdateCourseService.call(current_course, course_params)
render_ok
end
private
@ -24,4 +26,12 @@ class Weapps::CoursesController < Weapps::BaseController
def course_params
params.permit(:name, :course_list_name, :credit, course_module_types: [])
end
def current_course
@_current_course = Course.find params[:id]
end
def teacher_allowed
return render_forbidden unless current_user.course_identity(current_course) < Course::STUDENT
end
end

@ -0,0 +1,15 @@
class Weapps::UpdateCourseForm
include ActiveModel::Model
attr_accessor :course
attr_accessor :name, :course_list_name, :credit
validates :name, presence: true
validates :course_list_name, presence: true
validate :course_name_prefix
def course_name_prefix
raise '课堂名称应以课程名称开头' unless name.index(course_list_name) && name.index(course_list_name) == 0
end
end

@ -14,6 +14,13 @@ class Weapps::CreateCourseService < ApplicationService
course.school_id = course.teacher&.school_id
course.is_public = 0
course.credit = params[:credit].blank? ? nil : params[:credit]
course_list = CourseList.find_by(name: params[:course_list_name].to_s.strip)
if course_list
course.course_list_id = course_list.id
else
new_course_list = CourseList.create!(name: params[:course_list_name].to_s.strip, user_id: course.tea_id, is_admin: 0)
course.course_list_id = new_course_list.id
end
course.save!
course.generate_invite_code

@ -0,0 +1,31 @@
class Weapps::UpdateCourseService < ApplicationService
attr_reader :course, :params
def initialize(course, params)
@course = course
@params = params
end
def call
Weapps::UpdateCourseForm.new(form_params).validate!
ActiveRecord::Base.transaction do
course.name = params[:name].to_s.strip
course.credit = params[:credit].blank? ? nil : params[:credit]
course_list = CourseList.find_by(name: params[:course_list_name].to_s.strip)
if course_list
course.course_list_id = course_list.id
else
new_course_list = CourseList.create!(name: params[:course_list_name].to_s.strip, user_id: course.tea_id, is_admin: 0)
course.course_list_id = new_course_list.id
end
course.save!
end
end
private
def form_params
params.merge(course: course)
end
end

@ -0,0 +1,2 @@
json.(@course, :id, :name, :credit)
json.course_list_name @course.course_list&.name
Loading…
Cancel
Save