// 1 => LOADING // 2 => DONE // 3 => ERROR import * as api from "../api/area.js" window.api = api export default { namespaced: true, state: { search: '', search_status:0, search_error_message:'', search_dialog_is_active: false, provinces: [], cities: [], districts: [], villages: [], total_provinces: 0, total_cities: 0, total_districts: 0, total_villages: 0, total_display: 0, selected_province: {}, selected_city: {}, selected_district: {}, selected_village: {} }, mutations: { update_search_dialog_is_active(state,status) { state.search_dialog_is_active = status }, update_search_error_message(state,status) { state.search_error_message = status }, update_search(state,val) { state.search=val }, update_search_status(state,status) { state.search_status = status }, update_area(state, data) { state[data.type] = data.records state['total_'+data.type] = data.total state.total_display = data.total_display if (["provinces", "districts", "villages"].indexOf(data.type) > -1) state['selected_'+ data.type.substring(0, data.type.length-1) ] = null else if (data.type == "cities") state['selected_city'] = null for (let i in data.records) { if (data.records[i].is_default == "Y") { if (["provinces", "districts", "villages"].indexOf(data.type) > -1) state['selected_'+ data.type.substring(0, data.type.length-1) ] = data.records[i] else if (data.type == "cities") state['selected_city'] = data.records[i] } } }, update_selected_area(state, val) { state['selected_'+val.type] = val.val } }, actions: { async search_province(context) { context.commit("update_search_status", 1) context.commit("update_area", {records:[], total:0, total_display:0, type:'city'}) context.commit("update_area", {records:[], total:0, total_display:0, type:'district'}) context.commit("update_area", {records:[], total:0, total_display:0, type:'village'}) context.commit("update_selected_area", {type:'city',val:null}) context.commit("update_selected_area", {type:'district',val:null}) context.commit("update_selected_area", {type:'village',val:null}) try { let resp = await api.search_province(context.state.search) if (resp.status != "OK") { context.commit("update_search_status",3) context.commit("update_search_error_message",resp.message) } else { context.commit("update_search_status",2) context.commit("update_search_error_message","") let data = { records : resp.data.records, total: resp.data.total, total_display: resp.data.total_display, type: 'provinces' } // EDIT DATA if (context.rootState.patient.edit) { let pid = context.rootState.patient.selected_patient.M_ProvinceID for (let i in data.records) if (data.records[i].M_ProvinceID == pid) data.records[i].is_default = "Y" else data.records[i].is_default = "N" } context.commit("update_area", data) context.dispatch("search_city") } } catch(e) { context.commit("update_search_status",3) context.commit("update_search_error_message",e.message ) } }, async search_city(context) { // City context.commit("update_search_status", 1) context.commit("update_area", {records:[], total:0, total_display:0, type:'district'}) context.commit("update_area", {records:[], total:0, total_display:0, type:'village'}) context.commit("update_selected_area", {type:'district',val:null}) context.commit("update_selected_area", {type:'village',val:null}) try { let resp = await api.search_city(context.state.selected_province.M_ProvinceID, context.state.search) if (resp.status != "OK") { context.commit("update_search_status",3) context.commit("update_search_error_message",resp.message) } else { context.commit("update_search_status",2) context.commit("update_search_error_message","") let data = { records : resp.data.records, total: resp.data.total, total_display: resp.data.total_display, type: 'cities' } // EDIT DATA if (context.rootState.patient.edit) { let pid = context.rootState.patient.selected_patient.M_CityID for (let i in data.records) if (data.records[i].M_CityID == pid) data.records[i].is_default = "Y" else data.records[i].is_default = "N" } context.commit("update_area", data) context.commit("update_search_status", 1) context.dispatch("search_district") } } catch(e) { context.commit("update_search_status",3) context.commit("update_search_error_message", e.message ) } }, async search_district(context) { // City context.commit("update_search_status", 1) context.commit("update_area", {records:[], total:0, total_display:0, type:'village'}) context.commit("update_selected_area", {type:'village',val:null}) try { let resp = await api.search_district(context.state.selected_city.M_CityID, context.state.search) if (resp.status != "OK") { context.commit("update_search_status",3) context.commit("update_search_error_message",resp.message) } else { context.commit("update_search_status",2) context.commit("update_search_error_message","") let data = { records : resp.data.records, total: resp.data.total, total_display: resp.data.total_display, type: 'districts' } // EDIT DATA if (context.rootState.patient.edit) { let pid = context.rootState.patient.selected_patient.M_DistrictID for (let i in data.records) if (data.records[i].M_DistrictID == pid) data.records[i].is_default = "Y" else data.records[i].is_default = "N" } context.commit("update_area", data) context.commit("update_search_status", 1) context.dispatch("search_kelurahan") } } catch(e) { context.commit("update_search_status",3) context.commit("update_search_error_message", e.message ) } }, async search_kelurahan(context) { // City context.commit("update_search_status", 1) try { let resp = await api.search_kelurahan(context.state.selected_district.M_DistrictID, context.state.search) if (resp.status != "OK") { context.commit("update_search_status",3) context.commit("update_search_error_message",resp.message) } else { context.commit("update_search_status",2) context.commit("update_search_error_message","") let data = { records : resp.data.records, total: resp.data.total, total_display: resp.data.total_display, type: 'villages' } // EDIT DATA if (context.rootState.patient.edit) { let pid = context.rootState.patient.selected_patient.M_KelurahanID for (let i in data.records) if (data.records[i].M_KelurahanID == pid) data.records[i].is_default = "Y" else data.records[i].is_default = "N" } context.commit("update_area", data) context.commit("update_search_status", 1) } } catch(e) { context.commit("update_search_status",3) context.commit("update_search_error_message", e.message ) } } } }