Guest User

Untitled

a guest
Jun 23rd, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. class BaseConverter
  2. require 'yaml'
  3. require 'fastercsv'
  4. class << self
  5. def base_converter(file, import_type, dealership = nil, delete = false, &block)
  6. ldi = nil
  7. SanitizedDealershipListing.delete_all("listing_manager = '#{file}'") if delete
  8. @colors = %w(Beige Black Blue Burgundy Champagne Charcoal Cream Gold Graphite Gray Grey Green Maroon Orange Pewter Pink Purple Red Silver Tan Teal Turquoise White White-Other Yellow)
  9. @data_input_configuration = YAML.load(File.read('config/data_input_configuration.yml'))[import_type]
  10. all_lines = File.readlines("data_scripts/dealership_data/raw_data/"+file)
  11. data_headings = ImportTypeTools.parse_line(all_lines[0].strip)
  12. upillar_headings = @data_input_configuration.keys.to_a.sort
  13. log_file = File.open("log/import.log", "w")
  14. log_file.puts "#{Time.now.to_upillar_datetime}: Converting #{file}"
  15. all_lines[1..all_lines.size].each do |line|
  16. line_data = ImportTypeTools.parse_line(line)
  17. if line_data.size < data_headings.size
  18. log_file.puts "#{Time.now.to_upillar_datetime}: Error converting #{line_data.join('|')}"
  19. next
  20. end
  21. @all_data = {}
  22. data_headings.each_with_index{|key, index|
  23. @all_data[key] = line_data[index]
  24. }
  25. #run block here.
  26. if block
  27. instance_eval(&block)
  28. end
  29.  
  30. @all_data[@data_input_configuration['Transmission']] = case @all_data[@data_input_configuration['Transmission']].downcase
  31. when /automatic/i, 'a'
  32. "Automatic"
  33. when /manual/i, 'm'
  34. "Manual"
  35. else
  36. @all_data[@data_input_configuration['Transmission']]
  37. end
  38.  
  39. @all_data[@data_input_configuration['Condition']] = case @all_data[@data_input_configuration['Condition']].downcase
  40. when '1', 'used', 'u'
  41. "used"
  42. else
  43. 'new'
  44. end
  45.  
  46. #Intelligent color parsing
  47. if @all_data[@data_input_configuration['Color']].blank?
  48. @all_data[@data_input_configuration['Color']] = @colors.find{|color| @all_data[@data_input_configuration['ColorDescription']].downcase.include?(color.downcase)} || "N/A"
  49. else
  50. @all_data[@data_input_configuration['ColorDescription']] = @all_data[@data_input_configuration['Color']].strip unless @all_data[@data_input_configuration['ColorDescription']].blank?
  51. @all_data[@data_input_configuration['Color']] = @colors.find{|color| @all_data[@data_input_configuration['Color']].downcase.include?(color.downcase)} || "N/A"
  52. end
  53. @all_data = dealership.set_contact_info(@all_data, @data_input_configuration, dealership) unless dealership.nil?
  54. line_hash = {:listing_manager => file}
  55. upillar_headings.each{|heading| line_hash[heading.underscore] = @all_data[@data_input_configuration[heading]]}
  56. if ldi.blank?
  57. ldi = LoadDataIn.new(line_hash)
  58. else
  59. ldi.add_values(line_hash)
  60. end
  61. end
  62. ldi.save
  63. log_file.close
  64. end
  65. end
  66. end
  67.  
  68. class Upillar < BaseConverter
  69. class << self
  70. def convert(file = "upillar.txt", dealership = nil, delete = false)
  71. base_converter(file, "upillar", dealership, delete)
  72. end
  73. end
  74. end
  75.  
  76. class Autobase < BaseConverter
  77. class << self
  78. def convert(file = "autobase.txt", dealership = nil, delete = false)
  79. base_converter(file, "autobase", dealership, delete)
  80. end
  81. end
  82. end
Add Comment
Please, Sign In to add comment