From ce4c724fb42ff4fa37858548b05100178e36a70b Mon Sep 17 00:00:00 2001 From: p31729568 Date: Wed, 9 Oct 2019 14:13:21 +0800 Subject: [PATCH] ecs: modify --- .../course_achievement_methods_controller.rb | 3 +- ...reate_course_achievement_method_service.rb | 4 +-- ...ec_course_achievement_method.json.jbuilder | 2 -- .../show.json.jbuilder | 29 +++++++++++++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/app/controllers/ecs/course_achievement_methods_controller.rb b/app/controllers/ecs/course_achievement_methods_controller.rb index 62d609ea7..4a9968fb2 100644 --- a/app/controllers/ecs/course_achievement_methods_controller.rb +++ b/app/controllers/ecs/course_achievement_methods_controller.rb @@ -1,6 +1,7 @@ class Ecs::CourseAchievementMethodsController < Ecs::CourseBaseController def show - include_associations = { ec_course_achievement_methods: [:ec_course_evaluation, :ec_course_evaluation_subitems] } + include_associations = { ec_course_achievement_methods: + [:ec_course_evaluation, ec_achievement_evaluation_relates: :ec_course_evaluation_subitem] } @course_targets = current_course.ec_course_targets.includes(include_associations) end diff --git a/app/services/ecs/create_course_achievement_method_service.rb b/app/services/ecs/create_course_achievement_method_service.rb index 0c086631f..d71fc9c97 100644 --- a/app/services/ecs/create_course_achievement_method_service.rb +++ b/app/services/ecs/create_course_achievement_method_service.rb @@ -49,14 +49,14 @@ class Ecs::CreateCourseAchievementMethodsService < ApplicationService create_data = new_data - old_data # 生成需要创建关系的 subitem id 数据 - create_attributes = create_data.map { |arr| { ec_course_evaluation_subitem_id: arr[0], position: arr[1] } } + create_attributes = create_data.map { |arr| { ec_course_target_id: course_target.id, ec_course_evaluation_subitem_id: arr[0], position: arr[1] } } # 处理需要更新或者删除的记录 exists_attributes = relates.map do |relate| if destroy_data.include?([relate.ec_course_evaluation_subitem_id, relate.position]) { id: relate.id, _destroy: true } else - relate.as_json(only: %i[id ec_course_evaluation_subitem_id ec_course_achievement_method_id position]) + relate.as_json(only: %i[id ec_course_target_id ec_course_evaluation_subitem_id ec_course_achievement_method_id position]) end end diff --git a/app/views/ecs/course_achievement_methods/shared/_ec_course_achievement_method.json.jbuilder b/app/views/ecs/course_achievement_methods/shared/_ec_course_achievement_method.json.jbuilder index 868e7822c..5cc3220a4 100644 --- a/app/views/ecs/course_achievement_methods/shared/_ec_course_achievement_method.json.jbuilder +++ b/app/views/ecs/course_achievement_methods/shared/_ec_course_achievement_method.json.jbuilder @@ -7,5 +7,3 @@ end json.course_evaluation_subitems ec_course_achievement_method.ec_course_evaluation_subitems, partial: 'ecs/shared/ec_course_evaluation_subitem', as: :ec_course_evaluation_subitem - -json.course_evaluation_relates ec_course_achievement_method.ec_course_evaluation.evaluation_relates diff --git a/app/views/ecs/course_achievement_methods/show.json.jbuilder b/app/views/ecs/course_achievement_methods/show.json.jbuilder index 9105c9615..77d1ce5a7 100644 --- a/app/views/ecs/course_achievement_methods/show.json.jbuilder +++ b/app/views/ecs/course_achievement_methods/show.json.jbuilder @@ -1,3 +1,32 @@ json.course_targets @course_targets, partial: 'ecs/course_targets/shared/ec_course_target_with_achievement_methods', as: :ec_course_target +json.course_targets do + json.array! @course_targets do |course_target| + json.extract! course_target, :id, :position, :content + + json.course_achievement_methods do + json.array! course_target.ec_course_achievement_methods do |achievement_method| + evaluation = achievement_method.ec_course_evaluation + json.extract! achievement_method, :id, :score, :percentage + + json.course_evaluation do + json.partial! 'ecs/course_evaluations/shared/ec_course_evaluation_only', ec_course_evaluation: evaluation + end + + json.course_evaluation_relates do + json.array! achievement_method.ec_achievement_evaluation_relates do |relate| + json.extract! relate, :id, :position, :ec_course_evaluation_subitem_id + + subitem = relate.ec_course_evaluation_subitem + if evaluation.is_course_type? + json.name subitem&.name + else + json.name subitem&.name ? "#{evaluation.name}(#{relate.position}):#{subitem&.name}" : "#{evaluation.name}(#{relate.position})" + end + end + end + end + end + end +end \ No newline at end of file