mirror of
				https://github.com/fspc/BikeShed-1.git
				synced 2025-10-31 08:55:36 -04:00 
			
		
		
		
	BikeCsvImporter: add "bike_brand_id", "bike_model_id", "model"
This commit is contained in:
		
							parent
							
								
									ae8b5cccd0
								
							
						
					
					
						commit
						c171598354
					
				| @ -9,6 +9,11 @@ class BikeCsvImporter | ||||
| 
 | ||||
|   def run | ||||
|     result = {imported_count: 0, skipped_shop_ids: []} | ||||
| 
 | ||||
|     @bike_purpose_cache = {} | ||||
|     @bike_brand_cache   = {} | ||||
|     @bike_model_cache   = {} | ||||
| 
 | ||||
|     fetch do |bike_hash| | ||||
|        bike = import_bike bike_hash | ||||
|        if bike.try :persisted? | ||||
| @ -17,6 +22,13 @@ class BikeCsvImporter | ||||
|          result[:skipped_shop_ids].push bike.try(:shop_id) || bike_hash.values.first | ||||
|        end | ||||
|     end | ||||
| 
 | ||||
|     missing_brands = @bike_brand_cache.select { |_, v| v.nil? }.map(&:first) | ||||
|     result[:missing_brands] = missing_brands if missing_brands.any? | ||||
| 
 | ||||
|     missing_models = @bike_model_cache.select { |_, v| v.nil? }.map(&:first) | ||||
|     result[:missing_models] = missing_models if missing_models.any? | ||||
| 
 | ||||
|     result | ||||
|   end | ||||
| 
 | ||||
| @ -67,8 +79,8 @@ class BikeCsvImporter | ||||
|   # Date In -> Create a bike log entry with start_date & end_date with same value as "Date In". Set action_id to "AQUIRED" | ||||
|   # Date Out -> Should be the start_date & end_date value for "Gone" column mentioned above. | ||||
|   # + Price -> Bikes.value | ||||
|   # Make -> Bikes.bike_brand_id | ||||
|   # Model -> Bikes.bike_model_id | ||||
|   # + Make -> Bikes.bike_brand_id | ||||
|   # + Model -> Bikes.bike_model_id | ||||
|   # + to Whom -> ignore | ||||
|   # + Zip Code -> ignore | ||||
|   # Comment -> Create a bike log entry with action_id "NOTE". The log 'description' should be the value of 'Comment'. | ||||
| @ -82,7 +94,7 @@ class BikeCsvImporter | ||||
|   end | ||||
| 
 | ||||
|   def bike_attrs(bike_hash) | ||||
|     %i{ shop_id bike_purpose_id value }.each_with_object({}) do |field, memo| | ||||
|     %i{ shop_id bike_purpose_id value bike_brand_id bike_model_id model }.each_with_object({}) do |field, memo| | ||||
|       memo[field] = send :"bike_attr_#{ field }", bike_hash | ||||
|     end | ||||
|   end | ||||
| @ -115,6 +127,22 @@ class BikeCsvImporter | ||||
|     clean_value(bike_hash['price']).try(:gsub, /[$]/, '').try :to_i | ||||
|   end | ||||
| 
 | ||||
|   def bike_attr_bike_brand_id(bike_hash) | ||||
|     brand = clean_value(bike_hash['make']) | ||||
|     return unless brand | ||||
|     cached_bike_brand(brand).try :id | ||||
|   end | ||||
| 
 | ||||
|   def bike_attr_bike_model_id(bike_hash) | ||||
|     model = clean_value(bike_hash['model']) | ||||
|     return unless model | ||||
|     cached_bike_model(model).try :id | ||||
|   end | ||||
| 
 | ||||
|   def bike_attr_model(bike_hash) | ||||
|     clean_value bike_hash['model'] | ||||
|   end | ||||
| 
 | ||||
|   def clean_value(value) | ||||
|     value_or_nil strip_value(value) | ||||
|   end | ||||
| @ -128,7 +156,22 @@ class BikeCsvImporter | ||||
|   end | ||||
| 
 | ||||
|   def cached_bike_purpose(purpose) | ||||
|     @bike_purpose_cache           ||= {} | ||||
|     @bike_purpose_cache[purpose]  ||= BikePurpose.find_by_purpose purpose | ||||
|     @bike_purpose_cache[purpose] ||= BikePurpose.find_by_purpose purpose | ||||
|   end | ||||
| 
 | ||||
|   def cached_bike_brand(brand) | ||||
|     if @bike_brand_cache.has_key? brand | ||||
|       @bike_brand_cache[brand] | ||||
|     else | ||||
|       @bike_brand_cache[brand] = BikeBrand.where('lower(brand) = ?', brand.downcase).first | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def cached_bike_model(model) | ||||
|     if @bike_model_cache.has_key? model | ||||
|       @bike_model_cache[model] | ||||
|     else | ||||
|       @bike_model_cache[model] = BikeModel.where('lower(model) = ?', model.downcase).first | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user