class PrioTicket::Reservation
Describes a Reservation
@author [henkm]
Attributes
booking_details[RW]
booking_status[RW]
cancellation_date_time[RW]
distributor_id[RW]
distributor_reference[RW]
from_date_time[RW]
identifier[RW]
pickup_point_id[RW]
reservation_reference[RW]
ticket_id[RW]
to_date_time[RW]
Public Class Methods
cancel(distributor_id: nil, reservation_reference: nil, distributor_reference: nil, identifier: nil)
click to toggle source
# File lib/prioticket/reservation.rb, line 59 def self.cancel(distributor_id: nil, reservation_reference: nil, distributor_reference: nil, identifier: nil) reservation = PrioTicket::Reservation.new( distributor_id: distributor_id, reservation_reference: reservation_reference, distributor_reference: distributor_reference, identifier: identifier ) reservation.cancel return reservation end
new(args)
click to toggle source
# File lib/prioticket/reservation.rb, line 22 def initialize(args) return if args.nil? args.each do |k,v| PrioTicket.parse_json_value(self, k,v) end end
Public Instance Methods
cancel()
click to toggle source
Cancels the current reservation
@return <Reservation>
# File lib/prioticket/reservation.rb, line 54 def cancel result = PrioTicket::API.call(cancel_request_body, identifier) parse_result(result) end
cancelled()
click to toggle source
# File lib/prioticket/reservation.rb, line 37 def cancelled booking_status == "Cancelled" || cancellation_date_time end
save()
click to toggle source
Sends the reservation request tot the API
# File lib/prioticket/reservation.rb, line 46 def save request_reservation end
success()
click to toggle source
# File lib/prioticket/reservation.rb, line 29 def success booking_status == "Reserved" end
Also aliased as: cancelled?
Private Instance Methods
cancel_request_body()
click to toggle source
Computes the request body to send to the API
cancel_reserve endpoint
# File lib/prioticket/reservation.rb, line 100 def cancel_request_body { request_type: "cancel_reserve", data: { distributor_id: distributor_id, reservation_reference: reservation_reference, distributor_reference: distributor_reference } } end
parse_result(result)
click to toggle source
Parses the return value from the API
`{“response_type”=>“reserve”, “data”=> {“reservation_reference”=>“1522065689487477”, “distributor_reference”=>“TEST_RESERVATION”, “booking_status”=>“Reserved”}}`
@return [type] [description]
# File lib/prioticket/reservation.rb, line 90 def parse_result(result) self.booking_status = result["data"]["booking_status"] self.reservation_reference = result["data"]["reservation_reference"] if result["data"]["cancellation_date_time"] PrioTicket.parse_json_value(self, :cancellation_date_time, result["data"]["cancellation_date_time"]) end end
request_body()
click to toggle source
Computes the request body to send to the API
endpoint @param distributor_id
Integer @param ticket_id
Integer @param from_date String @param until_date String
@return Hash
# File lib/prioticket/reservation.rb, line 119 def request_body booking_details_array = booking_details.to_a.map{|bd| bd.to_h} body = { request_type: "reserve", data: { distributor_id: distributor_id.to_s, ticket_id: ticket_id.to_s, from_date_time: PrioTicket.parsed_date(from_date_time), to_date_time: PrioTicket.parsed_date(to_date_time), booking_details: booking_details_array, distributor_reference: distributor_reference } } # add pickuppoint to body, if present body[:data][:pickup_point_id] = pickup_point_id if pickup_point_id return body end
request_reservation()
click to toggle source
Sends the reservation request to the API
endpoint and enriches current object with status and reference.
# File lib/prioticket/reservation.rb, line 76 def request_reservation result = PrioTicket::API.call(request_body, identifier) parse_result(result) end