Class: Workarea::ScheduleReviewRequests
- Inherits:
-
Object
- Object
- Workarea::ScheduleReviewRequests
- Includes:
- Sidekiq::Worker
- Defined in:
- app/workers/workarea/schedule_review_requests.rb
Instance Method Summary collapse
- #perform(order_id, shipped_items) ⇒ Object
- #schedule_requests(affected_requests, all_requests) ⇒ Object
Instance Method Details
#perform(order_id, shipped_items) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/workers/workarea/schedule_review_requests.rb', line 7 def perform(order_id, shipped_items) requests = Review::Request.by_order(order_id).to_a return if requests.all?(&:send_after) order = Order.find(order_id) product_ids = shipped_items.map do |item| order_item = order.items.detect { |i| i.id.to_s == item['id'] } order_item&.product_id end .compact schedule_requests( requests.select { |request| request.product_id.in?(product_ids) }, requests ) end |
#schedule_requests(affected_requests, all_requests) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/workers/workarea/schedule_review_requests.rb', line 25 def schedule_requests(affected_requests, all_requests) affected_requests.each do |request| next if request.send_after.present? last_scheduled = all_requests.select(&:send_after).sort_by(&:send_after).last date_to_send = if last_scheduled.present? last_scheduled.send_after + Workarea.config.review_request_secondary_delivery_delay else Workarea.config.review_request_initial_delivery_delay.from_now end request.update_attributes(send_after: date_to_send) end end |