Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.42 KB | None | 0 0
  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. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement