Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const editAuthorizationCode = () => {};
- const setAirlineFeeCurrency = () => {};
- const isItemInList = () => {};
- const removeItemFromList = () => {};
- const addItemToList = () => {};
- const getProviderBookingsInfos = () => {};
- const addAirlineFee = () => {};
- const removeAirlineFee = () => {};
- const editAirlineFee = () => {};
- const validate = () => {};
- const hasAnyInputTypes = () => {};
- const getChecklist = () => {};
- const toggleChecklistItem = () => {};
- // eslint-disable-next-line import/prefer-default-export
- const refundMachine = Machine(
- {
- id: "refundWizard",
- initial: "selectReason",
- states: {
- selectReason: {
- on: {
- NEXT: [
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "confirm", cond: "shouldUseConfirm" },
- ],
- SET_REFUND_TYPE: {
- actions: assign((context, { refundType }) => ({
- refundType,
- selectedReason: null,
- checklist: [],
- })),
- },
- SET_SELECTED_REASON: {
- actions: assign((context, { selectedReason }) => ({
- selectedReason,
- checklist: getChecklist(selectedReason),
- })),
- },
- EDIT_CONTACT_NAME: {
- actions: assign((context, { contactName }) => ({
- contactName,
- })),
- },
- },
- meta: {
- title: "Select reason",
- },
- },
- selectTravelers: {
- on: {
- NEXT: [
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "confirm", cond: "shouldUseConfirm" },
- ],
- PREV: [{ target: "selectReason" }],
- TOGGLE_TRAVELER: {
- actions: assign((context, { id }) => ({
- travelers: isItemInList(context.travelers, id)
- ? removeItemFromList(context.travelers, id)
- : addItemToList(context.travelers, id),
- })),
- },
- TOGGLE_ALL_TRAVELERS: {
- actions: assign((context, { travelers }) => ({
- travelers,
- })),
- },
- },
- meta: {
- title: "Select passengers",
- },
- },
- selectSegments: {
- on: {
- NEXT: [
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "confirm", cond: "shouldUseConfirm" },
- ],
- PREV: [
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectReason" },
- ],
- SET_SEGMENTS: {
- actions: assign((context, { segments, providerBookingIds }) => ({
- segments,
- providerBookingInfos: getProviderBookingsInfos(
- context,
- providerBookingIds,
- ),
- })),
- },
- },
- meta: {
- title: "Select segments",
- },
- },
- addAirlineFees: {
- on: {
- NEXT: [
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "confirm", cond: "shouldUseConfirm" },
- ],
- PREV: [
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectReason" },
- ],
- ADD_AIRLINE_FEE: {
- actions: assign((context, { providerBookingId }) => ({
- providerBookingInfos: addAirlineFee(context, providerBookingId),
- })),
- },
- REMOVE_AIRLINE_FEE: {
- actions: assign((context, { providerBookingId, id }) => ({
- providerBookingInfos: removeAirlineFee(
- context,
- providerBookingId,
- id,
- ),
- })),
- },
- EDIT_AIRLINE_FEE: {
- actions: assign((context, { providerBookingId, id, value }) => ({
- providerBookingInfos: editAirlineFee(
- context,
- providerBookingId,
- id,
- value,
- ),
- })),
- },
- SET_AIRLINE_FEE_CURRENCY: {
- actions: assign((context, { providerBookingId, id, currency }) => ({
- providerBookingInfos: setAirlineFeeCurrency(
- context,
- providerBookingId,
- id,
- currency,
- ),
- })),
- },
- },
- meta: {
- title: "Airline fees",
- },
- },
- addMiscInformation: {
- on: {
- NEXT: [
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "confirm", cond: "shouldUseConfirm" },
- ],
- PREV: [
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectReason" },
- ],
- EDIT_HANDLING_FEE: {
- actions: assign((context, { handlingFee }) => ({
- handlingFee,
- })),
- },
- EDIT_TOTAL_FEE_TO_PAX: {
- actions: assign((context, { totalFeeToPax }) => ({
- totalFeeToPax,
- })),
- },
- EDIT_BANK_ACCOUNT_NUMBER: {
- actions: assign((context, { bankAccountNumber }) => ({
- bankAccountNumber,
- })),
- },
- EDIT_OTHER_INFO: {
- actions: assign((context, { otherInfo }) => ({
- otherInfo,
- })),
- },
- EDIT_AUTHORIZATION_CODE: {
- actions: assign(
- (context, { providerBookingId, authorizationCode }) => ({
- providerBookingInfos: editAuthorizationCode(
- context,
- providerBookingId,
- authorizationCode,
- ),
- }),
- ),
- },
- },
- meta: {
- title: "Fill out information",
- },
- },
- selectProducts: {
- on: {
- NEXT: [{ target: "confirm", cond: "shouldUseConfirm" }],
- PREV: [
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectReason" },
- ],
- TOGGLE_ALL_PRODUCTS: {
- actions: assign((context, { selectedProducts }) => ({
- selectedProducts,
- })),
- },
- TOGGLE_PRODUCT: {
- actions: assign(({ selectedProducts }, { id }) => ({
- selectedProducts: isItemInList(selectedProducts, id)
- ? removeItemFromList(selectedProducts, id)
- : addItemToList(selectedProducts, id),
- })),
- },
- },
- meta: {
- title: "Select ancillary products",
- },
- },
- confirm: {
- on: {
- NEXT: {
- target: "completed",
- cond: "checklistOK",
- },
- PREV: [
- { target: "selectProducts", cond: "shouldSelectProducts" },
- { target: "addMiscInformation", cond: "shouldAddMiscInformation" },
- { target: "addAirlineFees", cond: "shouldAddAirlineFees" },
- { target: "selectSegments", cond: "shouldSelectSegments" },
- { target: "selectTravelers", cond: "shouldSelectTravelers" },
- { target: "selectReason" },
- ],
- TOGGLE_CHECKLIST_ITEM: {
- actions: assign((context, { value }) => ({
- checklist: toggleChecklistItem(context, value),
- })),
- },
- },
- meta: {
- title: "Confirm",
- },
- },
- completed: {
- type: "final",
- meta: {
- title: "Completed",
- },
- },
- },
- context: {
- refundType: "ORDER_CHANGE_REASON",
- selectedReason: null,
- contactName: "",
- travelers: [],
- selectedProducts: [],
- handlingFee: "",
- totalFeeToPax: "",
- bankAccountNumber: "",
- authorization: "",
- otherInfo: "",
- checklist: [],
- segments: null,
- providerBookingInfos: [],
- },
- on: {
- SET_SEGMENTS: {
- actions: assign((context, { segments, providerBookingIds }) => ({
- segments,
- providerBookingInfos: getProviderBookingsInfos(
- context,
- providerBookingIds,
- ),
- })),
- },
- },
- },
- {
- guards: {
- shouldSelectTravelers: (context, { currentPage }) =>
- validate(context, currentPage) &&
- hasAnyInputTypes(context, "PASSENGER"),
- shouldSelectSegments: (context, { currentPage }) =>
- validate(context, currentPage) && hasAnyInputTypes(context, "SEGMENT"),
- shouldAddAirlineFees: (context, { currentPage }) =>
- validate(context, currentPage) &&
- hasAnyInputTypes(context, "AIRLINE_FEE"),
- shouldAddMiscInformation: (context, { currentPage }) =>
- validate(context, currentPage) &&
- hasAnyInputTypes(
- context,
- "OUR_HANDLING_FEE",
- "TOTAL_REFUND_AMOUNT_TO_PAX",
- "BANK_ACCOUNT_NUMBER",
- "AUTHORIZATION_CODE",
- "NOTES",
- ),
- shouldSelectProducts: (context, { currentPage }) =>
- validate(context, currentPage) &&
- hasAnyInputTypes(context, "ANCILLARY_PRODUCTS_TO_REFUND"),
- shouldUseConfirm: (context, { currentPage }) =>
- validate(context, currentPage),
- checklistOK: (context, { currentPage }) => validate(context, currentPage),
- },
- },
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement