class Decidim::Meetings::Admin::UpdateRegistrations

This command is executed when the user updates the meeting registrations.

def call

Broadcasts :ok if successful, :invalid otherwise.

Updates the meeting if valid.
def call
  return broadcast(:invalid) if form.invalid?
  meeting.with_lock do
    update_meeting_registrations
    send_notification if should_notify_followers?
  end
  broadcast(:ok)
end

def initialize(form, meeting)

meeting - The current instance of the meeting to be updated.
form - The form from which to get the data.

Initializes a UpdateRegistrations Command.
def initialize(form, meeting)
  @form = form
  @meeting = meeting
end

def send_notification

def send_notification
  Decidim::EventsManager.publish(
    event: "decidim.events.meetings.registrations_enabled",
    event_class: Decidim::Meetings::MeetingRegistrationsEnabledEvent,
    resource: meeting,
    followers: meeting.followers
  )
end

def should_notify_followers?

def should_notify_followers?
  meeting.previous_changes["registrations_enabled"].present? && meeting.registrations_enabled?
end

def update_meeting_registrations

def update_meeting_registrations
  meeting.registrations_enabled = form.registrations_enabled
  meeting.registration_form_enabled = form.registration_form_enabled
  if form.registrations_enabled
    meeting.available_slots = form.available_slots
    meeting.reserved_slots = form.reserved_slots
    meeting.registration_terms = form.registration_terms
    meeting.customize_registration_email = form.customize_registration_email
    meeting.registration_email_custom_content = form.registration_email_custom_content if form.customize_registration_email
  end
  meeting.save!
end