mirror of
https://github.com/fspc/BikeShed-1.git
synced 2025-02-28 08:43:23 -05:00
WIP, task for importing custom CSV of bike logs
This commit is contained in:
parent
1191f4448f
commit
53c32a357b
109
lib/tasks/import_csv.rake
Normal file
109
lib/tasks/import_csv.rake
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
namespace :import do
|
||||||
|
desc "Import a CSV list of bikes. Call via 'rake import:bikes_csv['myFilename.csv']'"
|
||||||
|
task :bikes_csv, [:filename] => :environment do |t, args|
|
||||||
|
require 'csv'
|
||||||
|
# Expected Headers:
|
||||||
|
# Shop Specific ID Number, Program Type/Purpose, Gone (Is it in the shop?),Date In,Date Out,Price/Value,Make/Brand,Model,for Whom,for Whom Zip Code,Comment
|
||||||
|
#
|
||||||
|
# 2,Shop,Yes,Missing,2/17/2008,$90,Univega,Novo Sport Chronology,Darrell Forbes,Missing,,bikes for the World,
|
||||||
|
@loggable_type = 'Bike'
|
||||||
|
@log_action_type= 'ActsAsLoggable::BikeAction'
|
||||||
|
@logger_type = 'User'
|
||||||
|
@logger_id = User.find_by_username('admin')
|
||||||
|
@acquired_log_action_id = ActsAsLoggable::BikeAction.find_by_action('ACQUIRED')
|
||||||
|
@note_log_action_id = ActsAsLoggable::BikeAction.find_by_action('NOTE')
|
||||||
|
@completed_log_action_id = ActsAsLoggable::BikeAction.find_by_action('COMPLETED')
|
||||||
|
@sold_log_action_id = ActsAsLoggable::BikeAction.find_by_action('SOLD')
|
||||||
|
|
||||||
|
@build_bike_matchers = ["build-a-bike"]
|
||||||
|
@sale_matchers = ["as-is","shop"]
|
||||||
|
@parts_matchers = ["parts"]
|
||||||
|
|
||||||
|
def create_acquired_log(bike_id, date)
|
||||||
|
ActsAsLoggable::Log.new(
|
||||||
|
loggable_type: @loggable_type,
|
||||||
|
loggable_id: bike_id,
|
||||||
|
logger_type: @logger_type
|
||||||
|
logger_id: @logger_id
|
||||||
|
log_action_type: @log_action_type
|
||||||
|
log_aciton_id: @acquired_log_aciton_id,
|
||||||
|
start_date: date,
|
||||||
|
end_date: date,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_note_log(bike_id, date, note)
|
||||||
|
ActsAsLoggable::Log.new(
|
||||||
|
loggable_type: @loggable_type,
|
||||||
|
loggable_id: bike_id,
|
||||||
|
logger_type: @logger_type
|
||||||
|
logger_id: @logger_id
|
||||||
|
log_action_type: @log_action_type
|
||||||
|
log_aciton_id: @note_log_action_id,
|
||||||
|
start_date: date,
|
||||||
|
end_date: date,
|
||||||
|
description: note,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_sold_log(bike_id, date)
|
||||||
|
ActsAsLoggable::Log.new(
|
||||||
|
loggable_type: @loggable_type,
|
||||||
|
loggable_id: bike_id,
|
||||||
|
logger_type: @logger_type
|
||||||
|
logger_id: @logger_id
|
||||||
|
log_action_type: @log_action_type
|
||||||
|
log_aciton_id: @sold_log_action_id,
|
||||||
|
start_date: date,
|
||||||
|
end_date: date,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_completed_log(bike_id, date)
|
||||||
|
ActsAsLoggable::Log.new(
|
||||||
|
loggable_type: @loggable_type,
|
||||||
|
loggable_id: bike_id,
|
||||||
|
logger_type: @logger_type
|
||||||
|
logger_id: @logger_id
|
||||||
|
log_action_type: @log_action_type
|
||||||
|
log_aciton_id: @completed_log_action_id,
|
||||||
|
start_date: date,
|
||||||
|
end_date: date,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_bike_purpose_id(purpose)
|
||||||
|
case purpose.downcase
|
||||||
|
when *@build_bike_matchers
|
||||||
|
when *@sale_matchers
|
||||||
|
when *@parts_matchers
|
||||||
|
else
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
CSV.foreach(args[:filename], headers: true) do | row |
|
||||||
|
bike_id = row["Shop Specific ID Number"]
|
||||||
|
bike_purpose_id = get_bike_purpose_id(row["Program Type/Purpose"])
|
||||||
|
bike_value = get_bike_value(row["Price/Value"])
|
||||||
|
bike_brand_id = get_bike_brand(row["Make/Brand"])
|
||||||
|
bike_model = get_bike_model(row["Model"])
|
||||||
|
|
||||||
|
bike = Bike.find_or_create_by_shop_id_and_bike_purpose_id_and_value_and_bike_brand_id_and_model(
|
||||||
|
bike_id,
|
||||||
|
bike_purpose_id,
|
||||||
|
bike_value,
|
||||||
|
bike_brand_id,
|
||||||
|
bike_model
|
||||||
|
)
|
||||||
|
|
||||||
|
#Create aquired log
|
||||||
|
#
|
||||||
|
#Create For whom log
|
||||||
|
#
|
||||||
|
#Create note/comment log
|
||||||
|
#
|
||||||
|
#Create SOLD/completed log
|
||||||
|
#
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user