class WolfCore::Integrations::IterateOrdersService
def build_success_result
def build_success_result Result.success( data: { page: @page, per_page: @per_page, max_page: @max_page, }.merge(build_success_result_data) ) end
def build_success_result_data
def build_success_result_data {} end
def get_page_orders
def get_page_orders 3.times { log_object '===== Starting get_page_orders =====' } query = { per_page: @per_page, page: @page, client_id: 1 } log_object query, title: 'fetching orders query params are' response = fetch_orders!( wolf_token: @wolf_token, tenant: ENV['TENANT'], query: query, wolf_platform_url: ENV['WOLF_PLATFORM_URL'], error_message: 'Failed to fetch orders', ) @total_pages = response.dig('total_pages') log_object "total_pages are #{@total_pages}" @page += 1 3.times { log_object '===== Ending get_page_orders =====' } response.dig('orders') end
def initialize(params: nil)
def initialize(params: nil) params ||= {} @page = params[:page] || 1 @per_page = params[:per_page] || 100 @max_page = params[:max_page] end
def iterate_all_orders
def iterate_all_orders begin @orders = get_page_orders @orders.each do |order| log_object '===== Processing order =====' log_object order, title: 'order is' process_order(order) end end while page_is_less_or_equal_to_last @page -= 1 end
def page_is_less_or_equal_to_last
def page_is_less_or_equal_to_last 3.times { log_object '===== Starting evaluating page_is_less_or_equal_to_last =====' } log_object "page is #{@page}" log_object "max_page is #{@max_page}" if @max_page.present? log_object "@page < @max_page is #{@page < @max_page}" return @page < @max_page end log_object "total_pages is #{@total_pages}" log_object "@page <= @total_pages is #{@page <= @total_pages}" 3.times { log_object '===== Ending evaluating page_is_less_or_equal_to_last =====' } @page <= @total_pages end
def process
def process @wolf_token = get_wolf_token iterate_all_orders build_success_result end
def process_order(order)
def process_order(order) raise_service_error({ message: 'process_order must be implemented in a subclass' }) end