Class: WageStats

Inherits:
Object
  • Object
show all
Defined in:
lib/salary_croatia.rb

Constant Summary collapse

@@average_salary_hash =
{}
@@dates_hash =
{}
@@merged_hash =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#download_urlObject

Returns the value of attribute download_url.



10
11
12
# File 'lib/salary_croatia.rb', line 10

def download_url
  @download_url
end

#file_nameObject

Returns the value of attribute file_name.



10
11
12
# File 'lib/salary_croatia.rb', line 10

def file_name
  @file_name
end

Class Method Details

.convert_dates_array(dates_array) ⇒ Object




111
112
113
114
# File 'lib/salary_croatia.rb', line 111

def self.convert_dates_array(dates_array)   
  cd = ConvertDate.new
  cd.get_dates(dates_array)
end

.get_latest_average_salaryObject


Basically last month value of average national net salary



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/salary_croatia.rb', line 38

def self.get_latest_average_salary
  if File.exists?(FILE_NAME)
    self.update_stats
  end

  if @@merged_hash.empty?
    self.update_stats
    self.merge_arrays
  end
  @@average_salary_hash.values.last
end

.get_salary_for_date(date) ⇒ Object




52
53
54
55
56
57
58
59
# File 'lib/salary_croatia.rb', line 52

def self.get_salary_for_date(date)
  if @@merged_hash.empty?
    self.update_stats
    self.merge_arrays
  end
  converted_date = ConvertDate.new.transform_date(date)
  return @@merged_hash[converted_date.to_s]
end

.get_salary_historyObject



81
82
83
84
85
86
87
# File 'lib/salary_croatia.rb', line 81

def self.get_salary_history
  if @@merged_hash.empty?
    self.update_stats
    self.merge_arrays
  end
  return @@merged_hash
end

.get_year_of_salaries(year) ⇒ Object




63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/salary_croatia.rb', line 63

def self.get_year_of_salaries(year)
  if @@merged_hash.empty?
    self.update_stats
    self.merge_arrays
  end
  year_salaries = []
  @@merged_hash.values.each_with_index do |value, index|
    if @@merged_hash.keys[index].include?(year) and year.length > 3
      year_salaries << value
    end
  end

  return year_salaries
end

.merge_arraysObject




91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/salary_croatia.rb', line 91

def self.merge_arrays
  dates_array  = self.convert_dates_array(@@dates_hash.values.drop(2))
  salaries_array   = @@average_salary_hash.values.drop(2)   # Removing 2 empty cells from the start of an array
  while dates_array.size > salaries_array.size
    dates_array.pop
  end

  if dates_array.size == salaries_array.size
    @@merged_hash = DataTypeHelper.merge_arrays_into_hash(dates_array, salaries_array)
  else
    puts "Dates size: " + dates_array.size.to_s
    puts dates_array
    puts "Salary size: " + salaries_array.size.to_s
    puts salaries_array
    raise Exception.new "Arrays have different size, thus incompatible"
  end
end

.update_stats(filename = FILE_NAME, download_url = WAGE_STATISTICS_URL) ⇒ Object

class method, that is using default values for download and file_name



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/salary_croatia.rb', line 17

def self.update_stats(filename=FILE_NAME, download_url=WAGE_STATISTICS_URL)
  if !File.file?(filename) or download_url != WAGE_STATISTICS_URL
    File.open(filename, "wb") do |saved_file|
      open(download_url, "rb") do |read_file|
        saved_file.write(read_file.read)
      end
    end
    #puts "Updated stats!"
  end

  if (@@average_salary_hash.empty?)
    file_data = Creek::Book.new filename
    file_data.sheets[0].rows.each_with_index do |row, index|
      @@average_salary_hash = row if index == 75
      @@dates_hash = row if index == 6
    end
  end
end