class Weapps::CreateCourseService < ApplicationService attr_reader :course, :params def initialize(course, params) @course = course @params = params end def call Weapps::CreateCourseForm.new(form_params).validate! ActiveRecord::Base.transaction do course.name = params[:name].to_s.strip course.school_id = course.teacher&.school_id course.is_public = 0 course.credit = params[:credit].blank? ? nil : params[:credit] course.save! course.generate_invite_code CourseMember.create!(course_id: course.id, user_id: course.tea_id, role: 1) course.create_course_modules(params[:course_module_types]) end end private def form_params params.merge(course: course) end end