Sha256: 017fadbfb6c1298e78149cc95c290b27592e0de88fea877cbc084d0f51ee9dd0
Contents?: true
Size: 1.27 KB
Versions: 35
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true module Decidim module Admin # Delivers the newsletter to its recipients. class DeliverNewsletter < Rectify::Command # Initializes the command. # # newsletter - The newsletter to deliver. # form - A form object with the params. # user - the Decidim::User that delivers the newsletter def initialize(newsletter, form, user) @newsletter = newsletter @form = form @user = user end def call @newsletter.with_lock do return broadcast(:invalid) if @form.send_to_all_users && !@user.admin? return broadcast(:invalid) unless @form.valid? return broadcast(:invalid) if @newsletter.sent? return broadcast(:no_recipients) if recipients.blank? send_newsletter! end broadcast(:ok, @newsletter) end private attr_reader :form def send_newsletter! Decidim.traceability.perform_action!( "deliver", @newsletter, @user ) do NewsletterJob.perform_later(@newsletter, @form.as_json, recipients.map(&:id)) end end def recipients @recipients ||= Decidim::Admin::NewsletterRecipients.for(@form) end end end end
Version data entries
35 entries across 35 versions & 1 rubygems