import axios from 'axios'; import { Date } from 'core-js'; export default { namespaced: true, state: { property: { createdBy: '', propertyTypeId: 0, propertyName: '', unit: '', operationalCosts: 0.0, price: 0, pricePer: '', isSale: false, description: '', shortDescription: '', addressLine1: '', addressLine2: '', addressLine3: '', suburbId: 0, cityId: 0, provinceId: 0, published: false, propertyUserFields: [], propertyImages: [], id: 0, virtualTour: '', video: '', userId: 0, dateAvailable: Date, }, propertyImages: [], propertyTypes: [], propertyTypesRes: [], propertyTypesCom: [], propertyOverviewFields: [], propertyFields: [], }, mutations: { setProperty(state, property) { state.property = property; }, setPropertyImages(state, images) { state.propertyImages = images; }, setPropertyTypes(state, types) { state.propertyTypes = types; }, setPropertyTypesRes(state, types) { state.propertyTypesRes = types; }, setPropertyTypesCom(state, types) { state.propertyTypesCom = types; }, setPropertyOverviewFields(state, fields) { state.propertyOverviewFields = fields; }, setPropertyFields(state, fields) { state.propertyFields = fields; }, updateCurrentProperty(state, property) { if (state.properties) { state.properties.push(property); } }, clearProperty(state) { state.property = { createdBy: '', propertyTypeId: 0, propertyName: '', unit: '', operationalCosts: 0.0, price: 0, pricePer: '', isSale: false, description: '', shortDescription: '', addressLine1: '', addressLine2: '', addressLine3: '', suburbId: 0, cityId: 0, provinceId: 0, published: false, propertyUserFields: [], propertyImages: [], id: 0, virtualTour: '', video: '', userId: 0, dateAvailable: Date, }; }, clearPropertyImages(state) { state.propertyImages = []; }, }, getters: {}, actions: { getProperty({ commit }, id) { axios .get(`/api/Property/getDetailed/${id}`) .then(result => commit('setProperty', result.data)) .catch(console.error); }, getPropertyImages({ commit }, id) { axios .get(`/api/PropertyImage/GetImagesByProperty/${id}`) .then(result => commit('setPropertyImages', result.data)) .catch(console.error); }, getPropertyTypes({ commit }, propertyType) { axios .get(`/api/PropertyType/type/${propertyType}`) .then(result => commit('setPropertyTypes', result.data)) .catch(console.error); }, getPropertyTypesRes({ commit }) { axios .get('/api/PropertyType/type/Residential') .then(result => commit('setPropertyTypesRes', result.data)) .catch(console.error); }, getPropertyTypesCom({ commit }) { axios .get('/api/PropertyType/type/Commercial') .then(result => commit('setPropertyTypesCom', result.data)) .catch(console.error); }, getPropertyOverviewFields({ commit }) { axios .get('/api/PropertyFields/Property Overview') .then(response => commit('setPropertyOverviewFields', response.data)); }, getPropertyFields({ commit }, propertyType) { axios .get(`/api/propertyFields/PropertyType/${propertyType}`) .then(response => commit('setPropertyFields', response.data)); }, getPropertySavedOverviewFields({ commit }, id) { axios .get(`/api/PropertyFields/GetSavedValues/Residential/Property Overview/${id}`) .then(response => commit('setPropertyOverviewFields', response.data)) .catch(console.error); }, getPropertySavedFields({ commit }, item) { axios .get(`/api/PropertyFields/GetSavedValues/${item.type}/All/${item.id}`) .then(response => commit('setPropertyFields', response.data)) .catch(console.error); }, saveProperty({ commit }, item) { return new Promise((resolve, reject) => { axios .post('/api/Property', item) .then((resp) => { commit('updateCurrentProperty', resp); resolve(resp); }) .catch(() => { reject(console.error); }); }); }, clearProperty({ commit }) { commit('clearProperty'); }, clearPropertyImages({ commit }) { commit('clearPropertyImages'); }, getSavedPropertyData({ commit }, item) { commit('clearProperty'); commit('clearPropertyImages'); axios .get(`/api/Property/getProperty/${item.id}`) .then(result => commit('setProperty', result.data)) .catch(console.error); axios .get(`/api/PropertyImage/GetProperySavedImages/${item.id}`) .then(result => commit('setPropertyImages', result.data)) .catch(console.error); axios .get(`/api/PropertyFields/GetSavedValues/Residential/Property Overview/${item.id}`) .then(response => commit('setPropertyOverviewFields', response.data)) .catch(console.error); axios .get(`/api/PropertyFields/GetSavedValues/${item.type}/All/${item.id}`) .then(response => commit('setPropertyFields', response.data)) .catch(console.error); }, getSavedPropertyImages({ commit }, id) { axios .get(`/api/PropertyImage/GetProperySavedImages/${id}`) .then(result => commit('setPropertyImages', result.data)) .catch(console.error); }, }, };