class Decidim::Proposals::ProposalSerializer
This class serializes a Proposal so can be exported to CSV, JSON or other formats.
Attributes
proposal[R]
Public Class Methods
new(proposal)
click to toggle source
Public: Initializes the serializer with a proposal.
# File lib/decidim/proposals/proposal_serializer.rb, line 13 def initialize(proposal) @proposal = proposal end
Public Instance Methods
serialize()
click to toggle source
Public: Exports a hash with the serialized data for this proposal.
# File lib/decidim/proposals/proposal_serializer.rb, line 18 def serialize { id: proposal.id, category: { id: proposal.category.try(:id), name: proposal.category.try(:name) || empty_translatable }, scope: { id: proposal.scope.try(:id), name: proposal.scope.try(:name) || empty_translatable }, participatory_space: { id: proposal.participatory_space.id, url: Decidim::ResourceLocatorPresenter.new(proposal.participatory_space).url }, component: { id: component.id }, title: proposal.title, body: proposal.body, state: proposal.state.to_s, reference: proposal.reference, answer: ensure_translatable(proposal.answer), supports: proposal.proposal_votes_count, endorsements: { total_count: proposal.endorsements.count, user_endorsements: user_endorsements }, comments: proposal.comments_count, attachments: proposal.attachments.count, followers: proposal.followers.count, published_at: proposal.published_at, url: url, meeting_urls: meetings, related_proposals: related_proposals, is_amend: proposal.emendation?, original_proposal: { title: proposal&.amendable&.title, url: original_proposal_url } } end
Private Instance Methods
component()
click to toggle source
# File lib/decidim/proposals/proposal_serializer.rb, line 63 def component proposal.component end
meetings()
click to toggle source
# File lib/decidim/proposals/proposal_serializer.rb, line 67 def meetings proposal.linked_resources(:meetings, "proposals_from_meeting").map do |meeting| Decidim::ResourceLocatorPresenter.new(meeting).url end end
original_proposal_url()
click to toggle source
# File lib/decidim/proposals/proposal_serializer.rb, line 87 def original_proposal_url return unless proposal.emendation? && proposal.amendable.present? Decidim::ResourceLocatorPresenter.new(proposal.amendable).url end
url()
click to toggle source
# File lib/decidim/proposals/proposal_serializer.rb, line 79 def url Decidim::ResourceLocatorPresenter.new(proposal).url end
user_endorsements()
click to toggle source
# File lib/decidim/proposals/proposal_serializer.rb, line 83 def user_endorsements proposal.endorsements.for_listing.map { |identity| identity.normalized_author&.name } end