Class: Tapsilat::OrderResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/tapsilat/orders.rb

Overview

Order response wrapper class to handle API response data

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response_data) ⇒ OrderResponse



449
450
451
452
453
454
455
456
457
458
459
460
461
462
# File 'lib/tapsilat/orders.rb', line 449

def initialize(response_data)
  @data = case response_data
          when String
            begin
              JSON.parse(response_data)
            rescue JSON::ParserError => e
              raise OrderError, "Invalid JSON response: #{e.message}"
            end
          when Hash
            response_data
          else
            raise OrderError, "Invalid response data type: #{response_data.class}"
          end
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



447
448
449
# File 'lib/tapsilat/orders.rb', line 447

def data
  @data
end

Instance Method Details

#amountObject



476
477
478
# File 'lib/tapsilat/orders.rb', line 476

def amount
  @data['amount']&.to_f
end

#basket_itemsObject



524
525
526
# File 'lib/tapsilat/orders.rb', line 524

def basket_items
  @data['basket_items'] || []
end

#billing_addressObject



520
521
522
# File 'lib/tapsilat/orders.rb', line 520

def billing_address
  @data['billing_address']
end

#buyerObject



512
513
514
# File 'lib/tapsilat/orders.rb', line 512

def buyer
  @data['buyer']
end

#cancelled?Boolean



565
566
567
# File 'lib/tapsilat/orders.rb', line 565

def cancelled?
  status == 8
end

#checkout_designObject



528
529
530
# File 'lib/tapsilat/orders.rb', line 528

def checkout_design
  @data['checkout_design']
end

#checkout_urlObject



544
545
546
# File 'lib/tapsilat/orders.rb', line 544

def checkout_url
  @data['checkout_url']
end

#completed?Boolean



569
570
571
# File 'lib/tapsilat/orders.rb', line 569

def completed?
  status == 9
end

#conversation_idObject



548
549
550
# File 'lib/tapsilat/orders.rb', line 548

def conversation_id
  @data['conversation_id']
end

#created_atObject



492
493
494
# File 'lib/tapsilat/orders.rb', line 492

def created_at
  @data['created_at']
end

#currencyObject



496
497
498
# File 'lib/tapsilat/orders.rb', line 496

def currency
  @data['currency']
end

#external_reference_idObject



472
473
474
# File 'lib/tapsilat/orders.rb', line 472

def external_reference_id
  @data['external_reference_id']
end

#failed?Boolean



581
582
583
# File 'lib/tapsilat/orders.rb', line 581

def failed?
  [11, 12, 13].include?(status)
end

#localeObject



464
465
466
# File 'lib/tapsilat/orders.rb', line 464

def locale
  @data['locale']
end

#metadataObject



556
557
558
# File 'lib/tapsilat/orders.rb', line 556

def 
  @data['metadata'] || []
end

#paid?Boolean

Helper methods for common checks



561
562
563
# File 'lib/tapsilat/orders.rb', line 561

def paid?
  status == 3
end


484
485
486
# File 'lib/tapsilat/orders.rb', line 484

def paid_amount
  @data['paid_amount']&.to_f
end

#payment_failure_urlObject



536
537
538
# File 'lib/tapsilat/orders.rb', line 536

def payment_failure_url
  @data['payment_failure_url']
end

#payment_optionsObject



552
553
554
# File 'lib/tapsilat/orders.rb', line 552

def payment_options
  @data['payment_options'] || []
end

#payment_success_urlObject



540
541
542
# File 'lib/tapsilat/orders.rb', line 540

def payment_success_url
  @data['payment_success_url']
end

#payment_termsObject



532
533
534
# File 'lib/tapsilat/orders.rb', line 532

def payment_terms
  @data['payment_terms'] || []
end

#pending_payment?Boolean



577
578
579
# File 'lib/tapsilat/orders.rb', line 577

def pending_payment?
  [2, 7].include?(status)
end

#reference_idObject



468
469
470
# File 'lib/tapsilat/orders.rb', line 468

def reference_id
  @data['reference_id']
end

#refunded?Boolean



573
574
575
# File 'lib/tapsilat/orders.rb', line 573

def refunded?
  [10, 15].include?(status)
end

#refunded_amountObject



488
489
490
# File 'lib/tapsilat/orders.rb', line 488

def refunded_amount
  @data['refunded_amount']&.to_f
end

#shipping_addressObject



516
517
518
# File 'lib/tapsilat/orders.rb', line 516

def shipping_address
  @data['shipping_address']
end

#statusObject



500
501
502
# File 'lib/tapsilat/orders.rb', line 500

def status
  @data['status']&.to_i
end

#status_enumObject



508
509
510
# File 'lib/tapsilat/orders.rb', line 508

def status_enum
  @data['status_enum']
end

#status_textObject



504
505
506
# File 'lib/tapsilat/orders.rb', line 504

def status_text
  Orders::ORDER_STATUS[status] || 'Unknown'
end

#to_hObject



595
596
597
# File 'lib/tapsilat/orders.rb', line 595

def to_h
  @data
end

#to_json(*args) ⇒ Object



599
600
601
# File 'lib/tapsilat/orders.rb', line 599

def to_json(*args)
  @data.to_json(*args)
end

#totalObject



480
481
482
# File 'lib/tapsilat/orders.rb', line 480

def total
  @data['total']&.to_f
end

#total_paid_amount_from_itemsObject

Get total paid amount from basket items



591
592
593
# File 'lib/tapsilat/orders.rb', line 591

def total_paid_amount_from_items
  basket_items.sum { |item| item['paid_amount'].to_f }
end

#total_refundable_amountObject

Get total refundable amount from basket items



586
587
588
# File 'lib/tapsilat/orders.rb', line 586

def total_refundable_amount
  basket_items.sum { |item| item['refundable_amount'].to_f }
end