Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /* eslint-disable no-unused-expressions */
  2. /* eslint-disable eqeqeq */
  3. /* eslint-disable no-restricted-syntax */
  4. /* eslint-disable guard-for-in */
  5. /* eslint-disable */
  6. import axios from "axios";
  7. import _, { min } from "lodash";
  8. export default {
  9. namespaced: true,
  10. state: {
  11. weeks: [],
  12. status: undefined,
  13. filter: {
  14. season: undefined,
  15. status: undefined,
  16. region: undefined,
  17. resort: undefined,
  18. bedrooms: undefined,
  19. date: undefined,
  20. ddate: undefined,
  21. minPrice: undefined,
  22. maxPrice: undefined,
  23. keyword: undefined
  24. },
  25. prevFilter: undefined,
  26. difFilter: undefined,
  27. searchParams: {
  28. region: undefined,
  29. resort: undefined,
  30. regionObj: undefined
  31. }
  32. },
  33. mutations: {
  34. onLoading(state) {
  35. state.status = "Loading...";
  36. },
  37. onError(state) {
  38. state.status = "Error occurred getting data.";
  39. },
  40. onClearFilter(state, filter) {
  41. state.filter[filter] = undefined;
  42. },
  43. setWeeks(state, weeks) {
  44. state.weeks = weeks;
  45. state.status = "";
  46. },
  47. addWeek(state, week) {
  48. state.weeks.push(week);
  49. },
  50. applyResort(state, resort) {
  51. state.filter.resort = resort;
  52. }
  53. },
  54. getters: {
  55. filteredWeeks: state => {
  56. let weekList = state.weeks;
  57. const { filter } = state;
  58. if (filter) {
  59. if (filter.keyword) {
  60. const list = [];
  61. for (const i in weekList) {
  62. const item = weekList[i];
  63. for (const r in item) {
  64. const innerItem = item[r];
  65. if (
  66. innerItem &&
  67. JSON.stringify(innerItem)
  68. .toLowerCase()
  69. .includes(filter.keyword.toLowerCase())
  70. ) {
  71. list.push(item);
  72. break;
  73. }
  74. }
  75. }
  76. weekList = list;
  77. }
  78. if (filter.region) {
  79. weekList = _.filter(
  80. weekList,
  81. x => x.region && x.region.regionCode === filter.region.regionCode
  82. );
  83. }
  84. if (filter.resort) {
  85. weekList = _.filter(
  86. weekList,
  87. x => x.resort.resortCode && x.resort.resortCode === filter.resort.resortCode
  88. );
  89. }
  90. if (filter.bedrooms) {
  91. if (filter.bedrooms === "Studio") {
  92. weekList = _.filter(weekList, x => (x.bedrooms && x.bedrooms === "0") || !x.bedrooms);
  93. } else {
  94. weekList = _.filter(weekList, x => x.bedrooms && x.bedrooms === filter.bedrooms);
  95. }
  96. }
  97. if (filter.date) {
  98. const minDate = new Date(filter.date);
  99. minDate.setDate(minDate.getDate() - 1);
  100. weekList = _.filter(weekList, x => new Date(x.arrivalDate) >= minDate);
  101. }
  102. if (filter.ddate) {
  103. const maxDate = new Date(filter.ddate);
  104. weekList = _.filter(weekList, x => new Date(x.departureDate) <= maxDate);
  105. }
  106. if (filter.minPrice && filter.minPrice !== 0) {
  107. weekList = _.filter(weekList, x => x.sellPrice && x.sellPrice >= filter.minPrice);
  108. }
  109. if (filter.maxPrice && filter.maxPrice !== 0) {
  110. weekList = _.filter(weekList, x => x.sellPrice && x.sellPrice <= filter.maxPrice);
  111. }
  112. if (filter.season) {
  113. weekList = _.filter(weekList, x => x.season === filter.season.name);
  114. }
  115. }
  116. return _.sortBy(_.sortBy(weekList, "arrivalDate"), "resort.resortName");
  117. },
  118. getRegions(state, getters, rootState, rootGetters) {
  119. return rootGetters["timeshare/getRegionCode"]("KK");
  120. },
  121. weekById(state) {
  122. return (resortCode, unitNumber) => {
  123. const w = state.weeks.find(
  124. week =>
  125. week.resort !== undefined &&
  126. week.resort.resortCode === resortCode &&
  127. week.unitNumber === unitNumber
  128. );
  129. console.log(resortCode, unitNumber);
  130. if (w) {
  131. return w;
  132. }
  133. };
  134. }
  135. },
  136. actions: {
  137. applyResortFilter({ commit }, resortCode) {
  138. commit("applyResort", {
  139. resortCode
  140. });
  141. },
  142. async getByResortCode({ commit }, resortCode) {
  143. commit("onLoading");
  144. await axios.get("/api/timeshareweek/getByResortCode/" + resortCode).then(result => {
  145. commit("setWeeks", result.data);
  146. console.log(result);
  147. });
  148. },
  149. async getWeeks({ commit, rootGetters }) {
  150. //commit("onLoading");
  151. await axios
  152. .get("/api/timeshareweek")
  153. .then(result => {
  154. const arr2 = result.data.filter(x => x.region !== null);
  155. console.log(arr2);
  156. const arr3 = result.data.filter(x => x.region === null);
  157. for (const item in arr3) {
  158. const myItem = arr3[item];
  159. if (myItem !== undefined) {
  160. const code = myItem.resort.resortCode;
  161. myItem.region = {
  162. regionName: rootGetters["timeshare/getRegionCode"](code)
  163. };
  164. myItem.resort = {
  165. resortName: rootGetters["timeshare/getResortName"](code),
  166. resortCode: code
  167. };
  168. }
  169. }
  170. console.log(arr3);
  171. commit("setWeeks", arr2);
  172. })
  173. .catch(console.error);
  174. },
  175. // getWeeks({ commit }) {
  176. // axios.get("api/timeshareweek").then(result =>
  177. // commit(
  178. // "setWeeks",
  179. // result.data.filter(x => x.region !== null)
  180. // )
  181. // );
  182. // },
  183. clearFilter({ commit }, filter) {
  184. commit("onClearFilter", filter);
  185. }
  186. }
  187. };