Sha256: 16548e7f0a6ee2078f9dad10706dcfb35fdb945a0c5af63965b9b6f894351ac1
Contents?: true
Size: 1.84 KB
Versions: 7
Compression:
Stored size: 1.84 KB
Contents
# frozen_string_literal: true module Decidim module Meetings module Admin # This command is executed when the user updates the meeting registrations. class UpdateRegistrations < Rectify::Command # Initializes a UpdateRegistrations Command. # # form - The form from which to get the data. # meeting - The current instance of the meeting to be updated. def initialize(form, meeting) @form = form @meeting = meeting end # Updates the meeting if valid. # # Broadcasts :ok if successful, :invalid otherwise. def call meeting.with_lock do return broadcast(:invalid) if form.invalid? update_meeting_registrations send_notification if should_notify_followers? end broadcast(:ok) end private attr_reader :form, :meeting 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 end meeting.save! end 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? meeting.previous_changes["registrations_enabled"].present? && meeting.registrations_enabled? end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems