Class: Dscf::Marketplace::DeliveryVehicle

Inherits:
ApplicationRecord show all
Defined in:
app/models/dscf/marketplace/delivery_vehicle.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ransackable_associations(_auth_object = nil) ⇒ Object



23
24
25
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 23

def self.ransackable_associations(_auth_object = nil)
  %w[driver delivery_orders documents]
end

.ransackable_attributes(_auth_object = nil) ⇒ Object

Ransack configuration for secure filtering



19
20
21
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 19

def self.ransackable_attributes(_auth_object = nil)
  %w[id driver_id plate_number vehicle_type year brand model color created_at updated_at]
end

Instance Method Details

#active_deliveriesObject



49
50
51
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 49

def active_deliveries
  delivery_orders.where.not(status: [ :delivered, :failed ])
end

#car?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 31

def car?
  vehicle_type == "car"
end

#completed_deliveriesObject



53
54
55
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 53

def completed_deliveries
  delivery_orders.where(status: :delivered)
end

#display_nameObject



43
44
45
46
47
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 43

def display_name
  brand_and_model = [ brand.presence, model.presence ].compact.join(" ")
  brand_and_model = nil if brand_and_model.blank?
  "#{brand_and_model} (#{plate_number})".strip
end

#driver_licenseObject



74
75
76
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 74

def driver_license
  driver.documents.find_by(document_type: :drivers_license)
end

#failed_deliveriesObject



57
58
59
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 57

def failed_deliveries
  delivery_orders.where(status: :failed)
end

#motorcycle?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 27

def motorcycle?
  vehicle_type == "motorcycle"
end

#success_rateObject



65
66
67
68
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 65

def success_rate
  return 0 if total_deliveries.zero?
  (completed_deliveries.count.to_f / total_deliveries * 100).round(2)
end

#total_deliveriesObject



61
62
63
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 61

def total_deliveries
  delivery_orders.count
end

#truck?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 39

def truck?
  vehicle_type == "truck"
end

#van?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 35

def van?
  vehicle_type == "van"
end

#vehicle_licenseObject



70
71
72
# File 'app/models/dscf/marketplace/delivery_vehicle.rb', line 70

def vehicle_license
  documents.find_by(document_type: :business_license)
end