Current section

Files

Jump to
ndc_ex_sdk lib message seat_availability.ex
Raw

lib/message/seat_availability.ex

defmodule NDCEx.Message.SeatAvailabilityRQ do
import XmlBuilderPlus
require Logger
def yield(params), do: build(params)
defp build(params) do
[
element(:Query, params[:Query]),
element(:DataList, [
element(:FlightSegmentList, [
flight_segment(params[:DataList][:FlightSegmentList])
]),
element(:FlightList, [
flight_list(params[:DataList][:FlightList]),
]),
element(:OriginDestinationList, [
origin_destination_list(params[:DataList][:OriginDestinationList]),
])
])
]
end
defp query(params) do
element(:OriginDestination, params[:OriginDestination])
end
defp origin_destination_list(params) do
element(:OriginDestination, %{OriginDestinationKey: params[:OriginDestination][:_OriginDestinationKey]}, [
element(:DepartureCode, params[:OriginDestination][:DepartureCode]),
element(:ArrivalCode, params[:OriginDestination][:ArrivalCode])
])
end
defp flight_list(params) do
Enum.map(params, fn item ->
el = elem item, 1
element(:Flight, %{FlightKey: el[:_FlightKey]}, [
element(Journey: [
element(Time: el[:Journey][:Time])
]),
element(SegmentReferences: el[:SegmentReferences])
])
end)
end
defp flight_segment(params) do
Enum.map(params, fn item ->
el = elem item, 1
element(:FlightSegment, %{SegmentKey: el[:_SegmentKey]}, [
element(Departure: el[:Departure]),
element(Arrival: el[:Arrival]),
element(MarketingCarrier: el[:MarketingCarrier]),
element(OperatingCarrier: el[:OperatingCarrier]),
element(Equipment: el[:Equipment]),
element(ClassOfService: el[:ClassOfService]),
element(FlightDetail: el[:FlightDetail])
])
end)
end
end