class SealineInsurance::Operations::CreateOrder

Public Class Methods

new( config:, product_type:, product:, options: [], ticket_number:, ticket_price:, departure_datetime:, arrival_datetime:, insured_first_name:, insured_middle_name: nil, insured_last_name:, insured_birthday:, insurer_first_name:, insurer_middle_name: nil, insurer_last_name: ) click to toggle source

rubocop:disable Metrics/ParameterLists

Calls superclass method SealineInsurance::Operations::Base::new
# File lib/sealine_insurance/operations/create_order.rb, line 7
def initialize(
  config:,
  product_type:,
  product:,
  options: [],
  ticket_number:,
  ticket_price:,
  departure_datetime:,
  arrival_datetime:,
  insured_first_name:,
  insured_middle_name: nil,
  insured_last_name:,
  insured_birthday:,
  insurer_first_name:,
  insurer_middle_name: nil,
  insurer_last_name:
)
  super(config: config)
  @product_type = product_type
  @product = product
  @options = options
  @ticket_number = ticket_number
  @ticket_price = ticket_price
  @departure_datetime = departure_datetime
  @arrival_datetime = arrival_datetime
  @insured_first_name = insured_first_name
  @insured_middle_name = insured_middle_name
  @insured_last_name = insured_last_name
  @insured_birthday = insured_birthday
  @insurer_first_name = insurer_first_name
  @insurer_middle_name = insurer_middle_name
  @insurer_last_name = insurer_last_name
end

Public Instance Methods

call() click to toggle source

rubocop:enable Metrics/ParameterLists

# File lib/sealine_insurance/operations/create_order.rb, line 42
def call
  raw_response = request.post('/order',
    product_type: @product_type,
    product: @product,
    options: @options,
    data: {
      ticket_number: @ticket_number.to_i,
      ticket_price: @ticket_price.to_i,
      departure: @departure_datetime.strftime('%Y-%m-%dT%H:%M'),
      arrival: @arrival_datetime&.strftime('%Y-%m-%dT%H:%M'),
      insured: {
        first_name: @insured_first_name,
        middle_name: @insured_middle_name,
        last_name: @insured_last_name,
        birthday: @insured_birthday.strftime('%Y-%m-%d'),
      }.reject { |k, v| v.nil? },
      insurer: {
        first_name: @insurer_first_name,
        middle_name: @insurer_middle_name,
        last_name: @insurer_last_name,
      }.reject { |k, v| v.nil? },
    },
  )
  @response = Responses::Order.new(raw_response)
  @order_id = @response.order_id
end
fetch_status!() click to toggle source
# File lib/sealine_insurance/operations/create_order.rb, line 69
def fetch_status!
  raw_response = request.get("/order/#{@order_id}")
  @response = Responses::Order.new(raw_response)
end

Private Instance Methods

finished_status_list() click to toggle source
# File lib/sealine_insurance/operations/create_order.rb, line 76
def finished_status_list
  @finished_status_list ||= [
    'ERROR',          # Ошибка
    'NEED_PAYMENT',   # Требуется оплата
  ]
end
success_status_list() click to toggle source
# File lib/sealine_insurance/operations/create_order.rb, line 83
def success_status_list
  @success_status_list ||= ['NEED_PAYMENT']
end