Class: Lease::FindSuitsService
- Inherits:
-
Object
- Object
- Lease::FindSuitsService
- Defined in:
- app/services/lease/find_suits_service.rb
Instance Attribute Summary collapse
-
#aboats_ids ⇒ Object
readonly
результат: ошибки.
-
#emails ⇒ Object
readonly
результат: ошибки.
-
#errors ⇒ Object
readonly
результат: ошибки.
-
#log ⇒ Object
readonly
результат: ошибки.
Instance Method Summary collapse
-
#initialize ⇒ FindSuitsService
constructor
A new instance of FindSuitsService.
-
#perform(inquiry, personal_boat_id = nil) ⇒ Object
вернёт false, если: * нет подходящих под заявку юзеров * нет подходящих под заявку лодок.
Constructor Details
#initialize ⇒ FindSuitsService
Returns a new instance of FindSuitsService.
10 11 12 |
# File 'app/services/lease/find_suits_service.rb', line 10 def initialize _reset_ivars end |
Instance Attribute Details
#aboats_ids ⇒ Object (readonly)
результат: ошибки
5 6 7 |
# File 'app/services/lease/find_suits_service.rb', line 5 def aboats_ids @aboats_ids end |
#emails ⇒ Object (readonly)
результат: ошибки
5 6 7 |
# File 'app/services/lease/find_suits_service.rb', line 5 def emails @emails end |
#errors ⇒ Object (readonly)
результат: ошибки
5 6 7 |
# File 'app/services/lease/find_suits_service.rb', line 5 def errors @errors end |
#log ⇒ Object (readonly)
результат: ошибки
5 6 7 |
# File 'app/services/lease/find_suits_service.rb', line 5 def log @log end |
Instance Method Details
#perform(inquiry, personal_boat_id = nil) ⇒ Object
вернёт false, если:
* нет подходящих под заявку юзеров
* нет подходящих под заявку лодок
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/lease/find_suits_service.rb', line 17 def perform(inquiry, personal_boat_id = nil) _reset_ivars @inquiry = inquiry locs1 = BoatLocation.near([inquiry.latitude, inquiry.longitude], 300, units: :km, order: false) # сначала ищем все лодки в Ш-радиусе (300км) locs2 = locs1.select { |loc| loc.radius >= loc.distance } # потом выбираем только те лодки, которые охватывают эту точку заявки boats_ids = locs2.map(&:boat_id).uniq boats = Boat.where(id: boats_ids).where(boat_type_id: inquiry.boat_type_ids).where(for_rent: 1).where(state: ::Boat::STATE_APPROVED) boats_ids = boats.map(&:id) _log 'inquiry_id = ', inquiry.id _log 'locs sql = ', locs1.to_sql _log 'boats sql = ', boats.to_sql _log 'result 1: boats_ids = ', boats_ids find_users boats_ids, personal_boat_id # 3) фильтруем найденные лодки - выбираем только те, которые имеют хозяев end |