class Decidim::Meetings::MeetingSerializer

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

def component

def component
  meeting.component
end

def initialize(meeting)

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

def related_proposals

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

def related_results

def related_results
  meeting.linked_resources(:results, "meetings_through_proposals").map do |result|
    Decidim::ResourceLocatorPresenter.new(result).url
  end
end

def serialize

Public: Exports a hash with the serialized data for this meeting.
def serialize
  {
    id: meeting.id,
    category: {
      id: meeting.category.try(:id),
      name: meeting.category.try(:name)
    },
    scope: {
      id: meeting.scope.try(:id),
      name: meeting.scope.try(:name)
    },
    participatory_space: {
      id: meeting.participatory_space.id,
      url: Decidim::ResourceLocatorPresenter.new(meeting.participatory_space).url
    },
    component: { id: component.id },
    title: meeting.title,
    description: meeting.description,
    start_time: meeting.start_time.to_s(:db),
    end_time: meeting.end_time.to_s(:db),
    attendees: meeting.attendees_count.to_i,
    contributions: meeting.contributions_count.to_i,
    organizations: meeting.attending_organizations,
    address: meeting.address,
    location: meeting.location,
    reference: meeting.reference,
    comments: meeting.comments_count,
    attachments: meeting.attachments.count,
    followers: meeting.followers.count,
    url: url,
    related_proposals: related_proposals,
    related_results: related_results
  }
end

def url

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