Sha256: 0bf9a2bd1d29022ffe1130ce6ed4eebe71917150464fa146fad8441206872b1f

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

# 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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
decidim-meetings-0.17.2 app/serializers/decidim/meetings/registration_serializer.rb
decidim-meetings-0.17.1 app/serializers/decidim/meetings/registration_serializer.rb
decidim-meetings-0.16.1 app/serializers/decidim/meetings/registration_serializer.rb
decidim-meetings-0.17.0 app/serializers/decidim/meetings/registration_serializer.rb
decidim-meetings-0.16.0 app/serializers/decidim/meetings/registration_serializer.rb