class Decidim::Budgets::ProjectSerializer

Attributes

project[R]

Public Class Methods

new(project) click to toggle source

Public: Initializes the serializer with a project.

# File lib/decidim/budgets/project_serializer.rb, line 11
def initialize(project)
  @project = project
end

Public Instance Methods

serialize() click to toggle source

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

# File lib/decidim/budgets/project_serializer.rb, line 16
def serialize
  {
    id: project.id,
    category: {
      id: project.category.try(:id),
      name: project.category.try(:name) || empty_translatable
    },
    scope: {
      id: project.scope.try(:id),
      name: project.scope.try(:name) || empty_translatable
    },
    participatory_space: {
      id: project.participatory_space.id,
      url: Decidim::ResourceLocatorPresenter.new(project.participatory_space).url
    },
    component: { id: component.id },
    title: project.title,
    description: project.description,
    budget: { id: project.budget.id },
    budget_amount: project.budget_amount,
    confirmed_votes: project.confirmed_orders_count,
    comments: project.comments.count,
    created_at: project.created_at,
    url: project.polymorphic_resource_url({}),
    related_proposals: related_proposals,
    related_proposal_titles: related_proposal_titles,
    related_proposal_urls: related_proposal_urls
  }
end

Private Instance Methods

component() click to toggle source
# File lib/decidim/budgets/project_serializer.rb, line 50
def component
  project.component
end
empty_translatable(locales = Decidim.available_locales) click to toggle source
# File lib/decidim/budgets/project_serializer.rb, line 74
def empty_translatable(locales = Decidim.available_locales)
  locales.each_with_object({}) do |locale, result|
    result[locale.to_s] = ""
  end
end
url() click to toggle source
# File lib/decidim/budgets/project_serializer.rb, line 70
def url
  Decidim::ResourceLocatorPresenter.new(project).url
end