Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BaseConverter
- require 'yaml'
- require 'fastercsv'
- class << self
- def base_converter(file, import_type, dealership = nil, delete = false, &block)
- ldi = nil
- SanitizedDealershipListing.delete_all("listing_manager = '#{file}'") if delete
- @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)
- @data_input_configuration = YAML.load(File.read('config/data_input_configuration.yml'))[import_type]
- all_lines = File.readlines("data_scripts/dealership_data/raw_data/"+file)
- data_headings = ImportTypeTools.parse_line(all_lines[0].strip)
- upillar_headings = @data_input_configuration.keys.to_a.sort
- log_file = File.open("log/import.log", "w")
- log_file.puts "#{Time.now.to_upillar_datetime}: Converting #{file}"
- all_lines[1..all_lines.size].each do |line|
- line_data = ImportTypeTools.parse_line(line)
- if line_data.size < data_headings.size
- log_file.puts "#{Time.now.to_upillar_datetime}: Error converting #{line_data.join('|')}"
- next
- end
- @all_data = {}
- data_headings.each_with_index{|key, index|
- @all_data[key] = line_data[index]
- }
- #run block here.
- if block
- instance_eval(&block)
- end
- @all_data[@data_input_configuration['Transmission']] = case @all_data[@data_input_configuration['Transmission']].downcase
- when /automatic/i, 'a'
- "Automatic"
- when /manual/i, 'm'
- "Manual"
- else
- @all_data[@data_input_configuration['Transmission']]
- end
- @all_data[@data_input_configuration['Condition']] = case @all_data[@data_input_configuration['Condition']].downcase
- when '1', 'used', 'u'
- "used"
- else
- 'new'
- end
- #Intelligent color parsing
- if @all_data[@data_input_configuration['Color']].blank?
- @all_data[@data_input_configuration['Color']] = @colors.find{|color| @all_data[@data_input_configuration['ColorDescription']].downcase.include?(color.downcase)} || "N/A"
- else
- @all_data[@data_input_configuration['ColorDescription']] = @all_data[@data_input_configuration['Color']].strip unless @all_data[@data_input_configuration['ColorDescription']].blank?
- @all_data[@data_input_configuration['Color']] = @colors.find{|color| @all_data[@data_input_configuration['Color']].downcase.include?(color.downcase)} || "N/A"
- end
- @all_data = dealership.set_contact_info(@all_data, @data_input_configuration, dealership) unless dealership.nil?
- line_hash = {:listing_manager => file}
- upillar_headings.each{|heading| line_hash[heading.underscore] = @all_data[@data_input_configuration[heading]]}
- if ldi.blank?
- ldi = LoadDataIn.new(line_hash)
- else
- ldi.add_values(line_hash)
- end
- end
- ldi.save
- log_file.close
- end
- end
- end
- class Upillar < BaseConverter
- class << self
- def convert(file = "upillar.txt", dealership = nil, delete = false)
- base_converter(file, "upillar", dealership, delete)
- end
- end
- end
- class Autobase < BaseConverter
- class << self
- def convert(file = "autobase.txt", dealership = nil, delete = false)
- base_converter(file, "autobase", dealership, delete)
- end
- end
- end
Add Comment
Please, Sign In to add comment