diff --git a/app/models/cart_validations.rb b/app/models/cart_validations.rb index ec1af380d..acd1d5759 100644 --- a/app/models/cart_validations.rb +++ b/app/models/cart_validations.rb @@ -118,6 +118,7 @@ def check_max_ems valid = Reservation.number_for_date_range(source, start_date..due_date, equipment_model_id: model.id, overdue: false).max + valid ||= 0 # count overdue reservations for this eq model overdue = source.count { |r| r.equipment_model == model && r.overdue } @@ -153,6 +154,7 @@ def check_max_cat max = cat.maximum_per_user s = source.select { |r| r.equipment_model.category == cat } s = Reservation.number_for_date_range(s, start_date..due_date).max + s ||= 0 o = overdue.count { |r| r.equipment_model.category == cat } next unless s + o + q > max errors << "Only #{max} #{cat.name.pluralize} can be reserved at a time." diff --git a/app/models/equipment_model.rb b/app/models/equipment_model.rb index 68f898397..8ad02a570 100644 --- a/app/models/equipment_model.rb +++ b/app/models/equipment_model.rb @@ -167,9 +167,11 @@ def document_attributes=(document_attributes) def num_busy(start_date, due_date, source) # get the number busy (not able to be reserved) in the source reservations # uses 0 queries - Reservation.number_for_date_range(source, start_date..due_date, - equipment_model_id: id, - overdue: false).max + overdue_count + max = Reservation.number_for_date_range(source, start_date..due_date, + equipment_model_id: id, + overdue: false).max + max ||= 0 + max + overdue_count end def num_available(start_date, due_date, source = nil)