mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 15:19:35 +02:00
65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
|
|
const parsePrice = (ctx, raw) => {
|
|
if (raw.angebotsPreis?.betrag) {
|
|
return {
|
|
amount: raw.angebotsPreis.betrag,
|
|
currency: raw.angebotsPreis.waehrung,
|
|
hint: null,
|
|
};
|
|
}
|
|
return undefined;
|
|
};
|
|
|
|
const parseTickets = (ctx, j) => {
|
|
if (!ctx.opt.tickets) {
|
|
return undefined;
|
|
}
|
|
let tickets = undefined;
|
|
if (j.reiseAngebote && j.reiseAngebote.length > 0) { // if refreshJourney()
|
|
tickets = j.reiseAngebote
|
|
.filter(s => s.typ == 'REISEANGEBOT' && !s.angebotsbeziehungList.flatMap(b => b.referenzen)
|
|
.find(r => r.referenzAngebotsoption == 'PFLICHT'))
|
|
.map((s) => {
|
|
const p = {
|
|
name: s.name,
|
|
priceObj: {
|
|
amount: Math.round(s.preis?.betrag * 100),
|
|
currency: s.preis?.waehrung,
|
|
},
|
|
firstClass: s.klasse == 'KLASSE_1',
|
|
partialFare: s.teilpreis,
|
|
};
|
|
if (s.teilpreis) {
|
|
p.addData = 'Teilpreis / partial fare';
|
|
}
|
|
if (s.konditionsAnzeigen) {
|
|
p.addDataTicketInfo = s.konditionsAnzeigen?.map(a => a.anzeigeUeberschrift)
|
|
.join('. ');
|
|
p.addDataTicketDetails = s.konditionsAnzeigen?.map(a => a.textLang)
|
|
.join(' ');
|
|
}
|
|
if (s.leuchtturmInfo) {
|
|
p.addDataTravelInfo = s.leuchtturmInfo?.text;
|
|
}
|
|
return p;
|
|
});
|
|
if (ctx.opt.generateUnreliableTicketUrls) {
|
|
// TODO
|
|
}
|
|
|
|
} else if (j.angebotsPreis?.betrag) { // if journeys()
|
|
tickets = [{
|
|
name: 'from',
|
|
priceObj: {
|
|
amount: Math.round(j.angebotsPreis.betrag * 100),
|
|
currency: j.angebotsPreis.waehrung,
|
|
},
|
|
}];
|
|
}
|
|
return tickets;
|
|
};
|
|
|
|
export {
|
|
parsePrice,
|
|
parseTickets,
|
|
};
|