class G5::Jobbing::JobStatRetriever

Attributes

rollup_by[RW]

Public Class Methods

new(params={}) click to toggle source
# File lib/g5/jobbing/job_stat_retriever.rb, line 6
def initialize(params={})
  self.rollup_by = params[:rollup_by]
  @job_stats     = Hash.new
end

Public Instance Methods

perform() click to toggle source
# File lib/g5/jobbing/job_stat_retriever.rb, line 11
def perform
  response = fetch_get "#{jobs_base_url}?current=true"
  roll_it_up response
end

Private Instance Methods

find_matching_job_stat(job) click to toggle source
# File lib/g5/jobbing/job_stat_retriever.rb, line 25
def find_matching_job_stat(job)
  parent = self.rollup_by.detect { |key_values| key_values.last.include?(job.location_setting_urn) }.try(:first)
  return unless parent

  job_stat_key = @job_stats.keys.detect { |js_key| parent == js_key }
  return @job_stats[job_stat_key] if job_stat_key

  job_stat           = G5::Jobbing::JobStat.new(rolled_up_by: parent, jobs: [])
  @job_stats[parent] = job_stat
  job_stat
end
roll_it_up(jobs) click to toggle source
# File lib/g5/jobbing/job_stat_retriever.rb, line 17
def roll_it_up(jobs)
  jobs.each do |job|
    job_stat = find_matching_job_stat(job)
    job_stat.jobs << job if job_stat
  end
  @job_stats
end