Guest User

Untitled

a guest
Sep 23rd, 2018
915
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. const csvtojson = require("csvtojson");
  2. const _ = require("lodash");
  3.  
  4. let map = {
  5. food: {
  6. keywords: [
  7. "BIEDRONKA",
  8. "ZABKA",
  9. "CARREFOUR",
  10. "ORLEN",
  11. "POLOMARKET",
  12. ],
  13. },
  14.  
  15. foodOut: {
  16. keywords: [
  17. "PHA THA THAI",
  18. "MAX PREMIUM BURGERS",
  19. "SUSHI CORNER",
  20. "SANDWICZ SZOP",
  21. ],
  22. },
  23.  
  24. parties: {
  25. keywords: [
  26. "CLUB JAMAICA",
  27. "PUB KREWNEGO",
  28. "SCHODY DONIKAD",
  29. "KLUB MELANZ",
  30. "MUNDO 71",
  31. "PRZYBIJ PIATAKA",
  32. ],
  33. },
  34.  
  35. tickets: {
  36. keywords: [
  37. "INTERCITY",
  38. "SKYCASH",
  39. ],
  40. },
  41.  
  42. subscriptions: {
  43. keywords: [
  44. "EUROSPORTSA",
  45. "NETFLIX COM",
  46. "OVHPL",
  47. "SPOTIFY",
  48. "VIRGINMOBIL",
  49. ],
  50. },
  51.  
  52. flat: {
  53. keywords: [
  54. "Nazwa odbiorcy: PLAC LEGIONÓW",
  55. ],
  56. },
  57.  
  58. culture: {
  59. keywords: [
  60. "VERTIGO",
  61. ],
  62. },
  63.  
  64. other: {
  65. keywords: [],
  66. },
  67. };
  68.  
  69. const isSomethingCreator = (thingArray) => {
  70. return (expense) => {
  71. for (let i = 0; i < thingArray.length; i += 1) {
  72. if (expense.field8.indexOf(thingArray[i]) !== -1) {
  73. return true;
  74. }
  75. }
  76.  
  77. return false;
  78. };
  79. };
  80.  
  81. map = _.mapValues(map, (entry) => {
  82. return {
  83. ...entry,
  84. amount: 0,
  85. checker: isSomethingCreator(entry.keywords),
  86. };
  87. });
  88.  
  89. csvtojson().fromFile("./data/history.csv").then((expenses) => {
  90. let foodAmount = 0;
  91. let foodOutAmount = 0;
  92. let partiesAmount = 0;
  93. let ticketsAmount = 0;
  94. let subscriptionsAmount = 0;
  95.  
  96. const keys = Object.keys(map);
  97.  
  98. expenses.forEach((expense) => {
  99. const amount = Math.abs(parseFloat(expense.Kwota)) * 100;
  100.  
  101. for (let i = 0; i < keys.length; i += 1) {
  102. const key = keys[i];
  103. const mapper = map[key];
  104.  
  105. if (mapper.checker(expense)) {
  106. map[key].amount += amount;
  107. return;
  108. }
  109. }
  110.  
  111. map.other.amount += amount;
  112. console.log("unknown: " + expense.field8);
  113. });
  114.  
  115. const mapFiltered = _.mapValues(map, (entry) => {
  116. return {
  117. amount: entry.amount / 100,
  118. };
  119. });
  120.  
  121. console.log(JSON.stringify(mapFiltered, null, 2));
  122. });
Add Comment
Please, Sign In to add comment