35 lines
996 B
35 lines
996 B
6 years ago
|
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
|