Skip to content

Commit

Permalink
DB: add parseLoyaltyCard utility function
Browse files Browse the repository at this point in the history
Co-Authored-By: Jannis R <[email protected]>
  • Loading branch information
PaulSut and derhuerst committed Mar 12, 2024
1 parent c4966ae commit 191b9ab
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions p/db/loyalty-cards.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import {deepStrictEqual as eql} from 'node:assert';

// todo: generate from https://reiseauskunft.bahn.de/addons/fachkonfig-utf8.cfg ?
const c = {
NONE: Symbol('no loyalty card'),
Expand Down Expand Up @@ -45,7 +47,37 @@ const formatLoyaltyCard = (data) => {
return 0;
};

const parseLoyaltyCard = (cardId) => {
switch (cardId) {
case 1:
case 2: return {type: c.BAHNCARD, discount: 25, class: cardId === 1 ? 1 : 2};
case 3:
case 4: return {type: c.BAHNCARD, discount: 50, class: cardId === 3 ? 1 : 2};
case 9: return {type: c.VORTEILSCARD};
case 10:
case 11: return {type: c.HALBTAXABO, railplus: cardId === 10};
case 12:
case 13: return {type: c.VOORDEELURENABO, railplus: cardId === 12};
case 14: return {type: c.SHCARD};
case 15: return {type: c.GENERALABONNEMENT};
default: return {type: c.NONE};
}
};

const bcFirst50 = {
type: c.BAHNCARD,
class: 1,
discount: 50,
};
eql(parseLoyaltyCard(formatLoyaltyCard(bcFirst50)), bcFirst50);
const halbtaxRailplus = {
type: c.HALBTAXABO,
railplus: true,
};
eql(parseLoyaltyCard(formatLoyaltyCard(halbtaxRailplus)), halbtaxRailplus);

export {
c as data,
formatLoyaltyCard,
parseLoyaltyCard,
};

0 comments on commit 191b9ab

Please sign in to comment.