Sha256: a5b1307612b1c1be4380c5d83b04db97ddd6a9fadc12ebc47ed7a5f801deb452

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module Decidim
  module Lausanne
    module Budgets
      class DataPortabilityBudgetsOrderSerializer < Decidim::Exporters::Serializer
        # Public: Initializes the serializer with a conversation.
        def initialize(order)
          @order = order
        end

        # Serializes a Debate for data portability
        def serialize
          {
            id: order.id,
            budget: order.budget.title,
            component: order.budget.component.name,
            checked_out_at: order.checked_out_at,
            projects: all_projects,
            created_at: order.created_at,
            updated_at: order.updated_at
          }
        end

        private

          attr_reader :order

          def all_projects
            order.projects.map do |project|
              {
                id: project.id,
                title: project.title,
                description: project.description,
                budget_amount: project.budget_amount,
                scope: project.try(:scope).try(:name),
                reference: project.reference,
                created_at: project.created_at,
                updated_at: project.updated_at
              }
            end
          end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-lausanne-budgets-0.1.0 app/serializers/decidim/lausanne/budgets/data_portability_budgets_order_serializer.rb