You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
996 B
35 lines
996 B
class Ecs::SaveCourseEvaluationService < ApplicationService
|
|
include AcceptsNestedAttributesHelper
|
|
|
|
attr_reader :ec_course, :course_evaluation, :params
|
|
|
|
def initialize(course_evaluation, params)
|
|
@course_evaluation = course_evaluation
|
|
@ec_course = course_evaluation.ec_course
|
|
@params = params
|
|
end
|
|
|
|
def call
|
|
Ecs::SaveCourseEvaluationForm.new(params).validate!
|
|
|
|
subitem_attributes = build_accepts_nested_attributes(
|
|
course_evaluation,
|
|
course_evaluation.ec_course_evaluation_subitems,
|
|
params.delete(:course_evaluation_subitems),
|
|
&method(:course_evaluation_subitem_param_handler!)
|
|
)
|
|
|
|
course_evaluation.assign_attributes(params)
|
|
course_evaluation.assign_attributes(ec_course_evaluation_subitems_attributes: subitem_attributes)
|
|
|
|
course_evaluation.save!
|
|
course_evaluation
|
|
end
|
|
|
|
private
|
|
|
|
def course_evaluation_subitem_param_handler!(item)
|
|
item[:name] = item[:name].to_s.strip
|
|
end
|
|
end
|