|
|
|
# Helper module to create ActsAsLoggable log entries for a Bike instance from a CSV row hash
|
|
|
|
class BikeCsvImporter
|
|
|
|
module Logs
|
|
|
|
def log_entry_gone(bike, bike_hash)
|
|
|
|
if clean_value(bike_hash['gone']).to_s =~ /y/i
|
|
|
|
log_entry bike, log_entry_date(clean_value(bike_hash['date out'])), 'COMPLETED', 'Gone'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_entry_acquired(bike, bike_hash)
|
|
|
|
if clean_value(bike_hash['date in'])
|
|
|
|
log_entry bike, log_entry_date(clean_value(bike_hash['date in'])), 'ACQUIRED'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_entry_comment(bike, bike_hash)
|
|
|
|
if clean_value(bike_hash['comment']).present?
|
|
|
|
log_entry bike, nil, 'NOTE', clean_value(bike_hash['comment'])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_entry_date(value)
|
|
|
|
return unless value
|
|
|
|
Date.strptime value, '%m/%d/%y' rescue nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_entry(bike, date, type, description = nil)
|
|
|
|
date ||= DateTime.now
|
|
|
|
bike_action = cached_log_bike_action(type)
|
|
|
|
|
|
|
|
ActsAsLoggable::Log.new(
|
|
|
|
loggable_type: bike.class.to_s,
|
|
|
|
loggable_id: bike.id || bike.shop_id.to_i, # for dry run
|
|
|
|
log_action_type: bike_action.class.to_s,
|
|
|
|
log_action_id: bike_action.id,
|
|
|
|
start_date: date,
|
|
|
|
end_date: date,
|
|
|
|
description: description,
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|