123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /* eslint-disable no-unused-expressions */
- /* eslint-disable eqeqeq */
- /* eslint-disable no-restricted-syntax */
- /* eslint-disable guard-for-in */
- import axios from 'axios';
- import _ from 'lodash';
-
- export default {
- namespaced: true,
- state: {
- weeks: [],
- status: undefined,
- filter: {
- status: undefined,
- region: undefined,
- resort: undefined,
- bedrooms: undefined,
- date: undefined,
- minPrice: undefined,
- maxPrice: undefined,
- keyword: undefined,
- },
- prevFilter: undefined,
- difFilter: undefined,
- },
- mutations: {
- onLoading(state) {
- state.status = 'Loading...';
- },
- onError(state) {
- state.status = 'Error occurred getting data.';
- },
- onClearFilter(state, filter) {
- state.filter[filter] = undefined;
- },
- setWeeks(state, weeks) {
- state.weeks = weeks;
- state.status = '';
- },
- addWeek(state, week) {
- state.weeks.push(week);
- },
- applyResort(state, resort) {
- state.filter.resort = resort;
- },
- },
- getters: {
- filteredWeeks: (state) => {
- let weekList = state.weeks;
- const {
- filter,
- } = state;
- if (filter) {
- if (filter.keyword) {
- const list = [];
- for (const i in weekList) {
- const item = weekList[i];
- for (const r in item) {
- const innerItem = item[r];
- if (
- innerItem
- && JSON.stringify(innerItem)
- .toLowerCase()
- .includes(filter.keyword.toLowerCase())
- ) {
- list.push(item);
- break;
- }
- }
- }
- weekList = list;
- }
- if (filter.region) {
- weekList = _.filter(
- weekList,
- x => x.region && x.region.regionCode === filter.region.regionCode,
- );
- }
- if (filter.resort) {
- weekList = _.filter(
- weekList,
- x => x.resort.resortCode && x.resort.resortCode === filter.resort.resortCode,
- );
- }
- if (filter.bedrooms) {
- weekList = _.filter(weekList, x => x.bedrooms && x.bedrooms == filter.bedrooms);
- }
- if (filter.date) {
- const minDate = new Date(filter.date);
- minDate.setDate(minDate.getDate() - 7);
- const maxDate = new Date(filter.date);
- maxDate.setDate(maxDate.getDate() + 7);
- weekList = _.filter(
- weekList,
- x => new Date(x.arrivalDate)
- && new Date(x.departureDate)
- && new Date(x.arrivalDate) >= minDate
- && new Date(x.arrivalDate) <= maxDate,
- );
- }
- if (filter.minPrice && filter.minPrice !== 0) {
- weekList = _.filter(weekList, x => x.sellPrice && x.sellPrice >= filter.minPrice);
- }
- if (filter.maxPrice && filter.maxPrice !== 0) {
- weekList = _.filter(weekList, x => x.sellPrice && x.sellPrice <= filter.maxPrice);
- }
- }
- return _.sortBy((_.sortBy(weekList, 'arrivalDate')), 'resort.resortName');
- },
- getRegions(state, getters, rootState, rootGetters) {
- return rootGetters['timeshare/getRegionCode']('KK');
- },
- weekById(state) {
- return (resortCode, unitNumber) => {
- const w = state.weeks.find(week => week.resort !== undefined && week.resort.resortCode
- === resortCode && week.unitNumber === unitNumber);
- console.log(resortCode, unitNumber);
-
- if (w) {
- return w;
- }
- };
- },
- },
- actions: {
- applyResortFilter({
- commit,
- }, resortCode) {
- commit('applyResort', {
- resortCode,
- });
- },
- getWeeks({
- commit,
- rootGetters,
- }) {
- commit('onLoading');
- axios
- .get('/api/timeshareweek')
- .then((result) => {
- const arr2 = result.data.filter(x => x.region !== null);
- const arr3 = result.data.filter(x => x.region === null);
- for (const item in arr3) {
- const myItem = arr3[item];
- if (myItem !== undefined) {
- const code = myItem.resort.resortCode;
- myItem.region = {
- regionName: rootGetters['timeshare/getRegionCode'](code),
- };
- myItem.resort = {
- resortName: rootGetters['timeshare/getResortName'](code),
- resortCode: code,
- };
- arr2.push(myItem);
- }
- }
- commit('setWeeks', arr2);
- })
- .catch(console.error);
- },
- clearFilter({
- commit,
- }, filter) {
- commit('onClearFilter', filter);
- },
- },
- };
|