Class: Gillbus::TicketsBooking::Request::Passenger

Inherits:
BaseRequest
  • Object
show all
Defined in:
lib/gillbus/tickets_booking.rb

Overview

not a request, just a record for BookTickets

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseRequest

#initialize, #method, #path

Constructor Details

This class inherits a constructor from Gillbus::BaseRequest

Instance Attribute Details

#birthdayObject

passenger0birthday… passengerNbirthday (обязательный для авиаперевозки) Дата рождения пассажира с порядковым номером 0…N.



102
103
104
# File 'lib/gillbus/tickets_booking.rb', line 102

def birthday
  @birthday
end

#citizenshipObject

passenger0citizenship… passengerNcitizenship (обязательный для авиаперевозки) Гражданство пассажира с порядковым номером 0…N. 2-х буквенный код страны, пример, Украина – UA.



153
154
155
# File 'lib/gillbus/tickets_booking.rb', line 153

def citizenship
  @citizenship
end

#discountObject

passenger0discountValue… passengerNdiscountValue (не обязательный) Величина скидки в валюте продажи для пассажира с порядковым номером 0…N.



161
162
163
# File 'lib/gillbus/tickets_booking.rb', line 161

def discount
  @discount
end

#document_typeObject

passenger0documentType… passengerNdocumentType (не обязательный) Тип удостоверения личности (для определения типа документа, номер которого передан в параметре passport). Возможные значения: :passport 1 - паспорт :military_card 2 - военный билет :foreign_document 3 - иностранный документ :foreign_passport 4 - заграничный паспорт :seaman_passport 6 - паспорт моряка :birth_certificate 7 - свидетельство о рождении :ussr_passport 8 - паспорт формы СССР :tax_id 9 - CPF для WL Бразилии



141
142
143
# File 'lib/gillbus/tickets_booking.rb', line 141

def document_type
  @document_type
end

#first_nameObject

passenger0firstName… passengerNfirstName (не обязательный) Имя пассажира с порядковым номером 0…N.



110
111
112
# File 'lib/gillbus/tickets_booking.rb', line 110

def first_name
  @first_name
end

#genderObject

passenger0gender… passengerNgender (обязательный для авиаперевозки) Пол пассажира с порядковым номером 0…N. M – мужской, F – женский.



157
158
159
# File 'lib/gillbus/tickets_booking.rb', line 157

def gender
  @gender
end

#insurance_costObject

Returns the value of attribute insurance_cost.



174
175
176
# File 'lib/gillbus/tickets_booking.rb', line 174

def insurance_cost
  @insurance_cost
end

#insurance_idObject

Returns the value of attribute insurance_id.



173
174
175
# File 'lib/gillbus/tickets_booking.rb', line 173

def insurance_id
  @insurance_id
end

#isicObject

passenger0ISIC…passengerNISIC (не обязательный) Номер ISIC пассажира с порядковым номером 0…N.



106
107
108
# File 'lib/gillbus/tickets_booking.rb', line 106

def isic
  @isic
end

#last_nameObject

passenger0lastName… passengerNlastName (не обязательный) Фамилия пассажира с порядковым номером 0…N.



114
115
116
# File 'lib/gillbus/tickets_booking.rb', line 114

def last_name
  @last_name
end

#luggageObject

passenger0baggageCount… passengerNbaggageCount (не обязательный) На рейс без сегментов Количество мест багажа для пассажира с порядковым номером 0…N.



166
167
168
# File 'lib/gillbus/tickets_booking.rb', line 166

def luggage
  @luggage
end

#passportObject

passenger0passport… passengerNpassport (обязательный для авиаперевозки) Паспортные данные пассажира с порядковым номером 0…N.



145
146
147
# File 'lib/gillbus/tickets_booking.rb', line 145

def passport
  @passport
end

#passport_expire_dateObject

passenger0passportExpireDate… passengerNpassportExpireDate (обязательный для авиаперевозки) Дата окончания действия паспорта пассажира с порядковым номером 0…N.



149
150
151
# File 'lib/gillbus/tickets_booking.rb', line 149

def passport_expire_date
  @passport_expire_date
end

#second_nameObject

passenger0middleName… passengerNmiddleName (не обязательный) Отчество пассажира с порядковым номером 0…N.



118
119
120
# File 'lib/gillbus/tickets_booking.rb', line 118

def second_name
  @second_name
end

#segments_luggageObject

passenger0segment0baggageCount… passengerNsegmentMbaggageCount На рейс с сегментами Количество мест багажа для пассажира 0…N на сегмент 0…M



171
172
173
# File 'lib/gillbus/tickets_booking.rb', line 171

def segments_luggage
  @segments_luggage
end

#tariff_costObject

passenger0tariffCost… passengerNtariffCost (не обязательный) Стоимость тарифа, полученное при поиске рейсов в списке тарифов, с кратким обозначением passenger0tariffShortName с порядковым номером 0…N.



128
129
130
# File 'lib/gillbus/tickets_booking.rb', line 128

def tariff_cost
  @tariff_cost
end

#tariff_short_nameObject

passenger0tariffShortName… passengerNtariffShortName (не обязательный) Краткое обозначение тарифа, полученное при поиске рейсов в списке тарифов, по указанным passenger0studentTicket, passenger0birthday, passenger0ISIC.



123
124
125
# File 'lib/gillbus/tickets_booking.rb', line 123

def tariff_short_name
  @tariff_short_name
end

Instance Method Details

#document_type_to_int(value) ⇒ Object



207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/gillbus/tickets_booking.rb', line 207

def document_type_to_int(value)
  {
    passport: 1,
    military_card: 2,
    foreign_document: 3,
    foreign_passport: 4,
    seaman_passport: 6,
    birth_certificate: 7,
    ussr_passport: 8,
    tax_id: 9,
  }[value.try(:to_sym)]
end

#params(prefix = '') ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/gillbus/tickets_booking.rb', line 176

def params(prefix = '')
  # [0, 1] => {'segment0baggageCount' => 0, 'segment1baggageCount' => 1}
  prepared_segments_luggage =
    if segments_luggage
      segments_luggage.map.with_index do |luggage_count, index|
        ["segment#{index}baggageCount".to_sym, luggage_count]
      end.to_h
    else
      {}
    end
  compact(
    birthday: date(birthday),
    ISIC: isic,
    firstName: first_name,
    lastName: last_name,
    middleName: second_name,
    tariffShortName: tariff_short_name,
    tariffCost: tariff_cost,
    documentType: document_type_to_int(document_type),
    passport: passport,
    passportExpireDate: passport_expire_date,
    citizenship: citizenship,
    gender: gender,
    discountValue: discount.to_f.to_s,
    insuranceId: insurance_id,
    insurance: insurance_cost,
    baggageCount: luggage&.first, # luggage используется для односегментных
    **prepared_segments_luggage,
  ).map { |k, v| [:"#{prefix}#{k}", v] }.to_h
end