SHARE
TWEET

Untitled

a guest Oct 20th, 2019 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const  editAuthorizationCode = () => {};
  2. const  setAirlineFeeCurrency = () => {};
  3. const  isItemInList = () => {};
  4. const  removeItemFromList = () => {};
  5. const  addItemToList = () => {};
  6. const  getProviderBookingsInfos = () => {};
  7. const  addAirlineFee = () => {};
  8. const  removeAirlineFee = () => {};
  9. const  editAirlineFee = () => {};
  10. const  validate = () => {};
  11. const  hasAnyInputTypes = () => {};
  12.   const getChecklist = () => {};
  13. const  toggleChecklistItem = () => {};
  14. // eslint-disable-next-line import/prefer-default-export
  15. const refundMachine = Machine(
  16.   {
  17.     id: "refundWizard",
  18.     initial: "selectReason",
  19.     states: {
  20.       selectReason: {
  21.         on: {
  22.           NEXT: [
  23.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  24.             { target: "selectSegments", cond: "shouldSelectSegments" },
  25.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  26.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  27.             { target: "selectProducts", cond: "shouldSelectProducts" },
  28.             { target: "confirm", cond: "shouldUseConfirm" },
  29.           ],
  30.           SET_REFUND_TYPE: {
  31.             actions: assign((context, { refundType }) => ({
  32.               refundType,
  33.               selectedReason: null,
  34.               checklist: [],
  35.             })),
  36.           },
  37.           SET_SELECTED_REASON: {
  38.             actions: assign((context, { selectedReason }) => ({
  39.               selectedReason,
  40.               checklist: getChecklist(selectedReason),
  41.             })),
  42.           },
  43.           EDIT_CONTACT_NAME: {
  44.             actions: assign((context, { contactName }) => ({
  45.               contactName,
  46.             })),
  47.           },
  48.         },
  49.         meta: {
  50.           title: "Select reason",
  51.         },
  52.       },
  53.       selectTravelers: {
  54.         on: {
  55.           NEXT: [
  56.             { target: "selectSegments", cond: "shouldSelectSegments" },
  57.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  58.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  59.             { target: "selectProducts", cond: "shouldSelectProducts" },
  60.             { target: "confirm", cond: "shouldUseConfirm" },
  61.           ],
  62.           PREV: [{ target: "selectReason" }],
  63.           TOGGLE_TRAVELER: {
  64.             actions: assign((context, { id }) => ({
  65.               travelers: isItemInList(context.travelers, id)
  66.                 ? removeItemFromList(context.travelers, id)
  67.                 : addItemToList(context.travelers, id),
  68.             })),
  69.           },
  70.           TOGGLE_ALL_TRAVELERS: {
  71.             actions: assign((context, { travelers }) => ({
  72.               travelers,
  73.             })),
  74.           },
  75.         },
  76.         meta: {
  77.           title: "Select passengers",
  78.         },
  79.       },
  80.       selectSegments: {
  81.         on: {
  82.           NEXT: [
  83.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  84.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  85.             { target: "selectProducts", cond: "shouldSelectProducts" },
  86.             { target: "confirm", cond: "shouldUseConfirm" },
  87.           ],
  88.           PREV: [
  89.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  90.             { target: "selectReason" },
  91.           ],
  92.           SET_SEGMENTS: {
  93.             actions: assign((context, { segments, providerBookingIds }) => ({
  94.               segments,
  95.               providerBookingInfos: getProviderBookingsInfos(
  96.                 context,
  97.                 providerBookingIds,
  98.               ),
  99.             })),
  100.           },
  101.         },
  102.         meta: {
  103.           title: "Select segments",
  104.         },
  105.       },
  106.       addAirlineFees: {
  107.         on: {
  108.           NEXT: [
  109.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  110.             { target: "selectProducts", cond: "shouldSelectProducts" },
  111.             { target: "confirm", cond: "shouldUseConfirm" },
  112.           ],
  113.           PREV: [
  114.             { target: "selectSegments", cond: "shouldSelectSegments" },
  115.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  116.             { target: "selectReason" },
  117.           ],
  118.           ADD_AIRLINE_FEE: {
  119.             actions: assign((context, { providerBookingId }) => ({
  120.               providerBookingInfos: addAirlineFee(context, providerBookingId),
  121.             })),
  122.           },
  123.           REMOVE_AIRLINE_FEE: {
  124.             actions: assign((context, { providerBookingId, id }) => ({
  125.               providerBookingInfos: removeAirlineFee(
  126.                 context,
  127.                 providerBookingId,
  128.                 id,
  129.               ),
  130.             })),
  131.           },
  132.           EDIT_AIRLINE_FEE: {
  133.             actions: assign((context, { providerBookingId, id, value }) => ({
  134.               providerBookingInfos: editAirlineFee(
  135.                 context,
  136.                 providerBookingId,
  137.                 id,
  138.                 value,
  139.               ),
  140.             })),
  141.           },
  142.           SET_AIRLINE_FEE_CURRENCY: {
  143.             actions: assign((context, { providerBookingId, id, currency }) => ({
  144.               providerBookingInfos: setAirlineFeeCurrency(
  145.                 context,
  146.                 providerBookingId,
  147.                 id,
  148.                 currency,
  149.               ),
  150.             })),
  151.           },
  152.         },
  153.         meta: {
  154.           title: "Airline fees",
  155.         },
  156.       },
  157.       addMiscInformation: {
  158.         on: {
  159.           NEXT: [
  160.             { target: "selectProducts", cond: "shouldSelectProducts" },
  161.             { target: "confirm", cond: "shouldUseConfirm" },
  162.           ],
  163.           PREV: [
  164.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  165.             { target: "selectSegments", cond: "shouldSelectSegments" },
  166.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  167.             { target: "selectReason" },
  168.           ],
  169.           EDIT_HANDLING_FEE: {
  170.             actions: assign((context, { handlingFee }) => ({
  171.               handlingFee,
  172.             })),
  173.           },
  174.           EDIT_TOTAL_FEE_TO_PAX: {
  175.             actions: assign((context, { totalFeeToPax }) => ({
  176.               totalFeeToPax,
  177.             })),
  178.           },
  179.           EDIT_BANK_ACCOUNT_NUMBER: {
  180.             actions: assign((context, { bankAccountNumber }) => ({
  181.               bankAccountNumber,
  182.             })),
  183.           },
  184.           EDIT_OTHER_INFO: {
  185.             actions: assign((context, { otherInfo }) => ({
  186.               otherInfo,
  187.             })),
  188.           },
  189.           EDIT_AUTHORIZATION_CODE: {
  190.             actions: assign(
  191.               (context, { providerBookingId, authorizationCode }) => ({
  192.                 providerBookingInfos: editAuthorizationCode(
  193.                   context,
  194.                   providerBookingId,
  195.                   authorizationCode,
  196.                 ),
  197.               }),
  198.             ),
  199.           },
  200.         },
  201.         meta: {
  202.           title: "Fill out information",
  203.         },
  204.       },
  205.       selectProducts: {
  206.         on: {
  207.           NEXT: [{ target: "confirm", cond: "shouldUseConfirm" }],
  208.           PREV: [
  209.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  210.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  211.             { target: "selectSegments", cond: "shouldSelectSegments" },
  212.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  213.             { target: "selectReason" },
  214.           ],
  215.           TOGGLE_ALL_PRODUCTS: {
  216.             actions: assign((context, { selectedProducts }) => ({
  217.               selectedProducts,
  218.             })),
  219.           },
  220.           TOGGLE_PRODUCT: {
  221.             actions: assign(({ selectedProducts }, { id }) => ({
  222.               selectedProducts: isItemInList(selectedProducts, id)
  223.                 ? removeItemFromList(selectedProducts, id)
  224.                 : addItemToList(selectedProducts, id),
  225.             })),
  226.           },
  227.         },
  228.         meta: {
  229.           title: "Select ancillary products",
  230.         },
  231.       },
  232.       confirm: {
  233.         on: {
  234.           NEXT: {
  235.             target: "completed",
  236.             cond: "checklistOK",
  237.           },
  238.           PREV: [
  239.             { target: "selectProducts", cond: "shouldSelectProducts" },
  240.             { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
  241.             { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
  242.             { target: "selectSegments", cond: "shouldSelectSegments" },
  243.             { target: "selectTravelers", cond: "shouldSelectTravelers" },
  244.             { target: "selectReason" },
  245.           ],
  246.           TOGGLE_CHECKLIST_ITEM: {
  247.             actions: assign((context, { value }) => ({
  248.               checklist: toggleChecklistItem(context, value),
  249.             })),
  250.           },
  251.         },
  252.         meta: {
  253.           title: "Confirm",
  254.         },
  255.       },
  256.       completed: {
  257.         type: "final",
  258.         meta: {
  259.           title: "Completed",
  260.         },
  261.       },
  262.     },
  263.     context: {
  264.       refundType: "ORDER_CHANGE_REASON",
  265.       selectedReason: null,
  266.       contactName: "",
  267.       travelers: [],
  268.       selectedProducts: [],
  269.       handlingFee: "",
  270.       totalFeeToPax: "",
  271.       bankAccountNumber: "",
  272.       authorization: "",
  273.       otherInfo: "",
  274.       checklist: [],
  275.       segments: null,
  276.       providerBookingInfos: [],
  277.     },
  278.     on: {
  279.       SET_SEGMENTS: {
  280.         actions: assign((context, { segments, providerBookingIds }) => ({
  281.           segments,
  282.           providerBookingInfos: getProviderBookingsInfos(
  283.             context,
  284.             providerBookingIds,
  285.           ),
  286.         })),
  287.       },
  288.     },
  289.   },
  290.   {
  291.     guards: {
  292.       shouldSelectTravelers: (context, { currentPage }) =>
  293.         validate(context, currentPage) &&
  294.         hasAnyInputTypes(context, "PASSENGER"),
  295.       shouldSelectSegments: (context, { currentPage }) =>
  296.         validate(context, currentPage) && hasAnyInputTypes(context, "SEGMENT"),
  297.       shouldAddAirlineFees: (context, { currentPage }) =>
  298.         validate(context, currentPage) &&
  299.         hasAnyInputTypes(context, "AIRLINE_FEE"),
  300.       shouldAddMiscInformation: (context, { currentPage }) =>
  301.         validate(context, currentPage) &&
  302.         hasAnyInputTypes(
  303.           context,
  304.           "OUR_HANDLING_FEE",
  305.           "TOTAL_REFUND_AMOUNT_TO_PAX",
  306.           "BANK_ACCOUNT_NUMBER",
  307.           "AUTHORIZATION_CODE",
  308.           "NOTES",
  309.         ),
  310.       shouldSelectProducts: (context, { currentPage }) =>
  311.         validate(context, currentPage) &&
  312.         hasAnyInputTypes(context, "ANCILLARY_PRODUCTS_TO_REFUND"),
  313.       shouldUseConfirm: (context, { currentPage }) =>
  314.         validate(context, currentPage),
  315.       checklistOK: (context, { currentPage }) => validate(context, currentPage),
  316.     },
  317.   },
  318. );
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top