1
0
mirror of https://github.com/fspc/bike-database.git synced 2025-02-23 17:43:22 -05:00

59 lines
1.4 KiB
Ruby
Raw Normal View History

2014-01-18 15:27:14 -06:00
class Bike < ActiveRecord::Base
2014-03-20 17:07:30 -05:00
validates :log_number, presence: true
validates :brand, presence: true
validates :model, presence: true
validates :bike_type, presence: true
validates :color, presence: true
validates :serial_number, presence: true
has_one :client
FREECYCLERY = "Freecyclery"
SALE = "Sale"
def self.bike_types
[
["BMX", "BMX"],
["Cruiser", "Cruiser"],
["Hybrid", "Hybrid"],
["Kids", "Kids"],
["Mountain", "Mountain"],
["Road", "Road"],
["Touring", "Touring"],
["Track", "Track"],
["Utility", "Utility"],
["Youth", "Youth"]
]
end
def sold?
date_sold.present?
end
def name
self.color + " " + self.brand + ' ' + self.model + " (" + self.log_number.to_s + ")"
end
2014-09-19 17:06:44 -05:00
def client
Client.find_by bike_id: self.id
end
def ready_for_pickup?
2015-10-13 18:22:18 -05:00
self.client && !client.application_voided && self.date_sold.nil?
end
def self.available_for_freecyclery
assigned_bikes = Client
.where("application_voided != ? or application_voided is null", true)
.includes(:bike)
.select{|c| !c.bike_id.nil?}.map(&:bike)
all_freecyclery_bikes = Bike.where(purpose: FREECYCLERY)
.order(log_number: :desc)
2015-10-11 13:47:40 -05:00
all_freecyclery_bikes - assigned_bikes
end
def post_to_bike_index
return true if self.bike_index_id.present?
BikeIndexLogger.perform_async(self.id)
end
2014-01-18 15:27:14 -06:00
end