app/serializers/decidim/meetings/registration_serializer.rb in decidim-meetings-0.15.2 vs app/serializers/decidim/meetings/registration_serializer.rb in decidim-meetings-0.16.0
- old
+ new
@@ -1,19 +1,37 @@
# frozen_string_literal: true
module Decidim
module Meetings
class RegistrationSerializer < Decidim::Exporters::Serializer
+ include Decidim::TranslationsHelper
# Serializes a registration
def serialize
{
id: resource.id,
code: resource.code,
user: {
name: resource.user.name,
email: resource.user.email
- }
+ },
+ registration_form_answers: serialize_answers
}
+ end
+
+ private
+
+ def serialize_answers
+ questions = resource.meeting.questionnaire.questions
+ answers = resource.meeting.questionnaire.answers.where(user: resource.user)
+ questions.each_with_index.inject({}) do |serialized, (question, idx)|
+ answer = answers.find_by(question: question)
+ serialized.update("#{idx + 1}. #{translated_attribute(question.body)}" => normalize_body(answer))
+ end
+ end
+
+ def normalize_body(answer)
+ return "" unless answer
+ answer.body || answer.choices.pluck(:body)
end
end
end
end