Class: FedExFreightUsSchedulePickupWorker
- Inherits:
-
Object
- Object
- FedExFreightUsSchedulePickupWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/fed_ex_freight_us_schedule_pickup_worker.rb
Overview
Sidekiq worker: fed ex freight us schedule pickup.
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/workers/fed_ex_freight_us_schedule_pickup_worker.rb', line 7 def perform # find if there any qualifying FedEx Freight US shipments and ensure there is not already a pickup scheduled for today store = Store.find(1) carrier = 'FedExFreight' carrier_account_id = "fedex_freight_us_#{SHIPPING_BASE_CONFIGURATION[:fedex_account]}" pickup_date_time = Shipment.choose_carrier_pickup_date_time(carrier, store) return if store.carrier_pickup_for_datetime(carrier_account_id, pickup_date_time).present? shipments = Shipment.carrier_candidates_for_pickup(carrier) deliveries = Delivery.where(id: shipments.pluck(Arel.sql('distinct shipments.delivery_id'))).by_store_id(store.id) return unless deliveries.any? result = WyShipping.schedule_pickup(carrier, store.country.iso3.to_sym, deliveries, pickup_date_time) logger.info "#{self.class}: deliveries: #{deliveries.map { |d| d.order.reference_number }.join(', ')}, pickup_date_time: #{pickup_date_time}" logger.info "#{self.class}: result[:request_response]: #{result[:request_response]}" if result[:status_code] == :ok logger.info "#{self.class}: pickup schedule result: #{result[:status_message]}" store.set_carrier_pickup(carrier, carrier_account_id, result[:request_response], result[:confirmation_number], result[:schedule_start_datetime], result[:scheduled_end_datetime]) else logger.info "#{self.class}: pickup could not be scheduled: #{result[:status_message]}, sending e-mail to #{store.email}" Mailer.schedule_pickup_failed_email(store.email, carrier, deliveries, result[:status_message]).deliver end end |