Sha256: 801076c458aaa00848d0275515795c63a5d27a20fffd1fabc806cf01a9d050c6

Contents?: true

Size: 1.13 KB

Versions: 56

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

module Motor
  class AlertsMailer < ApplicationMailer
    SenderAddressNotSet = Class.new(StandardError)
    SENDER_NOT_SET_ERROR_MESSAGE =
      'Please specify your sender address via MOTOR_ALERTS_FROM_ADDRESS environment variable'

    def alert_email(alert, email: nil)
      @alert = alert
      @query_result = Queries::RunQuery.call(alert.query,
                                             variables_hash: { current_user_email: email })

      return if @alert.preferences[:send_empty].blank? && @query_result.data.blank?

      assign_attachment(@alert, @query_result)

      raise SenderAddressNotSet, SENDER_NOT_SET_ERROR_MESSAGE unless from_address

      mail(
        from: from_address,
        to: email || alert.to_emails,
        subject: alert.name.presence || @alert.query.name
      )
    end

    private

    def assign_attachment(alert, query_result)
      attachments["#{alert.name.presence || 'data'}.csv"] = generate_csv(query_result)
    end

    def generate_csv(query_result)
      rows = [query_result.columns.pluck(:name)] + query_result.data

      rows.map(&:to_csv).join
    end
  end
end

Version data entries

56 entries across 56 versions & 6 rubygems

Version Path
motor-admin-0.4.36 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.35 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.34 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.33 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.32 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.31 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.30 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.29 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.28 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.35 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.34 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.33 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.32 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.31 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.30 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.29 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.28 app/mailers/motor/alerts_mailer.rb
motor-admin-cstham8-0.4.27 app/mailers/motor/alerts_mailer.rb
motor-admin-0.4.27 app/mailers/motor/alerts_mailer.rb
motor-admin-unosquare-0.4.28 app/mailers/motor/alerts_mailer.rb