Sha256: ca92e1c00403d8b3d552d4d8e55e9a1db58ee48081acf0da6d268e827b180705

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

def puts! a, b=''
  puts "+++ +++ #{b}"
  puts a.inspect
end

namespace :office do

  desc 'schheduled email actions, rolling perform'
  task schs: :environment do
    while true do

      Sch.active.where({ :perform_at.lte => Time.now }).each do |sch|
        sch.update_attributes({ state: Sch::STATE_INACTIVE })

        # send now
        ctx = Ctx.new({
          email_template_id: sch.act.tmpl.id,
          lead_id: sch.lead.id,
          send_at: Time.now,
        })
        ctx.save!

        # schedule next actions & update the action
        sch.act.ties.each do |tie|
          next_act = tie.next_email_action
          next_at  = eval(tie.next_at_exe)
          next_sch = Sch.find_or_initialize_by({
            lead_id: sch.lead_id,
            email_action_id: nxt.id,
          })
          sch_nxt.perform_at = next_at
          sch_nxt.state = Sch::STATE_ACTIVE
          sch_nxt.save!
        end

        print '+'

      end

      # sleep 1.minute
      sleep 10.seconds
      print '.'
    end
  end

  desc "send emails"
  task email_worker: :environment do
    while true do

      ctxs = ::Ish::EmailContext.scheduled.unsent
      puts! ctxs.count, 'ctxs'
      ctxs.map do |ctx|
        IshManager::OfficeMailer.send_context_email( ctx[:id].to_s ).deliver_later
        print '.'
      end

      # sleep 1.minute
      sleep 10.seconds
      print '^'
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ish_manager-0.1.8.386 lib/tasks/office_tasks.rake