vincentlowe icon

Dataweave reservations

vincentlowe | PRO | 04/20/21 10:40:52 PM UTC | 0 ⭐ | 189 👁️ | Never ⏰ | []
text |

1.57 KB

|

None

|

0 👍

/

0 👎

%dw 2.0
output application/json
import * from dw::util::Values
 import dw::modules::ComplexData
 var passengerRecords = readUrl("classpath://passengerRecords.csv", "application/csv")
 var flightsWithDetails = payload
 var joinedPassengerAndFlights  = 
dw::core::Arrays::join(
    passengerRecords as Array<Object>,
    flightsWithDetails..*flight as Array<Object>,
    (pass) ->  pass."Flight Code",
    (flight) -> flight.flightCode
)
 fun combineJoinResult(joinResult) = 
joinResult map (e,i) -> 
//e.l ++ e.r
e.l - "Flight Code" ++ {flight @(code: e.r.flightCode):( e.r )}
 var reservationsXml = ComplexData::buildXmlObject(
	combineJoinResult(joinedPassengerAndFlights),
	"reservation"
)
 fun updateAmerican (flight) = 
	flight mapObject (v,k) ->
		k match {
			case "airlineName" -> (k): dw::core::Strings::capitalize(v) ++ " Airlines"
			case "flightCode" -> (k): v
			else -> (k): v
		}
 ---
reservationsXml update {
	case lat at .reservations.*reservation.*flight.*destination.latitude ->
		lat as Number as String {format: "#,###.00"}
	case long at .reservations.*reservation.*flight.*destination.longitude ->
		long as Number as String {format: "#,###.00"}
}
update {
	case dest at .reservations.*reservation.*flight.*destination ->
		dest - "ICAO"
	case flight at .reservations.*reservation.*flight ->
		if (lower(flight.airlineName) ~= "american") updateAmerican(flight)
		else flight
}
//update {
//	case ph at .reservations.*reservation ->
//		mask field("Passenger Phone Number") with "*****"
//		
//}
                  

Comments