class Decidim::Accountability::ResultSerializer

This class serializes a Result so can be exported to CSV, JSON or other formats.

Attributes

result[R]

Public Class Methods

new(result) click to toggle source

Public: Initializes the serializer with a result.

# File lib/decidim/accountability/result_serializer.rb, line 12
def initialize(result)
  @result = result
end

Public Instance Methods

serialize() click to toggle source

Public: Exports a hash with the serialized data for this result.

# File lib/decidim/accountability/result_serializer.rb, line 17
def serialize
  {
    id: result.id,
    category: {
      id: result.category.try(:id),
      name: result.category.try(:name) || empty_translatable
    },
    scope: {
      id: result.scope.try(:id),
      name: result.scope.try(:name) || empty_translatable
    },
    parent: {
      id: result.parent.try(:id)
    },
    title: result.title,
    description: result.description,
    start_date: result.start_date,
    end_date: result.end_date,
    status: {
      id: result.status.try(:id),
      key: result.status.try(:key),
      name: result.status.try(:name) || empty_translatable
    },
    progress: result.progress,
    created_at: result.created_at,
    url: url,
    component: { id: component.id },
    proposal_urls: proposals
  }
end

Private Instance Methods

component() click to toggle source
# File lib/decidim/accountability/result_serializer.rb, line 52
def component
  result.component
end
proposals() click to toggle source
# File lib/decidim/accountability/result_serializer.rb, line 56
def proposals
  result.linked_resources(:proposals, "included_proposals").map do |proposal|
    Decidim::ResourceLocatorPresenter.new(proposal).url
  end
end
url() click to toggle source
# File lib/decidim/accountability/result_serializer.rb, line 62
def url
  Decidim::ResourceLocatorPresenter.new(result).url
end