Sha256: 5504d60411e4d9e20065943faff6100cdf34dc559acf29cf3117e40fcaa61e5a

Contents?: true

Size: 1.45 KB

Versions: 40

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module Decidim
  module Proposals
    # This class serializes a Proposal so can be exported to CSV, JSON or other
    # formats.
    class ProposalSerializer < Decidim::Exporters::Serializer
      include Decidim::ResourceHelper

      # Public: Initializes the serializer with a proposal.
      def initialize(proposal)
        @proposal = proposal
      end

      # Public: Exports a hash with the serialized data for this proposal.
      def serialize
        {
          id: @proposal.id,
          category: {
            id: @proposal.category.try(:id),
            name: @proposal.category.try(:name)
          },
          scope: {
            id: @proposal.scope.try(:id),
            name: @proposal.scope.try(:name)
          },
          title: @proposal.title,
          body: @proposal.body,
          votes: @proposal.proposal_votes_count,
          comments: @proposal.comments.count,
          created_at: @proposal.created_at,
          url: url,
          feature: { id: feature.id },
          meeting_urls: meetings
        }
      end

      private

      attr_reader :proposal

      def feature
        proposal.feature
      end

      def meetings
        @proposal.linked_resources(:meetings, "proposals_from_meeting").map do |meeting|
          Decidim::ResourceLocatorPresenter.new(meeting).url
        end
      end

      def url
        Decidim::ResourceLocatorPresenter.new(proposal).url
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 2 rubygems

Version Path
decidim-proposals-0.10.1 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.10.0 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.9.3 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.9.2 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.9.1 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.9.0 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.8.4 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.8.3 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.8.2 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.8.1 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.8.0 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.7.4 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.7.3 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.7.2 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.7.1 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.7.0 lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.6.8 lib/decidim/proposals/proposal_serializer.rb
decidim-0.6.8 decidim-proposals/lib/decidim/proposals/proposal_serializer.rb
decidim-proposals-0.6.7 lib/decidim/proposals/proposal_serializer.rb
decidim-0.6.7 decidim-proposals/lib/decidim/proposals/proposal_serializer.rb