Sha256: 8bc53a55f3c99c3a62572b17c65c85b9691e91642cf9ec272333d7c9c43e443e

Contents?: true

Size: 1.03 KB

Versions: 7

Compression:

Stored size: 1.03 KB

Contents

class DailyEmailReportJob
  def perform(date=nil)

    date ||= 1.day.ago

    Organization.where(:id => organization_ids_to_email(date)).receiving_sales_email.each do |org|
      tickets           = DailyTicketReport.new(org, date)
      donations         = DailyDonationReport.new(org, date)
      membership_report = DailyMembershipReport.new(org, date)

      next if tickets.rows.empty? && donations.rows.empty? && tickets.exchange_rows.empty? && !membership_report.send?
      ReportsMailer.daily(tickets, donations, membership_report).deliver
    end
  end

  def organization_ids_to_email(date)
    #
    # We have to go back two days here intentionally to account for orgs across different time zones
    # We'll re-select the correct orders in the respective jobs
    #
    org_ids = Order.csv_not_imported.after(date-1.day).before(DateTime.now).pluck(:organization_id).uniq
    orgs_with_lapsed_memberships = Membership.lapsed.pluck(:organization_id).uniq
    org_ids = (org_ids + orgs_with_lapsed_memberships).uniq    
    org_ids
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.pre.21 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.20 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.19 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.18 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.17 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.16 app/models/job/daily_email_report_job.rb
artfully_ose-1.2.0.pre.15 app/models/job/daily_email_report_job.rb