Class: Decidim::Meetings::MeetingSerializer

Inherits:
Exporters::Serializer
  • Object
show all
Includes:
ApplicationHelper, ResourceHelper
Defined in:
lib/decidim/meetings/meeting_serializer.rb

Overview

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

Direct Known Subclasses

DownloadYourDataMeetingSerializer

Instance Method Summary collapse

Instance Method Details

#serializeObject

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



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/decidim/meetings/meeting_serializer.rb', line 12

def serialize
  {
    id: resource.id,
    author: {
      **author_fields
    },
    participatory_space: {
      id: resource.participatory_space.id,
      url: Decidim::ResourceLocatorPresenter.new(resource.participatory_space).url
    },
    taxonomies:,
    component: { id: component.id },
    title: resource.title,
    description: resource.description,
    start_time: resource.start_time,
    end_time: resource.end_time,
    attendees: resource.attendees_count.to_i,
    contributions: resource.contributions_count.to_i,
    organizations: resource.attending_organizations,
    address: resource.address,
    location: include_location? ? resource.location : nil,
    reference: resource.reference,
    attachments: resource.attachments.size,
    url:,
    related_proposals:,
    related_results:,
    published: resource.published_at.present?,
    withdrawn: resource.withdrawn?,
    withdrawn_at: resource.withdrawn_at,
    location_hints: resource.location_hints,
    created_at: resource.created_at,
    updated_at: resource.updated_at,
    latitude: resource.latitude,
    longitude: resource.longitude,
    follows_count: resource.follows_count,
    private_meeting: resource.private_meeting,
    transparent: resource.transparent,
    registration_form_enabled: resource.registration_form_enabled,
    comments: {
      **comment_fields
    },
    online_meeting_url: resource.online_meeting_url,
    closing_visible: resource.closing_visible,
    closing_report: resource.closing_report,
    attending_organizations: resource.attending_organizations,
    registration_url: resource.registration_url,
    decidim_author_type: resource.decidim_author_type,
    video_url: resource.video_url,
    audio_url: resource.audio_url,
    closed_at: resource.closed_at,
    registration_terms: resource.registration_terms,
    available_slots: resource.available_slots,
    registrations_enabled: resource.registrations_enabled,
    customize_registration_email: resource.customize_registration_email,
    type_of_meeting: resource.type_of_meeting,
    iframe_access_level: resource.iframe_access_level,
    iframe_embed_type: resource.iframe_embed_type,
    reserved_slots: resource.reserved_slots,
    registration_type: resource.registration_type
  }
end