Sha256: c7cdffee6044a0d66736579103327db26b24e9fb2abfe238ead2123ac2d92d92

Contents?: true

Size: 1.76 KB

Versions: 4

Compression:

Stored size: 1.76 KB

Contents

class WorkLockNagger
  include ActionController::UrlWriter
  
  def initialize
  end
  
  def nag
    sleep 1.minute
    puts "Work Lock Nagger started"
    begin
      if File.exists? APP_CONFIG_FILE
        config = YAML::load(ERB.new(IO.read(APP_CONFIG_FILE)).result) || {}
        app_url = config[:app_url]
      end
      if app_url
        url = app_url + 'works/weekly_work_sheet_by_work_account'
      else      
        host = Socket::gethostname
        port = config[:port] || 3000
        url = url_for(:host => host, :port => port, :controller => 'works', :action => :weekly_work_sheet_by_work_account)
      end
    rescue Exception => e
      puts e.message
      puts e.backtrace
    end
    
    loop do
      puts "Nagging"
      begin
        late_work_locks = WorkLock.find(
                                        :all, 
                                        :conditions => ["end_on < ? and not exists (select id from work_locks wl2 where wl2.user_id = work_locks.user_id and wl2.end_on > work_locks.end_on)", 1.week.ago.monday ])
        
        late_users = late_work_locks.map{|wl| wl.user}.uniq
        late_users.each do |u|
          missing_date = (u.work_locks.last.end_on + 7)
          year = missing_date.year
          week = missing_date.cweek
          WorkLockNotify.deliver_nag(u, week, url + "/#{year}/#{week}")
        end
        now = Time.now
        next_nag_time = Time.local(now.year, now.month, now.hour < 10 ? now.day : now.day + 1, 10, 0, 0)
        sleep_duration = next_nag_time - now
        puts "Sleeping #{sleep_duration.to_i / 3600} hours #{(sleep_duration.to_i % 3600) / 60} minutes and #{sleep_duration.to_i % 60} seconds."
        sleep sleep_duration
      rescue Exception => e
        p e
      end
      puts "Nag ends"
    end
  end
  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
backlog-0.23.1 app/models/work_lock_nagger.rb
backlog-0.24.0 app/models/work_lock_nagger.rb
backlog-0.25.0 app/models/work_lock_nagger.rb
backlog-0.26.0 app/models/work_lock_nagger.rb