Eliminate duplicated code from dispute update job

This commit is contained in:
Karl Erik Õunapuu 2020-04-29 16:42:34 +03:00
parent b4b43afa56
commit 6f95925e99

View file

@ -1,54 +1,48 @@
class DisputeStatusUpdateJob < Que::Job class DisputeStatusUpdateJob < Que::Job
def run def run
@backlog = { activated: 0, closed: 0, active_fail: [], close_fail: [] } @backlog = { 'activated': 0, 'closed': 0, 'activate_fail': [], 'close_fail': [] }
close_disputes close_disputes
activate_disputes activate_disputes
Rails.logger.info "DisputeStatusCloseJob - All done. Closed #{@backlog[:closed]} and " \ Rails.logger.info "DisputeStatusUpdateJob - All done. Closed #{@backlog[:closed]} and " \
"activated #{@backlog[:closed]} disputes." "activated #{@backlog[:closed]} disputes."
show_failed_disputes unless @backlog[:active_fail].empty? && @backlog[:close_fail].empty? show_failed_disputes unless @backlog[:activate_fail].empty? && @backlog[:close_fail].empty?
end end
def close_disputes def close_disputes
disputes = Dispute.where(closed: false).where('expires_at < ?', Time.zone.today).all disputes = Dispute.where(closed: false).where('expires_at < ?', Time.zone.today).all
Rails.logger.info "DisputeStatusCloseJob - Found #{disputes.count} closable disputes" Rails.logger.info "DisputeStatusUpdateJob - Found #{disputes.count} closable disputes"
disputes.each do |dispute| disputes.each do |dispute|
close_dispute(dispute) process_dispute(dispute, closing: true)
end end
end end
def activate_disputes def activate_disputes
disputes = Dispute.where(closed: false, starts_at: Time.zone.today).all disputes = Dispute.where(closed: false, starts_at: Time.zone.today).all
Rails.logger.info "DisputeStatusCloseJob - Found #{disputes.count} activatable disputes" Rails.logger.info "DisputeStatusUpdateJob - Found #{disputes.count} activatable disputes"
disputes.each do |dispute| disputes.each do |dispute|
activate_dispute(dispute) process_dispute(dispute, closing: false)
end end
end end
def close_dispute(dispute) def process_dispute(dispute, closing: false)
if dispute.close intent = closing ? 'close' : 'activate'
Rails.logger.info 'DisputeStatusCloseJob - Closed dispute ' \ success = closing ? dispute.close : dispute.generate_data
"##{dispute.id} for '#{dispute.domain_name}'" create_backlog_entry(dispute: dispute, intent: intent, successful: success)
@backlog[:closed] += 1
else
Rails.logger.info 'DisputeStatusCloseJob - Failed to close dispute ' \
"##{dispute.id} for '#{dispute.domain_name}'"
@backlog[:close_fail] << dispute.id
end
end end
def activate_dispute(dispute) def create_backlog_entry(dispute:, intent:, successful:)
if dispute.generate_data if successful
Rails.logger.info 'DisputeStatusCloseJob - Activated dispute ' \ @backlog["#{intent}d"] << dispute.id
"##{dispute.id} for '#{dispute.domain_name}'" Rails.logger.info "DisputeStatusUpdateJob - #{intent}d dispute " \
@backlog[:activated] += 1 " for '#{dispute.domain_name}'"
else else
Rails.logger.info 'DisputeStatusCloseJob - Failed to activate dispute ' \ @backlog["#{intent}_fail"] << dispute.id
"##{dispute.id} for '#{dispute.domain_name}'" Rails.logger.info 'DisputeStatusUpdateJob - Failed to' \
@backlog[:active_fail] << dispute.id "#{intent} dispute for '#{dispute.domain_name}'"
end end
end end
@ -58,9 +52,9 @@ class DisputeStatusUpdateJob < Que::Job
"#{@backlog[:close_fail]}") "#{@backlog[:close_fail]}")
end end
return unless @backlog[:active_fail].any? return unless @backlog[:activate_fail].any?
Rails.logger.info('DisputeStatuseCloseJob - Failed to activate disputes with Ids:' \ Rails.logger.info('DisputeStatuseCloseJob - Failed to activate disputes with Ids:' \
"#{@backlog[:active_fail]}") "#{@backlog[:activate_fail]}")
end end
end end