{"version":3,"file":"js/app.7c43ad9e.js","mappings":"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","sources":["webpack://garrettcounty/./src/App.vue","webpack://garrettcounty/src/App.vue","webpack://garrettcounty/./src/App.vue?c036","webpack://garrettcounty/./src/App.vue?0e40","webpack://garrettcounty/./src/plugins/formattersMixin.js","webpack://garrettcounty/./src/plugins/stateMixin.js","webpack://garrettcounty/./src/plugins/vuetify.js","webpack://garrettcounty/./src/main.js","webpack://garrettcounty/./src/errors/ApiError.js","webpack://garrettcounty/./src/services/citizen/CitizenConnectApiService.js","webpack://garrettcounty/./src/errors/citizen/CitizenMaintenanceError.js","webpack://garrettcounty/./src/views/citizen/_shared/citizenRouterViewWrapper.vue","webpack://garrettcounty/src/views/citizen/_shared/citizenRouterViewWrapper.vue","webpack://garrettcounty/./src/views/citizen/_shared/citizenRouterViewWrapper.vue?28ba","webpack://garrettcounty/./src/views/citizen/_shared/citizenRouterViewWrapper.vue?8e4d","webpack://garrettcounty/./src/router/routes.js","webpack://garrettcounty/./src/router/index.js","webpack://garrettcounty/./src/services/citizen/citizenHelper.js","webpack://garrettcounty/./src/constants.js","webpack://garrettcounty/./src/errors/CustomError.js","webpack://garrettcounty/./src/store/citizen/atv.store.js","webpack://garrettcounty/./src/store/citizen/breadcrumbs.store.js","webpack://garrettcounty/./src/store/citizen/landfillCommercialRecycling.store.js","webpack://garrettcounty/./src/store/citizen/landfillCommercialWaste.store.js","webpack://garrettcounty/./src/store/citizen/landfillResidential.store.js","webpack://garrettcounty/./src/store/citizen/payment.store.js","webpack://garrettcounty/./src/store/citizen/permit.store.js","webpack://garrettcounty/./src/store/citizen/reverse911.store.js","webpack://garrettcounty/./src/store/citizen/search.store.js","webpack://garrettcounty/./src/store/citizen/tax.store.js","webpack://garrettcounty/./src/store/citizen/utility.store.js","webpack://garrettcounty/./src/store/route.store.js","webpack://garrettcounty/./src/store/index.js","webpack://garrettcounty/./src/errors/AuthError.js","webpack://garrettcounty/./src/errors/citizen/CitizenLogicError.js","webpack://garrettcounty/./src/store/citizen/member.store.js","webpack://garrettcounty/./src/services/citizen/PermitsApiService.js","webpack://garrettcounty/./src/errors/citizen/CitizenApiError.js","webpack://garrettcounty/webpack/bootstrap","webpack://garrettcounty/webpack/runtime/chunk loaded","webpack://garrettcounty/webpack/runtime/compat get default export","webpack://garrettcounty/webpack/runtime/define property getters","webpack://garrettcounty/webpack/runtime/ensure chunk","webpack://garrettcounty/webpack/runtime/get javascript chunk filename","webpack://garrettcounty/webpack/runtime/get mini-css chunk filename","webpack://garrettcounty/webpack/runtime/global","webpack://garrettcounty/webpack/runtime/hasOwnProperty shorthand","webpack://garrettcounty/webpack/runtime/load script","webpack://garrettcounty/webpack/runtime/make namespace object","webpack://garrettcounty/webpack/runtime/node module decorator","webpack://garrettcounty/webpack/runtime/publicPath","webpack://garrettcounty/webpack/runtime/css loading","webpack://garrettcounty/webpack/runtime/jsonp chunk loading","webpack://garrettcounty/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',{attrs:{\"id\":\"vue-app\"}},[(_vm.$store.getters['route/routing'])?_c('v-progress-linear',{attrs:{\"indeterminate\":\"\",\"absolute\":\"\"}}):_vm._e(),_c('v-snackbar-queue',{attrs:{\"items\":_vm.$store.getters.snackbars,\"timeout\":_vm.$store.getters.snackbarTimeout,\"center\":\"\",\"close-button-icon\":_vm.icons.mdiClose,\"top\":\"\"},on:{\"remove\":function($event){return _vm.$store.dispatch('removeSnackbar', $event)}}}),_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=19aa03ae\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { isValid, parseJSON } from 'date-fns'\r\n\r\nexport default {\r\n\tfilters: {\r\n\r\n\t\tformatDateTime: function( dateTimeString, options = {\r\n\t\t\tmonth: 'long',\r\n\t\t\tday: 'numeric',\r\n\t\t\tyear: 'numeric',\r\n\t\t\thour: 'numeric',\r\n\t\t\tminute: '2-digit'\r\n\t\t} ) {\r\n\t\t\tif( dateTimeString===null || dateTimeString==='' ) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\r\n\t\t\tlet dtObj = parseJSON( dateTimeString )\r\n\r\n\t\t\tif( isValid( dtObj ) ) {\r\n\t\t\t\treturn dtObj.toLocaleString( 'default', options );\r\n\t\t\t}\r\n\r\n\t\t\treturn dateTimeString\r\n\t\t},\r\n\r\n\t\tformatDate: function( dateTimeString, options = {\r\n\t\t\tmonth: 'long',\r\n\t\t\tday: 'numeric',\r\n\t\t\tyear: 'numeric'\r\n\t\t} ) {\r\n\t\t\tif( dateTimeString===null || dateTimeString==='' ) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\r\n\t\t\tlet dtObj = parseJSON( dateTimeString )\r\n\r\n\t\t\tif( isValid( dtObj ) ) {\r\n\t\t\t\treturn dtObj.toLocaleString( 'default', options );\r\n\t\t\t}\r\n\r\n\t\t\treturn dateTimeString\r\n\t\t},\r\n\r\n\t\tformatCurrency: function( val, minimumFractionDigits = 2 ) {\r\n\r\n\t\t\tlet formatter = new Intl.NumberFormat( 'en-US', {\r\n\t\t\t\tstyle: 'currency',\r\n\t\t\t\tcurrency: 'USD',\r\n\t\t\t\tminimumFractionDigits: minimumFractionDigits\r\n\t\t\t} );\r\n\t\t\treturn formatter.format( val );\r\n\t\t},\r\n\r\n\t\tformatBoolToYesNo: function( val ) {\r\n\t\t\tif( val ) {\r\n\t\t\t\treturn 'Yes'\r\n\t\t\t}\r\n\t\t\treturn 'No'\r\n\t\t},\r\n\r\n\t\tnumber_format(number, decimals, dec_point, thousands_sep) {\r\n\t\t\t// discuss at: http://phpjs.org/functions/number_format/\r\n\t\t\t// original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\r\n\t\t\t// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\r\n\t\t\t// improved by: davook\r\n\t\t\t// improved by: Brett Zamir (http://brett-zamir.me)\r\n\t\t\t// improved by: Brett Zamir (http://brett-zamir.me)\r\n\t\t\t// improved by: Theriault\r\n\t\t\t// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\r\n\t\t\t// bugfixed by: Michael White (http://getsprink.com)\r\n\t\t\t// bugfixed by: Benjamin Lupton\r\n\t\t\t// bugfixed by: Allan Jensen (http://www.winternet.no)\r\n\t\t\t// bugfixed by: Howard Yeend\r\n\t\t\t// bugfixed by: Diogo Resende\r\n\t\t\t// bugfixed by: Rival\r\n\t\t\t// bugfixed by: Brett Zamir (http://brett-zamir.me)\r\n\t\t\t// revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\r\n\t\t\t// revised by: Luke Smith (http://lucassmith.name)\r\n\t\t\t// input by: Kheang Hok Chin (http://www.distantia.ca/)\r\n\t\t\t// input by: Jay Klehr\r\n\t\t\t// input by: Amir Habibi (http://www.residence-mixte.com/)\r\n\t\t\t// input by: Amirouche\r\n\t\t\t// example 1: number_format(1234.56);\r\n\t\t\t// returns 1: '1,235'\r\n\t\t\t// example 2: number_format(1234.56, 2, ',', ' ');\r\n\t\t\t// returns 2: '1 234,56'\r\n\t\t\t// example 3: number_format(1234.5678, 2, '.', '');\r\n\t\t\t// returns 3: '1234.57'\r\n\t\t\t// example 4: number_format(67, 2, ',', '.');\r\n\t\t\t// returns 4: '67,00'\r\n\t\t\t// example 5: number_format(1000);\r\n\t\t\t// returns 5: '1,000'\r\n\t\t\t// example 6: number_format(67.311, 2);\r\n\t\t\t// returns 6: '67.31'\r\n\t\t\t// example 7: number_format(1000.55, 1);\r\n\t\t\t// returns 7: '1,000.6'\r\n\t\t\t// example 8: number_format(67000, 5, ',', '.');\r\n\t\t\t// returns 8: '67.000,00000'\r\n\t\t\t// example 9: number_format(0.9, 0);\r\n\t\t\t// returns 9: '1'\r\n\t\t\t// example 10: number_format('1.20', 2);\r\n\t\t\t// returns 10: '1.20'\r\n\t\t\t// example 11: number_format('1.20', 4);\r\n\t\t\t// returns 11: '1.2000'\r\n\t\t\t// example 12: number_format('1.2000', 3);\r\n\t\t\t// returns 12: '1.200'\r\n\t\t\t// example 13: number_format('1 000,50', 2, '.', ' ');\r\n\t\t\t// returns 13: '100 050.00'\r\n\t\t\t// example 14: number_format(1e-8, 8, '.', '');\r\n\t\t\t// returns 14: '0.00000001'\r\n\r\n\t\t\tnumber = (number + '')\r\n\t\t\t\t.replace(/[^0-9+\\-Ee.]/g, '');\r\n\t\t\tvar n = !isFinite(+number) ? 0 : +number,\r\n\t\t\t prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),\r\n\t\t\t sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,\r\n\t\t\t dec = (typeof dec_point === 'undefined') ? '.' : dec_point,\r\n\t\t\t s = '',\r\n\t\t\t toFixedFix = function (n, prec) {\r\n\t\t\t\t var k = Math.pow(10, prec);\r\n\t\t\t\t return '' + (Math.round(n * k) / k)\r\n\t\t\t\t\t .toFixed(prec);\r\n\t\t\t };\r\n\t\t\t// Fix for IE parseFloat(0.55).toFixed(0) = 0;\r\n\t\t\ts = (prec ? toFixedFix(n, prec) : '' + Math.round(n))\r\n\t\t\t\t.split('.');\r\n\t\t\tif (s[0].length > 3) {\r\n\t\t\t\ts[0] = s[0].replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, sep);\r\n\t\t\t}\r\n\t\t\tif ((s[1] || '')\r\n\t\t\t\t.length < prec) {\r\n\t\t\t\ts[1] = s[1] || '';\r\n\t\t\t\ts[1] += new Array(prec - s[1].length + 1)\r\n\t\t\t\t\t.join('0');\r\n\t\t\t}\r\n\t\t\treturn s.join(dec);\r\n\t\t}\r\n\r\n\t}\r\n}\r\n\r\n\r\n","export default {\r\n\tdata: function () {\r\n\t\treturn {\r\n\t\t\tui: {\r\n\t\t\t\tloading: false,\r\n\t\t\t\tloadDialog: false,\r\n\r\n\t\t\t\tadding: false,\r\n\t\t\t\taddDialog: false,\r\n\r\n\t\t\t\tsaving: false,\r\n\t\t\t\tsaveDialog: false,\r\n\r\n\t\t\t\tediting: false,\r\n\t\t\t\teditDialog: false,\r\n\r\n\t\t\t\tremoving: false,\r\n\t\t\t\tremoveDialog: false,\r\n\r\n\t\t\t\tmaintenance: false,\r\n\t\t\t\tmaintenanceCode: '',\r\n\t\t\t\tmaintenanceMessage: '',\r\n\t\t\t\tmaintenanceGuid: '',\r\n\r\n\t\t\t\terror: false,\r\n\t\t\t\terrorCode: '',\r\n\t\t\t\terrorMessage: '',\r\n\t\t\t\terrorGuid: '',\r\n\r\n\t\t\t\ttasks:{}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\r\n\t\tui_setTaskStatus:function( taskKey, taskStatus ) {\r\n\t\t\tthis.$set( this.ui.tasks, taskKey, taskStatus );\r\n\t\t},\r\n\t\tui_getTaskStatus:function( taskKey ) {\r\n\t\t\treturn this.ui.tasks[taskKey];\r\n\t\t},\r\n\r\n\t\tui_Reset:function() {\r\n\t\t\tthis.ui.loading= false;\r\n\t\t\tthis.ui.loadDialog = false;\r\n\r\n\t\t\tthis.ui.adding = false;\r\n\t\t\tthis.ui.addDialog = false;\r\n\r\n\t\t\tthis.ui.saving = false;\r\n\t\t\tthis.ui.saveDialog = false;\r\n\r\n\t\t\tthis.ui.editing = false;\r\n\t\t\tthis.ui.editDialog = false;\r\n\r\n\t\t\tthis.ui.removing = false;\r\n\t\t\tthis.ui.removeDialog = false;\r\n\r\n\t\t\tthis.ui.maintenance = false;\r\n\t\t\tthis.ui.maintenanceCode = '';\r\n\t\t\tthis.ui.maintenanceMessage = '';\r\n\r\n\t\t\tthis.ui.error = false;\r\n\t\t\tthis.ui.errorCode = '';\r\n\t\t\tthis.ui.errorMessage = '';\r\n\t\t\tthis.ui.errorGuid = '';\r\n\t\t},\r\n\r\n\t\tui_SetError: function ( e ) {\r\n\t\t\tthis.ui.error = true;\r\n\t\t\tthis.ui.errorCode = String( e.code );\r\n\t\t\tthis.ui.errorMessage = e.message;\r\n\t\t\tthis.ui.errorGuid = e.guid;\r\n\t\t},\r\n\r\n\t\tui_SetMaintenance: function ( e ) {\r\n\t\t\tthis.ui.maintenance = true;\r\n\t\t\tthis.ui.maintenanceCode = String( e.code );\r\n\t\t\tthis.ui.maintenanceMessage = e.message;\r\n\t\t\tthis.ui.maintenanceGuid = e.guid;\r\n\t\t},\r\n\r\n\t\tui_ClearMaintenance: function () {\r\n\t\t\tthis.ui.maintenance = false;\r\n\t\t\tthis.ui.maintenanceCode = '';\r\n\t\t\tthis.ui.maintenanceMessage = '';\r\n\t\t\tthis.ui.maintenanceGuid = '';\r\n\t\t},\r\n\r\n\t\tui_ClearError: function () {\r\n\t\t\tthis.ui.error = false;\r\n\t\t\tthis.ui.errorCode = '';\r\n\t\t\tthis.ui.errorMessage = '';\r\n\t\t\tthis.ui.errorGuid = '';\r\n\t\t}\r\n\r\n\t}\r\n\r\n}","import Vue from 'vue';\r\nimport Vuetify, { VAlert, VApp, VAppBar, VAppBarTitle, VBreadcrumbs, VBreadcrumbsItem, VBtn, VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle, VCheckbox, VChip, VCol, VContainer, VDataTable, VDialog, VDivider, VFileInput, VFooter, VIcon, VImg, VInput, VItem, VList, VListGroup, VListItem, VListItemAction, VListItemAvatar, VListItemContent, VListItemGroup, VListItemIcon, VListItemSubtitle, VListItemTitle, VMain, VMenu, VProgressLinear, VRadio, VRadioGroup, VRating, VResponsive, VRow, VSelect, VSimpleCheckbox, VSkeletonLoader, VSlideYTransition, VSnackbar, VSpacer, VSubheader, VSystemBar, VTextarea, VTextField, VToolbar, VTooltip, VTreeview } from 'vuetify/lib';\r\n\r\nVue.use(Vuetify, {\r\n\tcomponents:{\r\n\t\tVAlert, VApp, VAppBar, VAppBarTitle, VBreadcrumbs, VBreadcrumbsItem, VBtn, VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle, VCheckbox, VChip, VCol, VContainer, VDataTable, VDialog, VDivider, VFileInput, VFooter, VIcon, VImg, VInput, VItem, VList, VListGroup, VListItem, VListItemAction, VListItemAvatar, VListItemContent, VListItemGroup, VListItemIcon, VListItemSubtitle, VListItemTitle, VMain, VMenu, VProgressLinear, VRadio, VRadioGroup, VRating, VResponsive, VRow, VSelect, VSimpleCheckbox, VSkeletonLoader, VSlideYTransition, VSnackbar, VSpacer, VSubheader, VSystemBar, VTextarea, VTextField, VToolbar, VTooltip, VTreeview\r\n\t}\r\n})\r\n\r\nexport default new Vuetify( {\r\n\ticons: {\r\n\t\ticonfont: 'mdiSvg',\r\n\t},\r\n\tbreakpoint: {\r\n\t\tmobileBreakpoint: 'sm', // This is equivalent to a value of 960\r\n\t},\r\n} );\r\n","import 'core-js/stable'; //support es5 browsers\r\nimport 'regenerator-runtime/runtime'; //support es5 browsers\r\nimport '@/styles/main.scss';\r\n\r\nimport Vue from 'vue';\r\nimport VueDataObjectPath from 'vue-data-object-path';\r\nimport VueMeta from 'vue-meta';\r\nimport VueTelInputVuetify from 'vue-tel-input-vuetify/lib';\r\nimport VuetifySnackbarQueue from 'vuetify-snackbar-queue';\r\n\r\nimport App from '@/App.vue';\r\nimport * as constants from '@/constants';\r\nimport formattersMixin from '@/plugins/formattersMixin';\r\nimport stateMixin from '@/plugins/stateMixin';\r\nimport vuetify from '@/plugins/vuetify';\r\nimport router from '@/router';\r\nimport store from '@/store';\r\n\r\nVue.config.productionTip = false\r\n\r\n\r\n//extend vue\r\nVue.mixin( stateMixin );\r\nVue.mixin( formattersMixin );\r\nVue.prototype.$constants = constants;\r\n\r\n//third party plugins\r\nVue.use( VueMeta );\r\nVue.use( VuetifySnackbarQueue )\r\nVue.use( VueDataObjectPath )\r\nVue.use(VueTelInputVuetify, {\r\n\tvuetify,\r\n});\r\n\r\n// Subscribe to store updates\r\nlet initStore = async () => {\r\n\tawait store.dispatch( 'initialize' );\r\n\tawait store.dispatch( 'citizenMember/initialize' );\r\n\r\n\tlet storeToLocalStorage = function( mutation, state ) {\r\n\t\ttry {\r\n\t\t\t// Store parts of the state\r\n\t\t\tif( mutation.type.startsWith( 'citizenMember' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.member', JSON.stringify( state.citizenMember ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenSearch' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.search', JSON.stringify( state.citizenSearch ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenTax' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.tax', JSON.stringify( state.citizenTax ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenUtility' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.utility', JSON.stringify( state.citizenUtility ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenLandfillResidential' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.landfillResidential', JSON.stringify( state.citizenLandfillResidential ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenAtv' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.atv', JSON.stringify( state.citizenAtv ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenLandfillCommercialWaste' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.landfillCommercialWaste', JSON.stringify( state.citizenLandfillCommercialWaste ) );\r\n\t\t\t}\r\n\t\t\telse if( mutation.type.startsWith( 'citizenLandfillCommercialRecycling' ) ) {\r\n\t\t\t\tlocalStorage.setItem( 'citizen.store.landfillCommercialRecycling', JSON.stringify( state.citizenLandfillCommercialRecycling ) );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log( 'memory limit hit; resetting localStorage' )\r\n\t\t\tif( localStorage.getItem( 'citizen.store.tax' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.tax' );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( 'citizen.store.utility' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.utility' );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( 'citizen.store.landfillResidential' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.landfillResidential' );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( 'citizen.store.atv' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.atv' );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( 'citizen.store.landfillCommercialWaste' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.landfillCommercialWaste' );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( 'citizen.store.landfillCommercialRecycling' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( 'citizen.store.landfillCommercialRecycling' );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstore.subscribe( ( mutation, state ) => {\r\n\r\n\t\ttry {\r\n\t\t\tstoreToLocalStorage( mutation, state )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e )\r\n\t\t\t//console.log( 'Problem setting localStorage on mutation ' + mutation.type )\r\n\t\t}\r\n\r\n\t} );\r\n};\r\ninitStore().then(() => {\r\n\r\n//application\r\n\tnew Vue( {\r\n\t\trouter,\r\n\t\tstore,\r\n\t\tvuetify,\r\n\t\trender: h => h( App )\r\n\t} ).$mount( '#vue-app' )\r\n\r\n});\r\n","import CustomError from \"@/errors/CustomError\";\r\n\r\n\r\nclass ApiError\r\n\textends CustomError {\r\n\tconstructor(message, code=0, data={}, guid='') {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper( message, code, data, guid )\r\n\t}\r\n}\r\nexport default ApiError;","import axios from 'axios';\r\nimport { isEmpty } from 'lodash';\r\n\r\nimport ApiError from '@/errors/ApiError';\r\n\r\nimport store from '../../store';\r\n\r\nclass CitizenConnectApiService {\r\n\tconstructor() {\r\n\t\tif( !CitizenConnectApiService.instance ) {\r\n\t\t\tCitizenConnectApiService.instance = this;\r\n\t\t}\r\n\t\tif( !CitizenConnectApiService.axiosAbortController ) {\r\n\t\t\tCitizenConnectApiService.axiosAbortController = new AbortController();\r\n\t\t}\r\n\r\n\t\treturn CitizenConnectApiService.instance;\r\n\t}\r\n\r\n\tstatic getBaseUrl() {\r\n\t\treturn process.env.VUE_APP_PAYMENTS_API_URL\r\n\t}\r\n\r\n\tstatic getUrlParams() {\r\n\t\treturn process.env.VUE_APP_PAYMENTS_API_URL_PARAMS\r\n\t}\r\n\r\n\tstatic urlBuild( urlPath ) {\r\n\t\tif( urlPath.substr( 0, 4 )==='http' ) {\r\n\t\t\treturn urlPath;\r\n\t\t}\r\n\r\n\t\tlet cleanUrlPath = urlPath.replace( /^\\/+|\\/+$/g, '' );\r\n\t\tlet append = '';\r\n\t\tif( CitizenConnectApiService.getUrlParams()!=='' ) {\r\n\t\t\tappend = '?';\r\n\t\t\tif( cleanUrlPath.indexOf( '?' )> -1 ) {\r\n\t\t\t\tappend = '&';\r\n\t\t\t}\r\n\t\t\tappend += CitizenConnectApiService.getUrlParams();\r\n\t\t}\r\n\r\n\t\treturn CitizenConnectApiService.getBaseUrl() + cleanUrlPath + append;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param options\r\n\t * @param authentication\r\n\t * @returns {Promise<{headers: {Authorization: string}}>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tstatic buildAxiosConfig = async function( options = {}, authentication = true ) {\r\n\r\n\t\tlet config = {\r\n\t\t\tsignal: CitizenConnectApiService.axiosAbortController.signal,\r\n\t\t\t...options\r\n\t\t};\r\n\r\n\t\tif( authentication ) {\r\n\t\t\tlet citizenConnectApiAccessToken = await store.dispatch( 'citizenMember/getAccessToken' );\r\n\t\t\tif( citizenConnectApiAccessToken=='' ) {\r\n\t\t\t\t//console.log( 'empty access token' );\r\n\t\t\t\tthrow new ApiError( 'Not authenticated', 401 );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof ( config.headers )==='undefined' ) {\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tconfig.headers[ 'Authorization' ] = 'Bearer ' + citizenConnectApiAccessToken;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\t/**\r\n\t * Standardize error reporting up the stack to our ApiError\r\n\t * @param {Error} e\r\n\t * @throws {ApiError}\r\n\t */\r\n\tstatic apiErrorCatch = async function( e ) {\r\n\t\tif( axios.isCancel( e ) ) {\r\n\t\t\t//console.log( 'Request canceled', e.message );\r\n\t\t}\r\n\r\n\t\t//if it is a blob (file download)\r\n\t\tif( e.request.responseType==='blob' && e.response.data instanceof Blob && e.response.data.type && e.response.data.type.toLowerCase().indexOf( 'json' )!= -1 ) {\r\n\t\t\tlet resolvedResponse = JSON.parse( await e.response.data.text() );\r\n\t\t\tif( resolvedResponse.message ) {\r\n\t\t\t\tthrow new ApiError( resolvedResponse.message, resolvedResponse.status, resolvedResponse.data );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//api returned a structured error\r\n\t\tif( e.response && e.response.data && e.response.data.data ) {\r\n\t\t\tthrow new ApiError( e.response.data.message, e.response.status, e.response.data.data );\r\n\t\t}\r\n\t\t//axios error - presumably a network error\r\n\t\telse {\r\n\t\t\tthrow e\r\n\t\t}\r\n\t}\r\n\r\n\tcancel = async function( cancelMessage = '' ) {\r\n\t\tCitizenConnectApiService.axiosAbortController.abort( cancelMessage );\r\n\t\tCitizenConnectApiService.axiosAbortController = new AbortController();\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} url\r\n\t * @param {object} options\r\n\t * @param authentication\r\n\t * @returns {Promise>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tget = async function( url, options = {}, authentication = true ) {\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( options, authentication );\r\n\r\n\t\treturn axios.get( CitizenConnectApiService.urlBuild( url ), config ).catch( await CitizenConnectApiService.apiErrorCatch );\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} url\r\n\t * @param {object} data\r\n\t * @param {object} options\r\n\t * @returns {Promise>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tpost = async function( url, data, options = {}, authentication = true ) {\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( options, authentication );\r\n\r\n\t\treturn axios.post( CitizenConnectApiService.urlBuild( url ), data, config ).catch( await CitizenConnectApiService.apiErrorCatch );\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} url\r\n\t * @param {object} data\r\n\t * @param {object} options\r\n\t * @returns {Promise>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tpostForm = async function( url, data, options = {}, authentication = true ) {\r\n\t\tif( isEmpty( options.headers ) ) {\r\n\t\t\toptions.headers = {};\r\n\t\t}\r\n\t\toptions.headers[ 'Content-Type' ] = 'multipart/form-data';\r\n\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( options, authentication );\r\n\r\n\t\treturn axios.post( CitizenConnectApiService.urlBuild( url ), data, config ).catch( await CitizenConnectApiService.apiErrorCatch );\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} url\r\n\t * @param {object} data\r\n\t * @param {object} options\r\n\t * @returns {Promise>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tput = async function( url, data, options = {}, authentication = true ) {\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( options, authentication );\r\n\r\n\t\treturn axios.put( CitizenConnectApiService.urlBuild( url ), data, config ).catch( await CitizenConnectApiService.apiErrorCatch );\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} url\r\n\t * @param {object} options\r\n\t * @returns {Promise>}\r\n\t * @throws {AuthError}\r\n\t */\r\n\tdelete = async function( url, options = {}, authentication = true ) {\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( options, authentication );\r\n\r\n\t\treturn axios.delete( CitizenConnectApiService.urlBuild( url ), config ).catch( await CitizenConnectApiService.apiErrorCatch );\r\n\t}\r\n\r\n\r\n\tpostDownload = async function( url, data, options = {}, authentication = true ) {\r\n\t\tlet fullOptions = {\r\n\t\t\t...options,\r\n\t\t\tresponseType: 'blob'\r\n\t\t};\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( fullOptions, authentication );\r\n\r\n\t\tlet response = null\r\n\t\ttry {\r\n\t\t\tresponse = await axios.post( CitizenConnectApiService.urlBuild( url ), data, config )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tawait CitizenConnectApiService.apiErrorCatch( e )\r\n\t\t}\r\n\r\n\t\tif( response===null ) {\r\n\t\t\tthrow new ApiError( 'Getting download failed', 0 );\r\n\t\t}\r\n\r\n\t\tlet downloadUrl = window.URL.createObjectURL( new Blob( [ response.data ] ) );\r\n\t\tlet link = document.createElement( 'a' );\r\n\t\tlink.href = downloadUrl;\r\n\t\tlet fileName = 'file';\r\n\t\tif( response.headers[ 'content-disposition' ] ) {\r\n\t\t\tlet fileNameMatch = response.headers[ 'content-disposition' ].match( /filename=(.+)/ );\r\n\t\t\tif( fileNameMatch && fileNameMatch.length===2 ) {\r\n\t\t\t\tfileName = fileNameMatch[ 1 ].replaceAll( /[\"']/gi, '' );\r\n\t\t\t}\r\n\t\t\telse if( fileNameMatch && fileNameMatch.length===1 ) {\r\n\t\t\t\tfileName = fileNameMatch[ 0 ].replaceAll( /[\"']/gi, '' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tlink.setAttribute( 'download', fileName );\r\n\t\tdocument.body.appendChild( link );\r\n\t\tlink.click();\r\n\t\tlink.remove();\r\n\t}\r\n\r\n\r\n\tgetDownload = async function( url, options = {}, authentication = true ) {\r\n\t\tlet fullOptions = {\r\n\t\t\t...options,\r\n\t\t\tresponseType: 'blob'\r\n\t\t};\r\n\t\tlet config = await CitizenConnectApiService.buildAxiosConfig( fullOptions, authentication );\r\n\r\n\t\tlet response = null\r\n\t\ttry {\r\n\t\t\tresponse = await axios.get( CitizenConnectApiService.urlBuild( url ), config )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tawait CitizenConnectApiService.apiErrorCatch( e )\r\n\t\t}\r\n\r\n\t\tif( response===null ) {\r\n\t\t\tthrow new ApiError( 'Getting download failed', 0 );\r\n\t\t}\r\n\r\n\t\tlet downloadUrl = window.URL.createObjectURL( new Blob( [ response.data ] ) );\r\n\t\tlet link = document.createElement( 'a' );\r\n\t\tlink.href = downloadUrl;\r\n\t\tlet fileName = 'file';\r\n\t\tif( response.headers[ 'content-disposition' ] ) {\r\n\t\t\tlet fileNameMatch = response.headers[ 'content-disposition' ].match( /filename=(.+)/ );\r\n\t\t\tif( fileNameMatch && fileNameMatch.length===2 ) {\r\n\t\t\t\tfileName = fileNameMatch[ 1 ].replaceAll( /[\"']/gi, '' );\r\n\t\t\t}\r\n\t\t\telse if( fileNameMatch && fileNameMatch.length===1 ) {\r\n\t\t\t\tfileName = fileNameMatch[ 0 ].replaceAll( /[\"']/gi, '' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tlink.setAttribute( 'download', fileName );\r\n\t\tdocument.body.appendChild( link );\r\n\t\tlink.click();\r\n\t\tlink.remove();\r\n\t}\r\n\r\n\turl = function( url ) {\r\n\t\treturn CitizenConnectApiService.urlBuild( url )\r\n\t}\r\n\r\n}\r\n\r\nconst instance = new CitizenConnectApiService()\r\n\r\nObject.freeze( instance );\r\n\r\nexport default instance;\r\n","import CustomError from \"@/errors/CustomError\";\r\n\r\n\r\nclass CitizenMaintenanceError\r\n\textends CustomError {\r\n\tconstructor( message, code = 0, data = {}, guid='' ) {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper( message, code, data, guid )\r\n\t}\r\n}\r\n\r\nexport default CitizenMaintenanceError;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.$store.state.citizenMember.impersonating)?_c('v-system-bar',{staticStyle:{\"position\":\"sticky\",\"top\":\"0\",\"z-index\":\"10\"},attrs:{\"height\":\"30\",\"dark\":\"\",\"color\":\"pink darken-2\",\"lights-out\":\"\"}},[_vm._v(\" Impersonating \"),_c('v-chip',{staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"color\":\"pink darken-4\"}},[_vm._v(_vm._s(_vm.$store.state.citizenMember.user.email))]),_c('v-spacer'),_c('v-btn',{attrs:{\"x-small\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$store.dispatch('citizenMember/exitImpersonate')}}},[_vm._v(\"Exit & Return to Self\")])],1):_vm._e(),_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./citizenRouterViewWrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./citizenRouterViewWrapper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./citizenRouterViewWrapper.vue?vue&type=template&id=078003c8\"\nimport script from \"./citizenRouterViewWrapper.vue?vue&type=script&lang=js\"\nexport * from \"./citizenRouterViewWrapper.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { standardizeParcelId } from '@/services/citizen/citizenHelper';\r\nimport citizenRouterViewWrapper from '@/views/citizen/_shared/citizenRouterViewWrapper';\r\n\r\nconst routes = [\r\n\t{\r\n\t\tpath: '/citizen',\r\n\t\tcomponent: citizenRouterViewWrapper,\r\n\t\tprops: true,\r\n\t\tmeta: {\r\n\t\t\tcitizenAuth: {\r\n\t\t\t\trequired: false,\r\n\t\t\t\troles: []\r\n\t\t\t}\r\n\t\t},\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: '',\r\n\t\t\t\tname: 'citizen.dashboard',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.dashboard\" */ '@/views/citizen/dashboard'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//AUTH\r\n\t\t\t{\r\n\t\t\t\tpath: 'auth/sign-in',\r\n\t\t\t\tname: 'citizen.auth.signIn',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.auth.signIn\" */ '@/views/citizen/auth/signIn'),\r\n\t\t\t\tprops: ( route ) => ( {\r\n\t\t\t\t\tcode: route.query.code,\r\n\t\t\t\t\tstate: route.query.state,\r\n\t\t\t\t\tshowAccountCreated: route.params.showAccountCreated,\r\n\t\t\t\t\tverifyEmailAddress: route.params.verifyEmailAddress\r\n\t\t\t\t} ),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'auth/sign-out',\r\n\t\t\t\tname: 'citizen.auth.signOut',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.auth.signOut\" */ '@/views/citizen/auth/signOut.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'auth/forgot-password',\r\n\t\t\t\tname: 'citizen.auth.forgotPassword',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.auth.forgotPassword\" */ '@/views/citizen/auth/forgotPassword.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'auth/create-account',\r\n\t\t\t\tname: 'citizen.auth.createAccount',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.auth.createAccount\" */ '@/views/citizen/auth/createAccount.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'auth/error',\r\n\t\t\t\tname: 'citizen.auth.error',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.auth.error\" */ '@/views/citizen/auth/error.vue'),\r\n\t\t\t\tprops: ( route ) => ( { code: route.query.code, message: route.query.message } ),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//VERIFICATION URLs\r\n\t\t\t{\r\n\t\t\t\tpath: 'verify/changeEmail/:memberId/:changeRequestId/:requestVerificationCode',\r\n\t\t\t\tname: 'citizen.verify.changeEmail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.verify.changeEmail\" */ '@/views/citizen/verify/page.changeEmail.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'verify/account/:memberId/:verificationCode',\r\n\t\t\t\tname: 'citizen.verify.account',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.verify.account\" */ '@/views/citizen/verify/page.verifyAccount.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//ADMIN\r\n\t\t\t{\r\n\t\t\t\tpath: 'admin/status',\r\n\t\t\t\tname: 'citizen.admin.status',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.admin\" */ '@/views/citizen/admin/page.adminStatus.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ 'permission_manage_status' ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'admin/member',\r\n\t\t\t\tname: 'citizen.admin.member',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.admin\" */ '@/views/citizen/admin/page.adminMember.vue'),\r\n\t\t\t\tprops: route => ({account: route.query.account ?? '', email:route.query.email ?? '', id:route.query.id ?? null }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ 'permission_impersonate' ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//ACCOUNT SEARCH\r\n\t\t\t{\r\n\t\t\t\tpath: 'search',\r\n\t\t\t\tcomponent: citizenRouterViewWrapper,\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tname: 'citizen.search',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.search\" */ '@/views/citizen/search/page.taxsearch.vue'),\r\n\t\t\t\t\t\tprops: false,\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'tax',\r\n\t\t\t\t\t\tname: 'citizen.search.tax',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.search\" */ '@/views/citizen/search/page.taxsearch.vue'),\r\n\t\t\t\t\t\tprops: false,\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: 'utilities',\r\n\t\t\t\t\t\tname: 'citizen.search.utility',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.search\" */ '@/views/citizen/search/page.utilitiessearch.vue'),\r\n\t\t\t\t\t\tprops: false,\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\r\n\t\t\t//TAX\r\n\t\t\t{\r\n\t\t\t\tpath: 'tax',\r\n\t\t\t\tname: 'citizen.tax.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.tax\" */ '@/views/citizen/tax/page.taxOverview.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t//Tax Open Accounts\r\n\t\t\t{\r\n\t\t\t\tpath: 'tax/open-accounts',\r\n\t\t\t\tname: 'citizen.tax.openAccounts',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.taxOpenAccounts\" */ '@/views/citizen/tax/page.taxOpenAccounts.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ 'taxingservice' ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'tax/:accountNumber',\r\n\t\t\t\tname: 'citizen.tax.detail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.tax\" */ '@/views/citizen/tax/page.taxDetail.vue'),\r\n\t\t\t\tprops: route => ({accountNumber:standardizeParcelId( route.params.accountNumber ), search:route.query.search==='true' || route.query.search==1 }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//UTILITY\r\n\t\t\t{\r\n\t\t\t\tpath: 'utility',\r\n\t\t\t\tname: 'citizen.utility.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.utility\" */ '@/views/citizen/utility/page.utilityOverview.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'utility/:accountNumber',\r\n\t\t\t\tname: 'citizen.utility.detail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.utility\" */ '@/views/citizen/utility/page.utilityDetail.vue'),\r\n\t\t\t\tprops: route => ({ accountNumber:route.params.accountNumber }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//Landfill RESIDENTIAL\r\n\t\t\t{\r\n\t\t\t\tpath: 'trash',\r\n\t\t\t\tname: 'citizen.landfillResidential.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.landfillResidential\" */ '@/views/citizen/landfillResidential/page.landfillResidentialOverview.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'trash/:customerId',\r\n\t\t\t\tname: 'citizen.landfillResidential.detail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.landfillResidential\" */ '@/views/citizen/landfillResidential/page.landfillResidentialDetail.vue'),\r\n\t\t\t\tprops: route => ({ customerId:route.params.customerId+'' }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//Landfill COMMERCIAL\r\n\t\t\t{\r\n\t\t\t\tpath: 'landfill-commercial/request-access/:type',\r\n\t\t\t\tname: 'citizen.landfillCommercial.requestAccess',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.landfillCommercial\" */ '@/views/citizen/landfillCommercial/page.landfillCommercialRequestAccess.vue'),\r\n\t\t\t\tprops: route => ({ type:route.params.type }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'landfill-commercial/:type',\r\n\t\t\t\tname: 'citizen.landfillCommercial.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.landfillCommercial\" */ '@/views/citizen/landfillCommercial/page.landfillCommercialOverview.vue'),\r\n\t\t\t\tprops: route => ({ type:route.params.type }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ 'wasteworks' ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'landfill-commercial/:type/:customerId',\r\n\t\t\t\tname: 'citizen.landfillCommercial.detail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.landfillCommercial\" */ '@/views/citizen/landfillCommercial/page.landfillCommercialDetail.vue'),\r\n\t\t\t\tprops: route => ({ customerId:route.params.customerId+'', type:route.params.type }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: [ 'wasteworks' ]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t//ATV\r\n\t\t\t{\r\n\t\t\t\tpath: 'atv',\r\n\t\t\t\tname: 'citizen.atv.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.atv\" */ '@/views/citizen/atv/page.atvOverview.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'atv/:customerId/:editType?/:vehicleId?',\r\n\t\t\t\tname: 'citizen.atv.detail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.atv\" */ '@/views/citizen/atv/page.atvDetail.vue'),\r\n\t\t\t\tprops: route => ({ customerId:route.params.customerId+'', editType:route.params.editType, vehicleId:route.params.vehicleId!==null ? route.params.vehicleId+'' : null }),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t//PERMIT\r\n\t\t\t{\r\n\t\t\t\tpath: 'permit',\r\n\t\t\t\tname: 'citizen.permit.overview',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit\" */ '@/views/citizen/permit/page.permitOverview.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'permit/apply/:projectRequestId?',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit.new\" */ '@/views/citizen/permit/page.permitApply.vue'),\r\n\t\t\t\tprops: route => ( { projectRequestId: route.params.projectRequestId ? route.params.projectRequestId : 'new' } ),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tname: 'citizen.permit.apply',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit.new\" */ '@/views/citizen/permit/requestDetailViews/requestDetail.dashboard.vue'),\r\n\t\t\t\t\t\tprops: route => ( { projectRequestId: route.params.projectRequestId ? route.params.projectRequestId : 'new' } ),\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'permit/:projectId',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit\" */ '@/views/citizen/permit/page.permitDetail.vue'),\r\n\t\t\t\tprops: route => ( { projectId: route.params.projectId } ),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tchildren: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\tname: 'citizen.permit.detail',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit\" */ '@/views/citizen/permit/detailViews/permitDetail.dashboard.vue'),\r\n\t\t\t\t\t\tprops: (route)=>({ projectId:route.params.projectId }),\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':permitType/:permitId',\r\n\t\t\t\t\t\tname: 'citizen.permit.detail.permit',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit\" */ '@/views/citizen/permit/detailViews/permitDetail.permit.vue'),\r\n\t\t\t\t\t\tprops: (route)=>({ projectId:route.params.projectId, permitType:route.params.permitType, permitId:route.params.permitId }),\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tpath: ':permitType/:permitId/inspections/:inspectionGroupId/:inspectionId',\r\n\t\t\t\t\t\tname: 'citizen.permit.detail.inspection',\r\n\t\t\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.permit\" */ '@/views/citizen/permit/detailViews/permitDetail.inspection.vue'),\r\n\t\t\t\t\t\tprops: (route)=>({ projectId:route.params.projectId, permitType:route.params.permitType, permitId:route.params.permitId, inspectionGroupId:route.params.inspectionGroupId, inspectionId:route.params.inspectionId }),\r\n\t\t\t\t\t\tmeta: {\r\n\t\t\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\t\t\troles: []\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t]\r\n\t\t\t},\r\n\r\n\t\t\t//ACCOUNT\r\n\t\t\t{\r\n\t\t\t\tpath: 'account',\r\n\t\t\t\tname: 'citizen.account',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/historical-transactions',\r\n\t\t\t\tname: 'citizen.account.historicalTransactions',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.historicalTransactions.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/scheduled-transactions',\r\n\t\t\t\tname: 'citizen.account.scheduledTransactions',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.scheduledTransactions.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/autopay',\r\n\t\t\t\tname: 'citizen.account.autopay',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.autopay.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/saved-payment-methods',\r\n\t\t\t\tname: 'citizen.account.paymentMethods',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.paymentMethods.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/change-password',\r\n\t\t\t\tname: 'citizen.account.changePassword',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.password.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'account/change-email',\r\n\t\t\t\tname: 'citizen.account.changeEmail',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.account\" */ '@/views/citizen/account/page.account.email.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//REVERSE 911\r\n\t\t\t{\r\n\t\t\t\tpath: 'notifications-emergency-alerts',\r\n\t\t\t\tname: 'citizen.reverse911',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.reverse911\" */ '@/views/citizen/reverse911/page.reverse911.vue'),\r\n\t\t\t\tprops: false,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t//PAYMENT\r\n\t\t\t{\r\n\t\t\t\tpath: 'payment',\r\n\t\t\t\tname: 'citizen.payment',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.payment\" */ '@/views/citizen/payment.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'transaction/:transactionUiId',\r\n\t\t\t\tname: 'citizen.transaction',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.payment\" */ '@/views/citizen/transaction.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'feedback',\r\n\t\t\t\tname: 'citizen.feedback',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.feedback\" */ '@/views/citizen/feedback.vue'),\r\n\t\t\t\tprops: true,\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\r\n\t\t\t{\r\n\t\t\t\tpath: '*',\r\n\t\t\t\tname: 'citizen.generic.error',\r\n\t\t\t\tcomponent: () => import(/* webpackChunkName: \"citizen.error\" */ '@/views/errorPage.vue'),\r\n\t\t\t\tmeta: {\r\n\t\t\t\t\tcitizenAuth: {\r\n\t\t\t\t\t\trequired: false,\r\n\t\t\t\t\t\troles: []\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\r\n\t{\r\n\t\tpath: '*',\r\n\t\tname: 'generic.error',\r\n\t\tcomponent: () => import(/* webpackChunkName: \"error\" */ '@/views/errorPage.vue'),\r\n\t\tmeta: {\r\n\t\t\tcitizenAuth: {\r\n\t\t\t\trequired: false,\r\n\t\t\t\troles: []\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n]\r\n\r\nexport default routes;\r\n","import Vue from 'vue';\r\nimport VueRouter from 'vue-router';\r\n\r\nimport routes from '@/router/routes';\r\nimport store from '@/store/index.js';\r\n\r\nVue.use( VueRouter )\r\n\r\n\r\nconst router = new VueRouter( {\r\n\tmode: 'history',\r\n\tbase: '/',\r\n\troutes,\r\n\tscrollBehavior (to, from, savedPosition) {\r\n\t\tif (savedPosition) {\r\n\t\t\treturn { x:savedPosition.x, y:savedPosition.y, behavior: 'smooth' }\r\n\t\t} else {\r\n\t\t\tlet y = ((document.getElementById('vue-app')?.getBoundingClientRect()?.top ?? 0) + window.scrollY )-160\r\n\t\t\treturn { x: 0, y: y, behavior: 'smooth' }\r\n\t\t}\r\n\t}\r\n} )\r\n\r\n\r\nrouter.beforeEach( async ( to, from, next ) => {\r\n\r\n\t//warn and bail if needed\r\n\tif(store.getters['route/warnOnRouteChange']) {\r\n\t\tif(!confirm('Are you sure you want to navigate away? You will lose any unsaved changes.')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t//VISUAL: START ROUTING LOADING\r\n\tstore.commit('route/routing', true);\r\n\tstore.commit('route/to', to);\r\n\r\n\t//AUTHENTICATION GUARD\r\n\tif( to.meta.citizenAuth.required && !store.getters[ 'citizenMember/isSignedIn' ] && store.getters[ 'citizenMember/tryRefreshToken' ] ) {\r\n\t\tawait store.dispatch( 'citizenMember/getAccessToken' );\r\n\t}\r\n\telse if( to.meta.citizenAuth.required && !store.getters[ 'citizenMember/isSignedIn' ] ) {\r\n\t\tawait store.dispatch( 'citizenMember/reset' )\r\n\t\tawait router.push( { name: 'citizen.auth.signIn' } )\r\n\t\treturn\r\n\t}\r\n\r\n\t//verify roles allow access\r\n\tif( to.meta.citizenAuth.required && to.meta.citizenAuth.roles.length>0 ) {\r\n\t\tfor( let i in to.meta.citizenAuth.roles ) {\r\n\t\t\tif( !store.state.citizenMember.roles.includes( to.meta.citizenAuth.roles[ i ] ) ) {\r\n\t\t\t\tstore.dispatch( 'sendSnackbar', { color: 'error', message: 'Access denied' } )\r\n\t\t\t\tawait router.push( { name: 'citizen.dashboard' } )\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnext()\r\n} );\r\n\r\nrouter.onError( () => {\r\n\t//VISUAL: END ROUTING LOADING\r\n\tstore.commit( 'route/routing', false );\r\n} )\r\n\r\nrouter.afterEach( ( to, from, failure ) => {\r\n\r\n\tif( failure ) {\r\n\t\t//console.log( 'fail' )\r\n\t}\r\n\r\n\t//VISUAL: END ROUTING LOADING\r\n\tstore.commit( 'route/routing', false );\r\n\r\n} )\r\n\r\nexport default router\r\n","import { padStart } from \"lodash\"\r\n\r\nexport function standardizeParcelId( parcelId ) {\r\n\treturn padStart( parcelId, 8, '0' );\r\n}\r\n\r\nexport function sdatLink( parcelId ) {\r\n\tparcelId = standardizeParcelId( parcelId );\r\n\t//https://sdat.dat.maryland.gov/RealProperty/Pages/viewdetails.aspx?County=12&SearchType=ACCT&District=01&AccountNumber=001612\r\n\tlet link = 'https://sdat.dat.maryland.gov/RealProperty/Pages/viewdetails.aspx?County=12&SearchType=ACCT&District=';\r\n\tlink += parcelId.substring( 0, 2 );\r\n\tlink += '&AccountNumber=' + parcelId.substring( 2 );\r\n\treturn link;\r\n}","export const PAYMENT_TYPE_TAX_CODE = 'tax';\r\nexport const PAYMENT_TYPE_TAX_LABEL = 'Taxes';\r\n\r\nexport const PAYMENT_TYPE_UTILITY_CODE = 'utility';\r\nexport const PAYMENT_TYPE_UTILITY_LABEL = 'Water and Sewer';\r\n\r\nexport const PAYMENT_TYPE_LANDFILL_CODE = 'landfill';\r\nexport const PAYMENT_TYPE_LANDFILL_LABEL = 'Trash Permits';\r\n\r\nexport const PAYMENT_TYPE_ATV_CODE = 'atv';\r\nexport const PAYMENT_TYPE_ATV_LABEL = 'ATV/Snowmobile Permits';\r\n\r\nexport const PAYMENT_TYPE_PERMIT_CODE = 'permit';\r\nexport const PAYMENT_TYPE_PERMIT_LABEL = 'Permits and Inspections';\r\n\r\nexport const PAYMENT_TYPE_PERMIT_REQUEST_CODE = 'permitRequest';\r\nexport const PAYMENT_TYPE_PERMIT_REQUEST_LABEL = 'Permits and Inspections';\r\n\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE = 'commercialLandfillWaste';\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_API_CODE = 'scales';\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_LABEL = 'Commercial Solid Waste';\r\n\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE = 'commercialLandfillRecycling';\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_API_CODE = 'misc';\r\nexport const PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_LABEL = 'Commercial Recycling';\r\n\r\nexport const CITIZEN_PAGE_ACCOUNT_SETTINGS = 'Account & Payment Settings'\r\nexport const CITIZEN_PAGE_ACCOUNT_HISTORICAL_TRANSACTIONS = 'Online Payment History'\r\nexport const CITIZEN_PAGE_ACCOUNT_AUTOPAY = 'Autopay Manager'\r\nexport const CITIZEN_PAGE_ACCOUNT_SAVED_PAYMENTS = 'Saved Payment Methods'\r\nexport const CITIZEN_PAGE_ACCOUNT_SCHEDULED_PAYMENTS = 'Scheduled Payments'\r\nexport const CITIZEN_PAGE_ACCOUNT_CHANGE_PASSWORD = 'Change Password'\r\nexport const CITIZEN_PAGE_ACCOUNT_CHANGE_EMAIL = 'Change Email Address'\r\n\r\n\r\nexport const PERMIT_STATUS_TEXT_APPLICATION = 'Application';\r\nexport const PERMIT_STATUS_ID_APPLICATION = '602584c7f4150000ce006b61';\r\nexport const PERMIT_STATUS_ICON_APPLICATION = 'mdi-pencil';\r\nexport const PERMIT_STATUS_COLOR_APPLICATION = 'grey';\r\n\r\nexport const PERMIT_STATUS_TEXT_SIGNATURES_AND_PAYMENT = 'Signatures and Payment';\r\nexport const PERMIT_STATUS_ID_SIGNATURES_AND_PAYMENT = '602584c7f4150000ce006b62';\r\nexport const PERMIT_STATUS_ICON_SIGNATURES_AND_PAYMENT = 'mdi-signature-freehand';\r\nexport const PERMIT_STATUS_COLOR_SIGNATURES_AND_PAYMENT = 'light-blue';\r\n\r\nexport const PERMIT_STATUS_TEXT_APPROVED = 'Approved';\r\nexport const PERMIT_STATUS_ID_APPROVED = '60dcdce9547700001e004457';\r\nexport const PERMIT_STATUS_ICON_APPROVED = 'mdi-check';\r\nexport const PERMIT_STATUS_COLOR_APPROVED = 'success';\r\n\r\nexport const PERMIT_STATUS_TEXT_COMPLETE = 'Complete';\r\nexport const PERMIT_STATUS_ID_COMPLETE = '602584c7f4150000ce006b64';\r\nexport const PERMIT_STATUS_ICON_COMPLETE = 'mdi-archive-arrow-down';\r\nexport const PERMIT_STATUS_COLOR_COMPLETE = 'blue-grey';\r\n\r\nexport const PERMIT_STATUS_TEXT_INACTIVE = 'Inactive';\r\nexport const PERMIT_STATUS_ID_INACTIVE = '602584c7f4150000ce006b63';\r\nexport const PERMIT_STATUS_ICON_INACTIVE = 'mdi-minus-circle';\r\nexport const PERMIT_STATUS_COLOR_INACTIVE = 'warning';\r\n\r\nexport const PERMITTYPE_LABEL = {\r\n\t'assessment': 'Assessment Data',\r\n\t'construction': 'Construction Release',\r\n\t'building': 'Building Permit',\r\n\t'electrical': 'Electrical Permit',\r\n\t'entrance': 'Entrance Permit',\r\n\t'fire': 'Fire Protection',\r\n\t'floodplain': 'Floodplain Permit',\r\n\t'grading': 'Grading Permit',\r\n\t'mechanical': 'Mechanical Permit',\r\n\t'occupancy': 'Use/Occupancy Release',\r\n\t'plumbing': 'Plumbing Permit',\r\n\t'utility': 'Utility Data',\r\n\t'zoning': 'Zoning Permit',\r\n\t'timberHarvest': 'Timber Harvest Permit',\r\n\t'subdivision': 'Subdivision',\r\n}\r\n\r\nexport const PERMIT_EXTERNAL_STATUS_TEXT_NOT_SUBMITTED = 'Not Submitted';\r\nexport const PERMIT_EXTERNAL_STATUS_ID_NOT_SUBMITTED = '641b5a64995883c43f0ebd7c';\r\nexport const PERMIT_EXTERNAL_STATUS_ICON_NOT_SUBMITTED = 'mdi-pencil';\r\nexport const PERMIT_EXTERNAL_STATUS_COLOR_NOT_SUBMITTED = 'grey';\r\n\r\nexport const PERMIT_EXTERNAL_STATUS_TEXT_SUBMITTED = 'Pending Review';\r\nexport const PERMIT_EXTERNAL_STATUS_ID_SUBMITTED = '641b5a87995883c43f0ebd7e';\r\nexport const PERMIT_EXTERNAL_STATUS_ICON_SUBMITTED = 'mdi-human-greeting-proximity';\r\nexport const PERMIT_EXTERNAL_STATUS_COLOR_SUBMITTED = 'success';\r\n\r\nexport const PERMIT_EXTERNAL_STATUS_TEXT_CONVERTED = 'Converted';\r\nexport const PERMIT_EXTERNAL_STATUS_ID_CONVERTED = '641b5aa5995883c43f0ebd80';\r\nexport const PERMIT_EXTERNAL_STATUS_ICON_CONVERTED = 'mdi-archive-arrow-down';\r\nexport const PERMIT_EXTERNAL_STATUS_COLOR_CONVERTED = 'blue-grey';\r\n\r\nexport const PERMIT_EXTERNAL_STATUS_TEXT_REJECTED = 'Rejected';\r\nexport const PERMIT_EXTERNAL_STATUS_ID_REJECTED = '641b5abb995883c43f0ebd82';\r\nexport const PERMIT_EXTERNAL_STATUS_ICON_REJECTED = 'mdi-minus-circle';\r\nexport const PERMIT_EXTERNAL_STATUS_COLOR_REJECTED = 'error';\r\n\r\n\r\nexport const waitUntil = ( condition ) => {\r\n\treturn new Promise( ( resolve ) => {\r\n\t\tlet interval = setInterval( () => {\r\n\t\t\tif( !condition() ) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tclearInterval( interval )\r\n\t\t\tresolve()\r\n\t\t}, 100 )\r\n\t} )\r\n}\r\n\r\nexport const delay = function( time ) {\r\n\treturn new Promise( resolve => setTimeout( resolve, time ) );\r\n}\r\n\r\nexport const paymentTypeToRoutePrepend = ( paymentType ) => {\r\n\tif(paymentType=='public_utilites') {\r\n\t\treturn 'citizen.utility.'\r\n\t}\r\n\telse if(paymentType=='taxes') {\r\n\t\treturn 'citizen.tax.'\r\n\t}\r\n\telse if(paymentType=='landfill') {\r\n\t\treturn 'citizen.landfillResidential.'\r\n\t}\r\n\telse if(paymentType=='wasteWorks') {\r\n\t\treturn 'citizen.landfillCommercial.'\r\n\t}\r\n\telse if(paymentType=='atv') {\r\n\t\treturn 'citizen.atv.'\r\n\t}\r\n\telse if(paymentType=='permits') {\r\n\t\treturn 'citizen.permits.'\r\n\t}\r\n\treturn 'citizen.dashboard';\r\n}\r\n\r\nexport const states = {\r\n\t'AL': 'ALABAMA',\r\n\t'AK': 'ALASKA',\r\n\t'AS': 'AMERICAN SAMOA',\r\n\t'AZ': 'ARIZONA',\r\n\t'AR': 'ARKANSAS',\r\n\t'CA': 'CALIFORNIA',\r\n\t'CO': 'COLORADO',\r\n\t'CT': 'CONNECTICUT',\r\n\t'DE': 'DELAWARE',\r\n\t'DC': 'DISTRICT OF COLUMBIA',\r\n\t'FL': 'FLORIDA',\r\n\t'GA': 'GEORGIA',\r\n\t'GU': 'GUAM',\r\n\t'HI': 'HAWAII',\r\n\t'ID': 'IDAHO',\r\n\t'IL': 'ILLINOIS',\r\n\t'IN': 'INDIANA',\r\n\t'IA': 'IOWA',\r\n\t'KS': 'KANSAS',\r\n\t'KY': 'KENTUCKY',\r\n\t'LA': 'LOUISIANA',\r\n\t'ME': 'MAINE',\r\n\t'MD': 'MARYLAND',\r\n\t'MA': 'MASSACHUSETTS',\r\n\t'MI': 'MICHIGAN',\r\n\t'MN': 'MINNESOTA',\r\n\t'MS': 'MISSISSIPPI',\r\n\t'MO': 'MISSOURI',\r\n\t'MT': 'MONTANA',\r\n\t'NE': 'NEBRASKA',\r\n\t'NV': 'NEVADA',\r\n\t'NH': 'NEW HAMPSHIRE',\r\n\t'NJ': 'NEW JERSEY',\r\n\t'NM': 'NEW MEXICO',\r\n\t'NY': 'NEW YORK',\r\n\t'NC': 'NORTH CAROLINA',\r\n\t'ND': 'NORTH DAKOTA',\r\n\t'MP': 'NORTHERN MARIANA IS',\r\n\t'OH': 'OHIO',\r\n\t'OK': 'OKLAHOMA',\r\n\t'OR': 'OREGON',\r\n\t'PA': 'PENNSYLVANIA',\r\n\t'PR': 'PUERTO RICO',\r\n\t'RI': 'RHODE ISLAND',\r\n\t'SC': 'SOUTH CAROLINA',\r\n\t'SD': 'SOUTH DAKOTA',\r\n\t'TN': 'TENNESSEE',\r\n\t'TX': 'TEXAS',\r\n\t'UT': 'UTAH',\r\n\t'VT': 'VERMONT',\r\n\t'VA': 'VIRGINIA',\r\n\t'VI': 'VIRGIN ISLANDS',\r\n\t'WA': 'WASHINGTON',\r\n\t'WV': 'WEST VIRGINIA',\r\n\t'WI': 'WISCONSIN',\r\n\t'WY': 'WYOMING',\r\n};\r\n","class CustomError\r\n\textends Error {\r\n\tconstructor(message, code=0, data={}, guid='') {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper(message)\r\n\t\tthis.name = this.constructor.name;\r\n\r\n\t\t// Maintains proper stack trace for where our error was thrown (only available on V8)\r\n\t\tif (Error.captureStackTrace) {\r\n\t\t\tError.captureStackTrace(this, CustomError)\r\n\t\t}\r\n\r\n\t\t// Custom debugging information\r\n\t\tthis.message = message\r\n\t\tthis.code = code\r\n\t\tthis.data = data\r\n\t\tthis.guid = guid\r\n\t}\r\n}\r\nexport default CustomError;","import { DateTime } from 'luxon';\r\nimport Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.atv';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\tcurrentPermitYear: now.getMonth()<9 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false,\r\n\t\tvehicleTypes: [],\r\n\t\tnewVehicle: {},\r\n\t\tengineSizeUnitOfMeasurement: [\r\n\t\t\t{\r\n\t\t\t\tvalue: 'CC',\r\n\t\t\t\ttext: 'CC (Cubic Centimetres)'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'KW',\r\n\t\t\t\ttext: 'KW (Kilowatts)'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'HP',\r\n\t\t\t\ttext: 'HP (Horse Power)'\r\n\t\t\t},\r\n\t\t],\r\n\t\tvehicleColors:[\r\n\t\t\t{\r\n\t\t\t\tvalue: 'camo',\r\n\t\t\t\ttext: 'Camo'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'white',\r\n\t\t\t\ttext: 'White'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'silver',\r\n\t\t\t\ttext: 'Silver'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'black',\r\n\t\t\t\ttext: 'Black'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'gray',\r\n\t\t\t\ttext: 'Gray'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'blue',\r\n\t\t\t\ttext: 'Blue'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'red',\r\n\t\t\t\ttext: 'Red'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'green',\r\n\t\t\t\ttext: 'Green'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'brown',\r\n\t\t\t\ttext: 'Brown'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'yellow',\r\n\t\t\t\ttext: 'Yellow'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'purple',\r\n\t\t\t\ttext: 'Purple'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'maroon',\r\n\t\t\t\ttext: 'Maroon'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'orange',\r\n\t\t\t\ttext: 'Orange'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'pink',\r\n\t\t\t\ttext: 'Pink'\r\n\t\t\t},\r\n\t\t]\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\tcurrentPermitYear:function(state) {\r\n\t\treturn state.currentPermitYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tvehicleTypes:function(state){\r\n\t\treturn state.vehicleTypes;\r\n\t},\r\n\r\n\tvehicleColors:function(state){\r\n\t\treturn state.vehicleColors;\r\n\t},\r\n\r\n\tnewVehicle:function(state){\r\n\t\treturn state.newVehicle;\r\n\t},\r\n\r\n\tengineSizeUnitOfMeasurement:function(state){\r\n\t\treturn state.engineSizeUnitOfMeasurement;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_ATV_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_ATV_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_ATV_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { dispatch, commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen atv initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_ATV_CODE) );\r\n\r\n\t\tif( rootGetters[\"citizenMember/isSignedIn\"] ) {\r\n\t\t\tlet tasks = [\r\n\t\t\t\tdispatch( 'fetchVehicleTypes' ),\r\n\t\t\t\t\tdispatch( 'fetchNewVehicle', rootGetters[\"citizenMember/userId\"] )\r\n\t\t\t]\r\n\t\t\ttry {\r\n\t\t\t\tawait Promise.all( tasks )\r\n\t\t\t}\r\n\t\t\tcatch(e) {\r\n\t\t\t\tconsole.log(e)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen atv residential reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_ATV_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/atv/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, 'A7017003-C735-4678-9305-F97439B4072E' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '4456CF3D-78C2-416F-B4D9-F6667BB09E52' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, 'CA2D4F94-6796-4652-BFA0-6C59D08218BC' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tif(apiResponse.data.data.accounts[ i ].account) {\r\n\t\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[ i ].account.customerId );\r\n\t\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_ATV_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, customerId ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ customerId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', customerId);\r\n\t\tcommit('setAccountFetchingTrue', customerId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/atv/detail/' + customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', customerId );\r\n\t\t\tcommit( 'setAccountFetchingFalse', customerId );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '3F0BA787-7E56-46ED-967E-68DB8C096E2A' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '42F83DC9-A40C-4CFA-BD87-9F58DAA0476C' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, 'E19497B5-42DB-41C4-9F39-2326417B02E9' );\r\n\t\t}\r\n\r\n\t\t//standardize date fields\r\n\t\tif(apiResponse.data.data.customer.dob && apiResponse.data.data.customer.dob.includes('/')) {\r\n\t\t\tlet d = DateTime.fromFormat(apiResponse.data.data.customer.dob, \"MM/dd/yyyy\")\r\n\t\t\tif(d.isValid) {\r\n\t\t\t\tapiResponse.data.data.customer.dob = d.toISODate();\r\n\t\t\t}\r\n\t\t}\r\n\t\t//standardize date fields\r\n\t\tif(apiResponse.data.data.customer.co_dob && apiResponse.data.data.customer.co_dob.includes('/')) {\r\n\t\t\tlet d = DateTime.fromFormat(apiResponse.data.data.customer.co_dob, \"MM/dd/yyyy\")\r\n\t\t\tif(d.isValid) {\r\n\t\t\t\tapiResponse.data.data.customer.co_dob = d.toISODate();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t},\r\n\r\n\taddAccount: async function ( { commit, dispatch, rootState }, { account, year, customerId } ) {\r\n\t\t//account = permit number\r\n\t\tlet url = ''\r\n\t\tif(account) {\r\n\t\t\turl = 'v2/atv/add/'+rootState.citizenMember.user.userId+'/'+account+'/'+year\r\n\t\t}\r\n\t\telse if(customerId) {\r\n\t\t\turl = 'v2/atv/add_by_customer_id/'+rootState.citizenMember.user.userId+'/'+customerId\r\n\t\t}\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( url, {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'BE966746-B6FE-4A7C-AF61-DACC8BF280AB' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tthrow new CitizenApiError( 'Failed to add account. Try again.', 404, {}, '62788615-5D5C-4EA4-B7E1-5D8F6CBF0947' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'CBF6E3B9-415F-42C6-9D7C-5596C1A5269F' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'FEB99622-CD25-4BE5-9D11-8C4FB31FEF11' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tawait dispatch( 'citizenMember/addAccount', { type:constants.PAYMENT_TYPE_ATV_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\tcommit('defineAccountShells', [ apiResponse.data.data.account ]);\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch('getAccount', apiResponse.data.data.account);\r\n\r\n\t\t//return the new account\r\n\t\treturn apiResponse.data.data.account;\r\n\r\n\t},\r\n\r\n\tremoveAccount: async function ( { dispatch, commit, rootState }, customerId ) {\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingTrue', customerId);\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v2/atv/remove/'+rootState.citizenMember.user.userId+'/'+customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '5FA6AE43-E5AC-419E-889E-8B66CE26C828' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, '65594236-B05C-410E-880A-09C584901485' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '3778B075-69E2-4574-87C3-1BF6392B865F' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '4AAFF4C0-4486-473F-B2DA-F5AD10F0B02E' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', { type:constants.PAYMENT_TYPE_ATV_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t},\r\n\r\n\tfetchVehicleTypes:async function( { commit } ) {\r\n\r\n\t\t//tell api to remove account\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.get( 'v2/atv/vehicle_types' );\r\n\t\t\tcommit('setVehicleTypes', apiResponse.data.data)\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '9A532380-9892-493A-9D98-A4E2804ECF1E' );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tfetchNewVehicle:async function( { commit }, customerId) {\r\n\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.get( 'v2/atv/vehicle/' + customerId + '/0' );\r\n\t\t\tcommit('setNewVehicle', apiResponse.data.data)\r\n\t\t\treturn apiResponse.data.data;\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'B914CE03-AF4F-4D91-AABA-4446B90688EA' );\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlet now = new Date();\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\tstate.currentFiscalYear = now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1\r\n\t\t\t\tstate.currentPermitYear = now.getMonth()<9 ? now.getFullYear() : now.getFullYear() + 1\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor( let i in state.accounts ) {\r\n\t\t\t\t\tstate.accounts[ i ]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[ i ]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tsetNewVehicle:function ( state, newVehicle ) {\r\n\t\tstate.newVehicle = newVehicle;\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts:function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.customerId)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.customerId ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.customerId, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tupdateAppendVehicle: function ( state, { customerId, vehicle } ) {\r\n\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerId)) {\r\n\t\t\tlet updated = false;\r\n\t\t\tfor( let i in state.accounts[customerId].customer.vehicles ) {\r\n\t\t\t\tif(state.accounts[ customerId ].customer.vehicles[i].id==vehicle.id) {\r\n\t\t\t\t\tObject.assign(state.accounts[ customerId ].customer.vehicles[i], vehicle)\r\n\t\t\t\t\tupdated = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!updated) {\r\n\t\t\t\tstate.accounts[ customerId ].customer.vehicles.push( vehicle );\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Vue.set(state.accounts, customerId, newAccount)\r\n\t\t\t//console.warn('No customer with this id in state store')\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, customerIds ) {\r\n\t\tlet now = new Date();\r\n\t\tfor( let i in customerIds) {\r\n\t\t\tlet customerId = customerIds[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, customerId)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\tcustomerId:customerId\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcustomer:{},\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false,\r\n\t\t\t\t\t\tyear:{\r\n\t\t\t\t\t\t\tcurrent:now.getMonth()<10 ? now.getFullYear() : now.getFullYear()+1,\r\n\t\t\t\t\t\t\tnext:now.getMonth()<10 ? now.getFullYear()+1 : now.getFullYear()+2\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, customerId, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsetVehicleTypes:function( state, vehicleTypes ) {\r\n\t\tstate.vehicleTypes = vehicleTypes\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import { isEqual } from 'lodash';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\tbreadcrumbs:[\r\n\t\t\t{\r\n\t\t\t\ttext: 'Citizen Connect',\r\n\t\t\t\tdisabled: false,\r\n\t\t\t\texact: true,\r\n\t\t\t\tto: {\r\n\t\t\t\t\tname: 'citizen.dashboard'\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\tbreadcrumbs:function ( state ) {\r\n\t\treturn state.breadcrumbs;\r\n\t}\r\n}\r\n\r\n\r\nconst actions = {\r\n\treset:function( { commit } ) {\r\n\t\tcommit( 'reset' )\r\n\t},\r\n\r\n\tnew:function( { commit }, breadcrumbs ) {\r\n\t\tcommit( 'new', breadcrumbs )\r\n\t},\r\n\r\n\tpush:function( { commit }, breadcrumbs ) {\r\n\t\tcommit( 'push', breadcrumbs )\r\n\t},\r\n\r\n\tpop:function( { commit }, breadcrumbs ) {\r\n\t\tcommit( 'pop', breadcrumbs )\r\n\t},\r\n}\r\n\r\nconst mutations = {\r\n\r\n\treset:function ( state ) {\r\n\t\tObject.assign( state, getDefaultState() )\r\n\t},\r\n\r\n\tnew: function ( state, breadcrumbs ) {\r\n\t\tif( !Array.isArray( breadcrumbs )) {\r\n\t\t\tbreadcrumbs = [ breadcrumbs ];\r\n\t\t}\r\n\t\tObject.assign( state, getDefaultState() );\r\n\t\tstate.breadcrumbs = state.breadcrumbs.concat( breadcrumbs );\r\n\t},\r\n\r\n\tpush: function ( state, breadcrumbs ) {\r\n\t\tif( !Array.isArray( breadcrumbs )) {\r\n\t\t\tbreadcrumbs = [ breadcrumbs ];\r\n\t\t}\r\n\r\n\t\tstateLoop:\r\n\t\tfor( let i in state.breadcrumbs ) {\r\n\t\t\tfor( let j in breadcrumbs ) {\r\n\t\t\t\tif( breadcrumbs[j].to.name===state.breadcrumbs[i].to.name && isEqual(breadcrumbs[j].to.params, state.breadcrumbs[i].to.params)) {\r\n\t\t\t\t\tstate.breadcrumbs.splice( i );\r\n\t\t\t\t\tbreak stateLoop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tstate.breadcrumbs = state.breadcrumbs.concat( breadcrumbs );\r\n\t},\r\n\r\n\tpop: function ( state ) {\r\n\t\tstate.breadcrumbs.pop();\r\n\t}\r\n\r\n}\r\n\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.landfillCommercialRecycling';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen landfill residential initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE) );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen landfill residential reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/wasteworks/' + constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_API_CODE + '/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '622C40D5-7C91-4158-BB24-B0BD6F03AA18' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'CCCEE747-2408-4994-B150-95767DB47C19' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '60D814F6-C113-469F-88A5-3DF56ACD5661' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tif(apiResponse.data.data.accounts[ i ].account) {\r\n\t\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[ i ].account.customerId );\r\n\t\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, customerId ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ customerId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', customerId);\r\n\t\tcommit('setAccountFetchingTrue', customerId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/wasteworks/' + constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_API_CODE + '/detail/' + customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', customerId );\r\n\t\t\tcommit( 'setAccountFetchingFalse', customerId );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '73F0D978-0790-4254-81F0-30A821D2D5D4' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'D77C312C-2AB2-433F-813F-976B75D50626' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '7A294D76-EBFA-494B-8B83-574D1D59AFB2' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t},\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor(let i in state.accounts) {\r\n\t\t\t\t\tstate.accounts[i]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[i]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts:function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.customerId)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.customerId ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.customerId, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, customerIds ) {\r\n\t\tfor( let i in customerIds) {\r\n\t\t\tlet customerId = customerIds[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, customerId)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\tcustomerId:customerId\r\n\t\t\t\t\t},\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, customerId, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.landfillCommercialWaste';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen landfill residential initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE) );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen landfill residential reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/wasteworks/' + constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_API_CODE + '/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '3B619248-7BF2-48A8-A8D9-D4E0A304B097' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '040EEC53-C379-4F6F-9D2B-2FBFFCBB7483' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, 'C4DE6DB9-50F4-4BE4-B697-16771FF32803' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tif(apiResponse.data.data.accounts[ i ].account) {\r\n\t\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[ i ].account.customerId );\r\n\t\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, customerId ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ customerId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', customerId);\r\n\t\tcommit('setAccountFetchingTrue', customerId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/wasteworks/' + constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_API_CODE + '/detail/' + customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', customerId );\r\n\t\t\tcommit( 'setAccountFetchingFalse', customerId );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '099C8454-47F9-4519-A1B6-87E829785EB7' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'A550E15B-2726-4ADB-B4AA-DA02BE737D26' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, 'B164EA38-39C8-4D96-8396-018E07B949E8' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t},\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor(let i in state.accounts) {\r\n\t\t\t\t\tstate.accounts[i]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[i]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts:function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.customerId)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.customerId ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.customerId, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, customerIds ) {\r\n\t\tfor( let i in customerIds) {\r\n\t\t\tlet customerId = customerIds[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, customerId)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\tcustomerId:customerId\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcustomer:{\r\n\t\t\t\t\t\tid:customerId\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttickets:[],\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1,\r\n\t\t\t\t\t\tmessages:{\r\n\t\t\t\t\t\t\twarnings:[],\r\n\t\t\t\t\t\t\tnotices:[],\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, customerId, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.landfillResidential';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\tcurrentPermitYear: now.getMonth()<9 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_LANDFILL_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_LANDFILL_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_LANDFILL_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen landfill residential initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_LANDFILL_CODE) );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen landfill residential reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_LANDFILL_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/landfill/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '7823A677-AAC3-4577-8079-3911115A3D45' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '1D173C10-5A02-4D24-9BB2-93525BFFF5D9' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse==null || apiResponse=='' ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '985ED2F2-866A-465B-8A81-C16C50892866' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tif(apiResponse.data.data.accounts[ i ].account) {\r\n\t\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[ i ].account.customerId );\r\n\t\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_LANDFILL_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, customerId ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ customerId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', customerId);\r\n\t\tcommit('setAccountFetchingTrue', customerId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/landfill/detail/' + customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '3FAC010B-EEDA-4897-AD07-833CAB24BA28' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '7488bd93-3fa6-4f66-917a-6513d3f6820d' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'E63AF55A-D882-4B0F-9F47-F6B77956656F' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'FE8913C6-4C7F-4622-B07D-4193627D252E' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\tcommit('setAccountFetchingFalse', customerId);\r\n\t},\r\n\r\n\taddAccount: async function ( { commit, dispatch, rootState }, customerId ) {\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', customerId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/landfill/add/'+rootState.citizenMember.user.userId+'/'+customerId.trim(), {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '94E7180C-9B47-48AE-84F8-BCE2560A862E' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'Failed to add account. Try again.', 404, {}, 'AA0FEB22-156E-4E38-A3A1-EDB8715276F1' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'AF74326B-EDF5-44AE-B79B-81BB2B22F249' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountLoadingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '59B0DBB5-7278-4E1E-AD83-0E3E26DBD684' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tawait dispatch( 'citizenMember/addAccount', { type:constants.PAYMENT_TYPE_LANDFILL_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\tcommit('defineAccountShells', [ apiResponse.data.data.account ]);\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch('getAccount', apiResponse.data.data.account);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', customerId);\r\n\r\n\t\t//return the new account\r\n\t\treturn apiResponse.data.data.account;\r\n\r\n\t},\r\n\r\n\tremoveAccount: async function ( { dispatch, commit, rootState }, customerId ) {\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingTrue', customerId);\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v2/landfill/remove/'+rootState.citizenMember.user.userId+'/'+customerId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '6E4174A7-CB8A-4C02-AF82-414FE5FB2157' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, '209AB67B-E12C-4C1C-84F1-2518D9F656E9' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '60ED0961-D97C-40A7-B345-40FB03741FF7' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '5A334837-AFB5-4F06-8BB9-1FBC451BB635' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', { type:constants.PAYMENT_TYPE_LANDFILL_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingFalse', customerId);\r\n\t}\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlet now = new Date();\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\tstate.currentFiscalYear = now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1\r\n\t\t\t\tstate.currentPermitYear = now.getMonth()<9 ? now.getFullYear() : now.getFullYear() + 1\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor( let i in state.accounts ) {\r\n\t\t\t\t\tstate.accounts[ i ]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[ i ]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts:function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, customerIds ) {\r\n\t\tif(!Array.isArray(customerIds)) {\r\n\t\t\tcustomerIds = [ customerIds ];\r\n\t\t}\r\n\t\tfor( let i in customerIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, customerIds[i] ) ) {\r\n\t\t\t\tstate.accounts[ customerIds[i] ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.customerId)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.customerId ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.customerId, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, customerIds ) {\r\n\t\tlet now = new Date();\r\n\t\tfor( let i in customerIds) {\r\n\t\t\tlet customerId = customerIds[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, customerId)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\tcustomerId:customerId\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcustomer:{},\r\n\t\t\t\t\tpermits:[],\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false,\r\n\t\t\t\t\t\tyear:{\r\n\t\t\t\t\t\t\tcurrent:now.getMonth()<10 ? now.getFullYear() : now.getFullYear()+1,\r\n\t\t\t\t\t\t\tlandfill:now.getMonth()<10 ? now.getFullYear()-1 : now.getFullYear(),\r\n\t\t\t\t\t\t\tnext:now.getFullYear()+1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, customerId, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import { isEmpty } from 'lodash';\r\nimport Vue from 'vue';\r\n\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.payment';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\ttransactions: {},\r\n\r\n\t\tfetchingVaults: false,\r\n\t\tvaults: [],\r\n\r\n\t\tfetchingBlankPaymentClient:false,\r\n\t\tblankPaymentClient:[],\r\n\r\n\t\tfetchingHistoricalTransactions:false,\r\n\t\thistoricalTransactions:[],\r\n\r\n\t\tfetchingScheduledTransactions:false,\r\n\t\tscheduledTransactions:[]\r\n\t}\r\n}\r\n\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\r\n\ttransactions:function(state){\r\n\t\treturn state.transactions;\r\n\t},\r\n\r\n\tvaults:function(state){\r\n\t\treturn state.vaults;\r\n\t},\r\n\r\n\tfetchingHistoricalTransactions:function ( state ) {\r\n\t\treturn state.fetchingHistoricalTransactions;\r\n\t},\r\n\r\n\thistoricalTransactions:function ( state ) {\r\n\t\treturn state.historicalTransactions;\r\n\t},\r\n\r\n\tfetchingScheduledTransactions:function ( state ) {\r\n\t\treturn state.fetchingScheduledTransactions;\r\n\t},\r\n\r\n\tscheduledTransactions:function ( state ) {\r\n\t\treturn state.scheduledTransactions;\r\n\t}\r\n\r\n}\r\n\r\nconst actions = {\r\n\tinitialize: async function ( ) {\r\n\t\t//console.log( 'citizen payment store initialize' )\r\n\t\t//await commit( 'setModuleStateFromLocalStorage' );\r\n\t},\r\n\r\n\treset:async function({ commit }) {\r\n\t\tcommit('reset')\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tfetchVaults: async function({ commit, rootGetters }) {\r\n\t\tcommit('setFetchingVaults', true);\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/get_vaults/' + rootGetters['citizenMember/userId'] );\r\n\t\t\t//console.log( apiResponse )\r\n\t\t\tawait commit( 'setVaults', apiResponse.data.data )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log(e);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'B462C42D-A175-49B5-907C-0E0CAFB84C14' );\r\n\t\t}\r\n\r\n\t\tcommit('setFetchingVaults', false);\r\n\r\n\t},\r\n\r\n\tfetchBlankPaymentClient: async function({ commit }) {\r\n\t\tcommit('setFetchingBlankPaymentClient', true);\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/blank_client' );\r\n\t\t\t//console.log( apiResponse )\r\n\t\t\tawait commit( 'setBlankPaymentClient', apiResponse.data.data )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log(e);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'D4F3F7EF-76E9-4F8D-BAB3-BA1F4A248FD1' );\r\n\t\t}\r\n\r\n\t\tcommit('setFetchingBlankPaymentClient', false);\r\n\r\n\t},\r\n\r\n\r\n\t/**\r\n\t * @param {Object} params\r\n\t * @param {Object} params.vault - Vault object (with updated data)\r\n\t * @param {string} params.paymentType - The payment type (taxes, public_utilities, etc)\r\n\t * @param {string} params.methodType - The payment method type (credit, echeck )\r\n\t * @param {function} params.successCallback - Optional success callback function\r\n\t * @param {function} params.errorCallback - Optional error callback function\r\n\t */\r\n\tupdateVault: async function ( {dispatch, commit, rootGetters}, params ) {\r\n\r\n\t\t//console.log( 'updateVault' );\r\n\r\n\t\t//VALIDATION\r\n\t\ttry {\r\n\t\t\tif( isEmpty( params ) ) {\r\n\t\t\t\tthrow new Error( 'Cannot update vault without providing the parameters to update' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.paymentType ) != 'string' || params.paymentType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment type is required' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.methodType ) != 'string' || params.methodType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment method is required' );\r\n\t\t\t}\r\n\t\t\telse if( isEmpty( params.vault ) || typeof ( params.vault.id ) == 'undefined' || params.vault.id === null ) {\r\n\t\t\t\tthrow new Error( 'Vault is required' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root:true} );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//UPDATE\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.post( 'v2/payment/update_vault/' + rootGetters['citizenMember/userId'] + '/' + params.paymentType + '/' + params.methodType + '/' + params.vault.id, params.vault );\r\n\r\n\t\t\tif( apiResponse.data.error ) {\r\n\t\t\t\tthrow new Error( apiResponse.data.message );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof ( params.successCallback ) == 'function' ) {\r\n\t\t\t\tparams.successCallback( apiResponse.data );\r\n\t\t\t}\r\n\r\n\t\t\tcommit('updateVault', params.vault);\r\n\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'Saved payment method updated successfully',\r\n\t\t\t\tcolor: 'success',\r\n\t\t\t}, {root: true} )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tif( typeof ( params.errorCallback ) == 'function' ) {\r\n\t\t\t\tparams.errorCallback( e );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root: true} )\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * @param {Object} params\r\n\t * @param {string} params.vaultId - Vault id to remove\r\n\t * @param {string} params.paymentType - The payment type (taxes, public_utilities, etc)\r\n\t * @param {string} params.methodType - The payment method type (credit, echeck )\r\n\t * @param {function} params.successCallback - Optional success callback function\r\n\t * @param {function} params.errorCallback - Optional error callback function\r\n\t */\r\n\tremoveVault: async function ( {dispatch, commit, rootGetters}, params ) {\r\n\r\n\t\t//console.log( 'removeVault' );\r\n\r\n\t\t//VALIDATION\r\n\t\ttry {\r\n\t\t\tif( isEmpty( params ) ) {\r\n\t\t\t\tthrow new Error( 'Cannot remove vault without providing the parameters to remove' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.paymentType ) != 'string' || params.paymentType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment type is required' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.methodType ) != 'string' || params.methodType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment method is required' );\r\n\t\t\t}\r\n\r\n\t\t\telse if( !params.vaultId ) {\r\n\t\t\t\tthrow new Error( 'Vault id is required' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root: true} );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//REMOVE\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.delete( 'v2/payment/remove_vault/' + rootGetters['citizenMember/userId'] + '/' + params.paymentType + '/' + params.methodType + '/' + params.vaultId );\r\n\r\n\t\t\tif( apiResponse.data.error ) {\r\n\t\t\t\tthrow new Error( apiResponse.data.message );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof ( params.successCallback ) == 'function' ) {\r\n\t\t\t\tparams.successCallback( apiResponse.data );\r\n\t\t\t}\r\n\r\n\t\t\tcommit('removeVault', params.vaultId);\r\n\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'Saved payment method has been removed',\r\n\t\t\t\tcolor: 'success',\r\n\t\t\t}, {root: true} )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tif( typeof ( params.errorCallback ) == 'function' ) {\r\n\t\t\t\tparams.errorCallback( e );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root: true} )\r\n\t\t}\r\n\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * @param {Object} params\r\n\t * @param {string} params.account - Account number to enable autopay for\r\n\t * @param {string} params.paymentType - The type of the account (taxes, public_utilities, etc)\r\n\t * @param {string} params.methodType - The payment method type to use for autopay for this account (credit, echeck )\r\n\t * @param {string} params.vaultId - Vault id to use for autopay\r\n\t * @param {function} params.successCallback - Optional success callback function\r\n\t * @param {function} params.errorCallback - Optional error callback function\r\n\t */\r\n\tsaveAutopay: async function ( {dispatch, rootGetters}, params ) {\r\n\t\t//console.log( 'saveAutopay' );\r\n\r\n\t\t//VALIDATION\r\n\t\ttry {\r\n\t\t\tif( isEmpty( params ) ) {\r\n\t\t\t\tthrow new Error( 'Cannot save autopay without providing the parameters to save' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.paymentType ) != 'string' || params.paymentType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment type is required' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.methodType ) != 'string' || params.methodType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment method is required' );\r\n\t\t\t}\r\n\t\t\telse if( (typeof ( params.vaultId ) != 'string' && typeof ( params.vaultId ) != 'number') || params.vaultId === '' ) {\r\n\t\t\t\tthrow new Error( 'Vault id is required' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.account ) != 'string' || params.account === '' ) {\r\n\t\t\t\tthrow new Error( 'Account is required' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root:true} );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//SAVE\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.postForm( 'v2/payment/save_autopay/' + rootGetters['citizenMember/userId'] + '/' + params.paymentType + '/' + params.account, {\r\n\t\t\t\tmethodType: params.methodType,\r\n\t\t\t\tvaultId: params.vaultId\r\n\t\t\t} );\r\n\r\n\t\t\tif( apiResponse.data.error ) {\r\n\t\t\t\tthrow new Error( apiResponse.data.message );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof ( params.successCallback ) == 'function' ) {\r\n\t\t\t\tparams.successCallback( apiResponse.data );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'Saved autopay settings for ' + params.account,\r\n\t\t\t\tcolor: 'success',\r\n\t\t\t}, {root: true} )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tif( typeof ( params.errorCallback ) == 'function' ) {\r\n\t\t\t\tparams.errorCallback( e );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root: true} )\r\n\t\t}\r\n\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * @param {Object} params\r\n\t * @param {string} params.account - Account number to enable autopay for\r\n\t * @param {string} params.paymentType - The payment type (taxes, public_utilities, etc)\r\n\t * @param {function} params.successCallback - Optional success callback function\r\n\t * @param {function} params.errorCallback - Optional error callback function\r\n\t */\r\n\tdisableAutopay: async function ( {dispatch,rootGetters}, params ) {\r\n\r\n\t\t//console.log( 'disableAutopay' );\r\n\r\n\t\t//VALIDATION\r\n\t\ttry {\r\n\t\t\tif( isEmpty( params ) ) {\r\n\t\t\t\tthrow new Error( 'Cannot disable autopay without providing parameters' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.paymentType ) != 'string' || params.paymentType === '' ) {\r\n\t\t\t\tthrow new Error( 'Payment type is required' );\r\n\t\t\t}\r\n\t\t\telse if( typeof ( params.account ) != 'string' || params.account === '' ) {\r\n\t\t\t\tthrow new Error( 'Account is required' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tdispatch( 'sendErrorSnackbar', e );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//DISABLE\r\n\t\ttry {\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.delete( 'v2/payment/disable_autopay/' + rootGetters['citizenMember/userId'] + '/' + params.paymentType + '/' + params.account );\r\n\r\n\t\t\tif( apiResponse.data.error ) {\r\n\t\t\t\tthrow new Error( apiResponse.data.message );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof ( params.successCallback ) == 'function' ) {\r\n\t\t\t\tparams.successCallback( apiResponse.data );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'Disabled autopay for ' + params.account,\r\n\t\t\t\tcolor: 'success',\r\n\t\t\t}, {root: true} )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tif( typeof ( params.errorCallback ) == 'function' ) {\r\n\t\t\t\tparams.errorCallback( e );\r\n\t\t\t}\r\n\r\n\t\t\tdispatch( 'sendErrorSnackbar', e, {root: true} )\r\n\t\t}\r\n\t},\r\n\r\n\tshellTransactionIfItDoesNotExist: async function({commit}, transactionUiId ) {\r\n\t\tcommit('defineTransactionShells', [ transactionUiId ]);\r\n\t},\r\n\r\n\tgetTransaction: async function ( {commit,rootGetters}, transactionUiId ) {\r\n\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineTransactionShells', [ transactionUiId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setTransactionLoadingTrue', transactionUiId);\r\n\t\tcommit('setTransactionFetchingTrue', transactionUiId);\r\n\r\n\t\tlet isScheduledTransaction = transactionUiId.startsWith('S-');\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tlet urlKey = 'transaction';\r\n\t\t\tif(isScheduledTransaction) {\r\n\t\t\t\turlKey = 'scheduled_transaction';\r\n\t\t\t}\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/'+ urlKey +'/' + rootGetters['citizenMember/userId'] + '/' + transactionUiId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setTransactionLoadingFalse', transactionUiId);\r\n\t\t\tcommit('setTransactionFetchingFalse', transactionUiId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '518AA803-3833-442E-903E-5CC98FD9E114' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setTransactionLoadingFalse', transactionUiId);\r\n\t\t\tcommit('setTransactionFetchingFalse', transactionUiId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the transaction or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '611881BC-E192-4A54-BADC-A5EC9A56F0A3' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setTransactionLoadingFalse', transactionUiId);\r\n\t\t\tcommit('setTransactionFetchingFalse', transactionUiId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '606FCC93-60E2-4EB7-A76E-6026376F2CDD' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setTransactionLoadingFalse', transactionUiId);\r\n\t\t\tcommit('setTransactionFetchingFalse', transactionUiId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '05E983B3-BF38-4EF8-8B71-4F192FAC7FCE' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tapiResponse.data.data.transactionUiId = transactionUiId;\r\n\t\tcommit( 'updateAppendTransaction', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setTransactionLoadingFalse', transactionUiId);\r\n\t\tcommit('setTransactionFetchingFalse', transactionUiId);\r\n\t},\r\n\r\n\r\n\tfetchScheduledTransactions: async function({ commit, rootGetters }) {\r\n\t\tcommit('setFetchingScheduledTransactions', true);\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/scheduled_transactions/' + rootGetters['citizenMember/userId'] );\r\n\t\t\t//console.log( apiResponse )\r\n\t\t\tawait commit( 'setScheduledTransactions', apiResponse.data.data )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log(e);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '99C2B263-89C5-4DA1-BEF7-D0207E15D00E' );\r\n\t\t}\r\n\r\n\t\tcommit('setFetchingScheduledTransactions', false);\r\n\t},\r\n\r\n\tfetchHistoricalTransactions: async function({ commit, rootGetters }) {\r\n\t\tcommit('setFetchingHistoricalTransactions', true);\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/transactions/' + rootGetters['citizenMember/userId'] );\r\n\t\t\tawait commit( 'setHistoricalTransactions', apiResponse.data.data )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '99C2B263-89C5-4DA1-BEF7-D0207E15D00E' );\r\n\t\t}\r\n\r\n\t\tcommit('setFetchingHistoricalTransactions', false);\r\n\t},\r\n\r\n\tcancelScheduledTransaction: async function({ commit, rootGetters }, transactionId) {\r\n\t\ttry {\r\n\t\t\tawait CitizenConnectApiService.delete( 'v2/payment/scheduled_transactions/' + rootGetters['citizenMember/userId'] + '/' + transactionId );\r\n\t\t\tawait commit( 'removeScheduledTransaction', transactionId )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '34861FBA-C297-4B7F-B3D1-815292F528F1' );\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst mutations = {\r\n\r\n\treset:function(state) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tupdateVault:function( state, vault ) {\r\n\t\tfor(let i in state.vaults) {\r\n\t\t\tif(state.vaults[i].id==vault.id) {\r\n\t\t\t\tstate.vaults[i]= vault;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tremoveVault:function( state, vaultId ) {\r\n\t\tfor(let i in state.vaults) {\r\n\t\t\tif(state.vaults[i].id==vaultId) {\r\n\t\t\t\tstate.vaults.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetTransactionLoadingTrue: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetTransactionLoadingFalse: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetTransactionFetchingTrue: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetTransactionFetchingFalse: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetTransactionRemovingTrue: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetTransactionRemovingFalse: function ( state, transactionUiIds ) {\r\n\t\tif(!Array.isArray(transactionUiIds)) {\r\n\t\t\ttransactionUiIds = [ transactionUiIds ];\r\n\t\t}\r\n\t\tfor( let i in transactionUiIds ) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId ) ) {\r\n\t\t\t\tstate.transactions[ transactionUiId ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tupdateAppendTransaction: function ( state, transaction ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.transactions, transaction.publicIdentifier)) {\r\n\t\t\tObject.assign(state.transactions[ transaction.transactionUiId ], transaction)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.transactions, transaction.transactionUiId, transaction)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineTransactionShells: function ( state, transactionUiIds ) {\r\n\t\tfor( let i in transactionUiIds) {\r\n\t\t\tlet transactionUiId = transactionUiIds[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.transactions, transactionUiId)) {\r\n\t\t\t\tlet transactionShell = {\r\n\t\t\t\t\tpublicIdentifier:transactionUiId,\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.transactions, transactionUiId, transactionShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsetFetchingVaults: function ( state, val ) {\r\n\t\tstate.fetchingVaults = val;\r\n\t},\r\n\r\n\tsetVaults:function(state, vaults) {\r\n\t\tstate.vaults = vaults;\r\n\t},\r\n\r\n\tsetFetchingBlankPaymentClient: function ( state, val ) {\r\n\t\tstate.fetchingBlankPaymentClient = val;\r\n\t},\r\n\r\n\tsetBlankPaymentClient:function(state, blankPaymentClient) {\r\n\t\tstate.blankPaymentClient = blankPaymentClient;\r\n\t},\r\n\r\n\tsetFetchingHistoricalTransactions: function ( state, val ) {\r\n\t\tstate.fetchingHistoricalTransactions = val;\r\n\t},\r\n\r\n\tsetHistoricalTransactions:function(state, transactions) {\r\n\t\tstate.historicalTransactions = transactions;\r\n\t},\r\n\r\n\tsetFetchingScheduledTransactions: function ( state, val ) {\r\n\t\tstate.fetchingScheduledTransactions = val;\r\n\t},\r\n\r\n\tsetScheduledTransactions:function(state, transactions) {\r\n\t\tstate.scheduledTransactions = transactions;\r\n\t},\r\n\r\n\tremoveScheduledTransaction:function(state, transactionId) {\r\n\t\tlet index = null;\r\n\t\tfor(let i in state.scheduledTransactions) {\r\n\t\t\tif(state.scheduledTransactions[i].id==transactionId) {\r\n\t\t\t\tindex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index!==null) {\r\n\t\t\tstate.scheduledTransactions.splice( index, 1 )\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import {ApiError} from '@gcgov/apiservice';\r\nimport jwt_decode from 'jwt-decode';\r\nimport Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport { waitUntil } from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\nimport PermitsApiService from '@/services/citizen/PermitsApiService';\r\n\r\nconst storeKey = 'citizen.store.permit';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\taccessToken: '',\r\n\t\tuser: {},\r\n\t\tprojects: {},\r\n\r\n\t\tprojectRequests: {},\r\n\r\n\t\tpaymentClients: {},\r\n\r\n\t\trunningGetMemberAccounts: false,\r\n\r\n\t\tfetchingBlankPaymentClient: false,\r\n\t\tblankPaymentClient: null,\r\n\r\n\r\n\t\tfetchingKeyValueItems: false,\r\n\t\tkeyValueItems: [],\r\n\t\tkeyValueItemsLastFetched: null,\r\n\r\n\t\tmoduleStatusLastChecked: null\r\n\t}\r\n}\r\n\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tprojects: function( state ) {\r\n\t\treturn state.projects;\r\n\t},\r\n\tprojectRequests: function( state ) {\r\n\t\treturn state.projectRequests;\r\n\t},\r\n\r\n\tmemberProjects: function( state, getters, rootState, rootGetters ) {\r\n\t\tlet projectKeys = rootGetters[ \"citizenMember/accountNumbers\" ]( constants.PAYMENT_TYPE_PERMIT_CODE );\r\n\t\tlet projects = [];\r\n\t\tfor( let i in projectKeys ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectKeys[ i ].projectId ) ) {\r\n\t\t\t\tprojects.push( state.projects[ projectKeys[ i ].projectId ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn projects;\r\n\t},\r\n\r\n\tmemberProjectRequests: function( state, getters, rootState, rootGetters ) {\r\n\t\tlet projectRequestKeys = rootGetters[ \"citizenMember/accountNumbers\" ]( constants.PAYMENT_TYPE_PERMIT_REQUEST_CODE );\r\n\t\tlet projectRequests = [];\r\n\t\tfor( let i in projectRequestKeys ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestKeys[ i ].projectRequestId ) ) {\r\n\t\t\t\tprojectRequests.push( state.projectRequests[ projectRequestKeys[ i ].projectRequestId ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn projectRequests;\r\n\t},\r\n\r\n\r\n\tkeyValueItemCollection: function( state ) {\r\n\t\tlet keyValueItemObj = {};\r\n\t\tfor( let i = 0; i=( decodedCurrentAccessToken.exp * 1000 ) ) {\r\n\t\t\t\tgetNewToken = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tgetNewToken = true;\r\n\t\t}\r\n\r\n\t\tif( getNewToken ) {\r\n\t\t\ttry {\r\n\t\t\t\tlet apiResponse = await PermitsApiService.exchangeCitizenConnectTokenForPermitToken()\r\n\t\t\t\tcommit( 'setAccessToken', apiResponse.data.access_token )\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\t//console.log( e )\r\n\t\t\t\tthrow new ApiError( 'Failed to connect to the permits system', 401, '87B3B696-1995-4BBC-BBDA-574C04481B5E' )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn state.accessToken;\r\n\t},\r\n\r\n\tdefineProjectShells: function( { commit }, projectKeys ) {\r\n\t\tcommit( 'defineProjectShells', projectKeys )\r\n\t},\r\n\r\n\tdefineProjectRequestShells: function( { commit }, projectKeys ) {\r\n\t\tcommit( 'defineProjectRequestShells', projectKeys )\r\n\t},\r\n\r\n\tfetchKeyValueItems: async function( { commit, dispatch }, force = false ) {\r\n\t\t//3600000ms=24 hours\r\n\t\tconst hours24 = 3600000;\r\n\t\tconst now = new Date().getTime();\r\n\t\tif( now - state.keyValueItemsLastFetched setTimeout( r, 100 ) );\r\n\t\t\t\tdispatches.push( dispatch( 'getProject', {\r\n\t\t\t\t\tprojectId: memberProjectKeys[ i ].projectId,\r\n\t\t\t\t\tprojectNumber: memberProjectKeys[ i ].projectNumber\r\n\t\t\t\t} ) );\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor( let i in memberProjectRequestKeys ) {\r\n\t\t\tif( typeof memberProjectRequestKeys[ i ].projectRequestId==='string' ) {\r\n\t\t\t\t//wait 100 milliseconds\r\n\t\t\t\tawait new Promise( r => setTimeout( r, 100 ) );\r\n\t\t\t\tdispatches.push( dispatch( 'getProjectRequest', {\r\n\t\t\t\t\tprojectRequestId: memberProjectRequestKeys[ i ].projectRequestId,\r\n\t\t\t\t\tprojectRequestNumber: memberProjectRequestKeys[ i ].projectRequestNumber\r\n\t\t\t\t} ) );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait Promise.all( dispatches ).finally( () => commit( 'setRunningGetMemberAccounts', false ) );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tif( e instanceof CitizenMaintenanceError ) {\r\n\t\t\t\tthrow e\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t},\r\n\r\n\tgetModuleStatus: async function( { state, commit } ) {\r\n\t\t//if we have not checked the status or it has been more than 10 seconds since we last checked\r\n\t\tlet now = new Date()\r\n\t\tif( state.moduleStatusLastChecked===null || now.getTime() - state.moduleStatusLastChecked.getTime()>10000 ) {\r\n\t\t\tcommit( 'setModuleStatusLastChecked', now )\r\n\t\t\t//verify module is enabled\r\n\t\t\ttry {\r\n\t\t\t\tawait CitizenConnectApiService.get( 'v2/permits/status' );\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\tcommit( 'setModuleStatusLastChecked', null )\r\n\t\t\t\tif( e.code==503 ) {\r\n\t\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, 'F77AABE1-5B82-488F-AE12-5B00CC60EE66' );\r\n\t\t\t\t}\r\n\t\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '028F67BE-7EAF-4A67-B357-6C1043A6884C' );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetProject: async function( { state, commit, dispatch }, { projectId, projectNumber } ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit( 'defineProjectShells', [ { projectId: projectId, projectNumber: projectNumber } ] );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectLoadingTrue', projectId );\r\n\t\tcommit( 'setProjectFetchingTrue', projectId );\r\n\t\tcommit( 'setProjectError', { projectId: projectId, error: false, message: '' } )\r\n\r\n\t\t//verify module is enabled\r\n\t\ttry {\r\n\t\t\tawait dispatch( 'getModuleStatus' )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectLoadingFalse', projectId );\r\n\t\t\tcommit( 'setProjectFetchingFalse', projectId );\r\n\t\t\tthrow e\r\n\t\t}\r\n\r\n\t\t//get data from api\r\n\t\tlet projectApiResponse = null;\r\n\t\ttry {\r\n\t\t\tprojectApiResponse = await PermitsApiService.get( '/project/' + projectId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectLoadingFalse', projectId );\r\n\t\t\tcommit( 'setProjectFetchingFalse', projectId );\r\n\t\t\tcommit( 'setProjectError', { projectId: projectId, error: true, message: e.message } )\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '74875EE9-C55D-4456-9524-3587D41D5047' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( projectApiResponse===null ) {\r\n\t\t\tcommit( 'setProjectLoadingFalse', projectId );\r\n\t\t\tcommit( 'setProjectFetchingFalse', projectId );\r\n\t\t\tcommit( 'setProjectError', { projectId: projectId, error: true, message: 'Failed to load project' } )\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '877486F6-F44F-4C4A-B587-3543E636CBC6' );\r\n\t\t}\r\n\r\n\t\t//make sure we have a template for blank payments\r\n\t\tif( state.blankPaymentClient===null && !state.fetchingBlankPaymentClient ) {\r\n\t\t\tawait dispatch( 'fetchBlankPaymentClient' );\r\n\t\t}\r\n\t\telse if( state.blankPaymentClient===null && state.fetchingBlankPaymentClient ) {\r\n\t\t\tawait waitUntil( () => state.blankPaymentClient!==null && !state.fetchingBlankPaymentClient )\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait commit( 'updateAppendPaymentClient', projectApiResponse.data );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message + ' for project ' + projectId, e.code, {}, 'EBC3296A-1777-455C-A627-D1B9E04F0DF8' );\r\n\t\t}\r\n\r\n\t\t//set project data\r\n\t\tcommit( 'updateAppendProject', projectApiResponse.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectLoadingFalse', projectId );\r\n\t\tcommit( 'setProjectFetchingFalse', projectId );\r\n\r\n\t},\r\n\r\n\tgetProjectRequest: async function( { commit, dispatch }, { projectRequestId, projectRequestNumber } ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit( 'defineProjectRequestShells', [ {\r\n\t\t\tprojectRequestId: projectRequestId,\r\n\t\t\tprojectRequestNumber: projectRequestNumber\r\n\t\t} ] );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectRequestLoadingTrue', projectRequestId );\r\n\t\tcommit( 'setProjectRequestFetchingTrue', projectRequestNumber );\r\n\t\tcommit( 'setProjectRequestError', { projectRequestId: projectRequestId, error: false, message: '' } )\r\n\r\n\t\t//verify module is enabled\r\n\t\ttry {\r\n\t\t\tawait dispatch( 'getModuleStatus' )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectRequestLoadingFalse', projectRequestId );\r\n\t\t\tcommit( 'setProjectRequestFetchingFalse', projectRequestId );\r\n\t\t\tthrow e\r\n\t\t}\r\n\r\n\t\t//get data from api\r\n\t\tlet projectRequestApiResponse = null;\r\n\t\ttry {\r\n\t\t\tprojectRequestApiResponse = await PermitsApiService.get( '/externalProjectRequest/' + projectRequestId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectRequestLoadingFalse', projectRequestId );\r\n\t\t\tcommit( 'setProjectRequestFetchingFalse', projectRequestId );\r\n\t\t\tcommit( 'setProjectRequestError', { projectRequestId: projectRequestId, error: true, message: e.message } )\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'F8A51C0A-8CCE-4DC6-82A6-65AF487F9016' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( projectRequestApiResponse===null ) {\r\n\t\t\tcommit( 'setProjectRequestLoadingFalse', projectRequestId );\r\n\t\t\tcommit( 'setProjectRequestError', {\r\n\t\t\t\tprojectRequestId: projectRequestId,\r\n\t\t\t\terror: true,\r\n\t\t\t\tmessage: 'Failed to load project request'\r\n\t\t\t} )\r\n\t\t\tcommit( 'setProjectRequestFetchingFalse', projectRequestId );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '301EF8CE-32CE-446B-975B-B567C3980F61' );\r\n\t\t}\r\n\r\n\t\t//convert project requests to projects if they're converted\r\n\t\tlet addedAsProject = false\r\n\t\tif( projectRequestApiResponse.data?.status?._id==constants.PERMIT_EXTERNAL_STATUS_ID_CONVERTED ) {\r\n\t\t\ttry {\r\n\t\t\t\t//console.log( 'addProject' )\r\n\t\t\t\tawait dispatch( 'addProject', projectRequestApiResponse.data.projectSubId )\r\n\t\t\t\taddedAsProject = true\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\t//console.log( e )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//set project data\r\n\t\tif( projectRequestId==='new' ) {\r\n\t\t\tprojectRequestApiResponse.data._forceKey = 'new'\r\n\t\t}\r\n\t\tcommit( 'updateAppendProjectRequest', projectRequestApiResponse.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectRequestLoadingFalse', projectRequestId );\r\n\t\tcommit( 'setProjectRequestFetchingFalse', projectRequestId );\r\n\r\n\t\tif( addedAsProject ) {\r\n\t\t\ttry {\r\n\t\t\t\t//console.log( 'removeProjectRequest' )\r\n\t\t\t\tawait dispatch( 'removeProjectRequest', {\r\n\t\t\t\t\tprojectRequestId: projectRequestId,\r\n\t\t\t\t\tprojectRequestNumber: projectRequestNumber\r\n\t\t\t\t} )\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\t//console.log( e )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn projectRequestApiResponse.data\r\n\t},\r\n\r\n\taddProject: async function( { commit, dispatch, rootState }, projectNumber ) {\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/permits/add/' + rootState.citizenMember.user.userId + '/' + projectNumber, {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'AB18AE0B-DCBD-4506-A512-9D7C96E06D6A' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tthrow new CitizenApiError( 'Failed to add account. Try again.', 404, {}, 'A431816C-12E4-4BD8-BF56-C25447B19751' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status===503 ) {\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '3426293F-22C2-4A54-AAE0-CBFA6989264C' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '35002BB2-8B46-49B4-A26B-B82D1853CFB7' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tlet projectKey = {\r\n\t\t\tprojectId: apiResponse.data.data.projectId,\r\n\t\t\tprojectNumber: apiResponse.data.data.projectNumber\r\n\t\t}\r\n\r\n\t\tawait dispatch( 'citizenMember/addAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_CODE,\r\n\t\t\taccount: projectKey\r\n\t\t}, { root: true } );\r\n\r\n\t\tcommit( 'defineProjectShells', [ projectKey ] );\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch( 'getProject', projectKey );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectLoadingFalse', projectKey.projectId );\r\n\r\n\t\t//return the new account\r\n\t\treturn projectKey.projectId;\r\n\r\n\t},\r\n\r\n\taddProjectRequest: async function( { commit, dispatch, rootState }, projectRequestNumber ) {\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/permits/addRequest/' + rootState.citizenMember.user.userId + '/' + projectRequestNumber, {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '75B75C70-DC72-46C8-9B56-4267A125FAFC' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tthrow new CitizenApiError( 'Failed to add project request. Try again.', 404, {}, 'B3F37056-A2B5-473C-ACE5-9FB7C7525F6C' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status===503 ) {\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'FE9C2135-130A-4C48-A16C-3420781B43B0' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '86BF7C0F-16F4-4986-A888-919B1ED7F8CB' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tlet projectRequestKey = {\r\n\t\t\tprojectRequestId: apiResponse.data.data.projectRequestId,\r\n\t\t\tprojectRequestNumber: apiResponse.data.data.projectRequestNumber\r\n\t\t}\r\n\r\n\t\tawait dispatch( 'citizenMember/addAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_REQUEST_CODE,\r\n\t\t\taccount: projectRequestKey\r\n\t\t}, { root: true } );\r\n\r\n\t\tcommit( 'defineProjectRequestShells', [ projectRequestKey ] );\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch( 'getProjectRequest', projectRequestKey );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setProjectRequestLoadingFalse', projectRequestKey.projectRequestId );\r\n\r\n\t\t//return the new account\r\n\t\treturn projectRequestKey.projectId;\r\n\r\n\t},\r\n\r\n\tsaveProjectRequest: async function( { commit, dispatch, state }, projectRequestId ) {\r\n\r\n\t\tlet projectRequest = state.projectRequests[ projectRequestId ]\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await PermitsApiService.post( 'externalProjectRequest/' + projectRequest._id, projectRequest );\r\n\t\t\tcommit( 'updateAppendProjectRequest', apiResponse.data );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '894F3706-7736-4D3A-9F9B-D5C39ABC0A43' );\r\n\t\t}\r\n\r\n\r\n\t\t//link this project request to the member if it's not already\r\n\t\tlet isLinkedToMember = await dispatch( 'citizenMember/isMemberAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_REQUEST_CODE,\r\n\t\t\taccountNumber: {\r\n\t\t\t\tprojectRequestNumber: apiResponse.data.subId,\r\n\t\t\t\tprojectRequestId: apiResponse.data._id\r\n\t\t\t}\r\n\t\t}, { root: true } );\r\n\t\tif( !isLinkedToMember ) {\r\n\t\t\ttry {\r\n\t\t\t\tdispatch( 'addProjectRequest', apiResponse.data.subId );\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\t//console.log( e )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn apiResponse.data\r\n\t},\r\n\r\n\tremoveProject: async function( { dispatch, commit, rootState }, projectKey ) {\r\n\r\n\t\tlet projectId = projectKey.projectId\r\n\t\t//let projectNumber = projectKey.projectNumber\r\n\r\n\t\t//set removing state\r\n\t\tcommit( 'setProjectRemovingTrue', projectId );\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v2/permits/remove/' + rootState.citizenMember.user.userId + '/' + projectId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectRemovingFalse', projectId );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'AAC82324-2935-4E42-9BFC-75AD47334B15' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit( 'setProjectRemovingFalse', projectId );\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, '39A2069C-5B63-4EA3-8ED4-85D47A17CAB5' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status===503 ) {\r\n\t\t\tcommit( 'setProjectRemovingFalse', projectId );\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '292DA57B-49DF-4297-ADB6-E7B30C87D587' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit( 'setProjectRemovingFalse', projectId );\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'AC7197B9-38A9-4848-9F37-8E53366E4E7E' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_CODE,\r\n\t\t\taccount: projectKey\r\n\t\t}, { root: true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit( 'setProjectRemovingFalse', projectId );\r\n\t},\r\n\r\n\tremoveProjectRequest: async function( { dispatch, commit, rootState }, projectRequestKey ) {\r\n\r\n\t\tlet projectRequestId = projectRequestKey.projectRequestId\r\n\t\t//let projectNumber = projectKey.projectNumber\r\n\r\n\t\t//set removing state\r\n\t\tcommit( 'setProjectRequestRemovingTrue', projectRequestId );\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v2/permits/removeRequest/' + rootState.citizenMember.user.userId + '/' + projectRequestId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setProjectRequestRemovingFalse', projectRequestId );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '7CCE718A-0FBD-4980-A09F-2CE4133CA54D' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit( 'setProjectRequestRemovingFalse', projectRequestId );\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, 'A3AE8DED-F50C-4B8D-869F-B6FA7F628FB4' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status===503 ) {\r\n\t\t\tcommit( 'setProjectRequestRemovingFalse', projectRequestId );\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '5641057E-5B27-4AAC-8C5C-6BC516408355' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit( 'setProjectRequestRemovingFalse', projectRequestId );\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'B1079170-A6DD-4E8B-8C25-3C0180EB5E14' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_REQUEST_CODE,\r\n\t\t\taccount: projectRequestKey\r\n\t\t}, { root: true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit( 'setProjectRemovingFalse', projectRequestId );\r\n\t},\r\n\r\n\tfetchBlankPaymentClient: async function( { state, commit } ) {\r\n\t\tif( state.fetchingBlankPaymentClient ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcommit( 'setFetchingBlankPaymentClient', true );\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/payment/blank_client/permits/true' );\r\n\t\t\tapiResponse.data.data.paymentForm.holdOnly = false\r\n\t\t\tawait commit( 'setBlankPaymentClient', apiResponse.data.data )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'D4F3F7EF-76E9-4F8D-BAB3-BA1F4A248FD1' );\r\n\t\t}\r\n\r\n\t\tcommit( 'setFetchingBlankPaymentClient', false );\r\n\r\n\t},\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function( state ) {\r\n\t\tif( localStorage.getItem( storeKey + '.accessToken' ) ) {\r\n\t\t\tlet data = localStorage.getItem( storeKey + '.accessToken' );\r\n\t\t\tif( data!==null ) {\r\n\t\t\t\tstate.accessToken = data\r\n\t\t\t}\r\n\t\t}\r\n\t\tif( localStorage.getItem( storeKey + '.user' ) ) {\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey + '.user' ) );\r\n\t\t\tif( data!==null ) {\r\n\t\t\t\tstate.user = data\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function( state ) {\r\n\t\tObject.assign( state, getDefaultState() )\r\n\t},\r\n\r\n\tsetAccessToken: function( state, accessToken ) {\r\n\t\tstate.accessToken = accessToken\r\n\t\tlet token = jwt_decode( accessToken )\r\n\t\tstate.user = token.data\r\n\t\tlocalStorage.setItem( storeKey + '.accessToken', accessToken );\r\n\t\tlocalStorage.setItem( storeKey + '.user', JSON.stringify( token.data ) );\r\n\t},\r\n\r\n\tdefineProjectShells: function( state, projectKeys ) {\r\n\t\tfor( let i in projectKeys ) {\r\n\t\t\tlet projectId = projectKeys[ i ].projectId;\r\n\t\t\tlet projectNumber = projectKeys[ i ].projectNumber;\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call( state.paymentClients, projectId ) ) {\r\n\t\t\t\t//get payment client\r\n\t\t\t\tVue.set( state.paymentClients, projectId, null )\r\n\t\t\t}\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call( state.projects, projectId ) ) {\r\n\t\t\t\tlet projectShell = {\r\n\t\t\t\t\t_id: projectId,\r\n\t\t\t\t\tsubId: projectNumber,\r\n\t\t\t\t\tapplicants: [],\r\n\t\t\t\t\t_meta: {\r\n\t\t\t\t\t\tui: {\r\n\t\t\t\t\t\t\tloading: true,\r\n\t\t\t\t\t\t\tremoving: false,\r\n\t\t\t\t\t\t\tfetched: null,\r\n\t\t\t\t\t\t\tfetching: false,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set( state.projects, projectId, projectShell )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tdefineProjectRequestShells: function( state, projectKeys ) {\r\n\t\tfor( let i in projectKeys ) {\r\n\t\t\tlet projectRequestId = projectKeys[ i ].projectRequestId;\r\n\t\t\tlet projectRequestNumber = projectKeys[ i ].projectRequestNumber;\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestId ) ) {\r\n\t\t\t\tlet projectRequestShell = {\r\n\t\t\t\t\t_id: projectRequestId,\r\n\t\t\t\t\tsubId: projectRequestNumber,\r\n\t\t\t\t\tstatus: { _id: '' },\r\n\t\t\t\t\tapplicants: [],\r\n\t\t\t\t\t_meta: {\r\n\t\t\t\t\t\tui: {\r\n\t\t\t\t\t\t\tloading: true,\r\n\t\t\t\t\t\t\tremoving: false,\r\n\t\t\t\t\t\t\tfetched: null,\r\n\t\t\t\t\t\t\tfetching: false,\r\n\t\t\t\t\t\t\terror: false,\r\n\t\t\t\t\t\t\terrorMessage: '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set( state.projectRequests, projectRequestId, projectRequestShell )\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts: function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\tsetModuleStatusLastChecked: function( state, moduleStatusLastChecked ) {\r\n\t\tstate.moduleStatusLastChecked = moduleStatusLastChecked;\r\n\t},\r\n\r\n\tsetProjectLoadingTrue: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectLoadingFalse: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectRequestLoadingTrue: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectRequestLoadingFalse: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectError: function( state, { projectId, error, message } ) {\r\n\t\tif( !Array.isArray( projectId ) ) {\r\n\t\t\tprojectId = [ projectId ];\r\n\t\t}\r\n\t\tfor( let i in projectId ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectId[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectId[ i ] ]._meta.ui.error = error;\r\n\t\t\t\tstate.projects[ projectId[ i ] ]._meta.ui.errorMessages = [ message ];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectRequestError: function( state, { projectRequestId, error, message } ) {\r\n\t\tif( !Array.isArray( projectRequestId ) ) {\r\n\t\t\tprojectRequestId = [ projectRequestId ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestId ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestId[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestId[ i ] ]._meta.ui.error = error;\r\n\t\t\t\tstate.projectRequests[ projectRequestId[ i ] ]._meta.ui.errorMessages = [ message ];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectFetchingTrue: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectFetchingFalse: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectRequestFetchingTrue: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectRequestFetchingFalse: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectRemovingTrue: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectRemovingFalse: function( state, projectIds ) {\r\n\t\tif( !Array.isArray( projectIds ) ) {\r\n\t\t\tprojectIds = [ projectIds ];\r\n\t\t}\r\n\t\tfor( let i in projectIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projects, projectIds[ i ] ) ) {\r\n\t\t\t\tstate.projects[ projectIds[ i ] ]._meta.ui.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetProjectRequestRemovingTrue: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetProjectRequestRemovingFalse: function( state, projectRequestIds ) {\r\n\t\tif( !Array.isArray( projectRequestIds ) ) {\r\n\t\t\tprojectRequestIds = [ projectRequestIds ];\r\n\t\t}\r\n\t\tfor( let i in projectRequestIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, projectRequestIds[ i ] ) ) {\r\n\t\t\t\tstate.projectRequests[ projectRequestIds[ i ] ]._meta.ui.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetFetchingBlankPaymentClient: function( state, val ) {\r\n\t\tstate.fetchingBlankPaymentClient = val;\r\n\t},\r\n\r\n\tsetBlankPaymentClient: function( state, blankPaymentClient ) {\r\n\t\tstate.blankPaymentClient = blankPaymentClient;\r\n\t},\r\n\r\n\tupdateAppendPaymentClient: function( state, project ) {\r\n\t\tlet paymentClient = { ...state.blankPaymentClient };\r\n\t\tpaymentClient.paymentForm.invoiceNumber = [ ...Array( 10 ) ].map( () => Math.random().toString( 36 )[ 2 ] ).join( '' );\r\n\t\tlet amount = {\r\n\t\t\t\"id\": [ ...Array( 10 ) ].map( () => Math.random().toString( 36 )[ 2 ] ).join( '' ),\r\n\t\t\t\"account\": project.subId,\r\n\t\t\t\"label\": 'Balance Due',\r\n\t\t\t\"value\": project._id,\r\n\t\t\t\"base\": 0,\r\n\t\t\t\"discountableBase\": 0,\r\n\t\t\t\"convenienceableBase\": 0,\r\n\t\t\t\"credit\": { \"displayValue\": \"0.00\", \"total\": 0, \"discountAmount\": 0, \"convenienceAmount\": 0 },\r\n\t\t\t\"echeck\": { \"displayValue\": \"0.00\", \"total\": 0, \"discountAmount\": 0, \"convenienceAmount\": 0 },\r\n\t\t\t\"bills\": [],\r\n\t\t\t\"checked\": true,\r\n\t\t\t\"disabled\": false,\r\n\t\t\t\"useTextbox\": false,\r\n\t\t\t\"multi\": false,\r\n\t\t\t\"textbox\": { \"name\": \"\", \"id\": \"\", \"value\": \"\" },\r\n\t\t\t\"_meta\": []\r\n\t\t}\r\n\t\tfor( let i in project.transactions ) {\r\n\t\t\tif( project.transactions[ i ].type=='fee' && project.transactions[ i ].balance>0 ) {\r\n\t\t\t\tamount.base += project.transactions[ i ].balance\r\n\t\t\t\tamount.bills.push( {\r\n\t\t\t\t\tnumber: project.transactions[ i ]._id,\r\n\t\t\t\t\tamount: project.transactions[ i ].balance,\r\n\t\t\t\t\tyear: ( new Date() ).getFullYear(),\r\n\t\t\t\t\tarCategory: 0\r\n\t\t\t\t} )\r\n\t\t\t}\r\n\t\t}\r\n\t\tamount.credit.displayValue = amount.base.toFixed( 2 );\r\n\t\tamount.credit.total = amount.base;\r\n\t\tamount.echeck.displayValue = amount.base.toFixed( 2 );\r\n\t\tamount.echeck.total = amount.base;\r\n\r\n\t\tpaymentClient.amounts = [ amount ]\r\n\t\tpaymentClient.max = amount\r\n\t\tpaymentClient.paymentForm.amounts = {}\r\n\t\tpaymentClient.paymentForm.amounts[ project.subId ] = amount\r\n\r\n\t\tVue.set( state.paymentClients, project._id, paymentClient )\r\n\r\n\t},\r\n\r\n\tupdateAppendProject: function( state, newProject ) {\r\n\t\tlet total = 0;\r\n\t\tfor( let i in newProject.transactions ) {\r\n\t\t\ttotal += parseFloat( newProject.transactions[ i ].amount );\r\n\t\t}\r\n\t\tnewProject.transactionsBalance = total;\r\n\r\n\t\tif( Object.prototype.hasOwnProperty.call( state.projects, newProject._id ) ) {\r\n\t\t\tObject.assign( state.projects[ newProject._id ], newProject )\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set( state.projects, newProject._id, newProject )\r\n\t\t}\r\n\t},\r\n\r\n\tupdateAppendProjectRequest: function( state, newProjectRequest ) {\r\n\t\tlet key = newProjectRequest._id\r\n\t\tif( newProjectRequest._forceKey ) {\r\n\t\t\tkey = newProjectRequest._forceKey\r\n\t\t}\r\n\r\n\t\tif( Object.prototype.hasOwnProperty.call( state.projectRequests, key ) ) {\r\n\t\t\tObject.assign( state.projectRequests[ key ], newProjectRequest )\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set( state.projectRequests, key, newProjectRequest )\r\n\t\t}\r\n\t},\r\n\r\n\tupdatePermit: function( state, { projectId, permit, permitType } ) {\r\n\t\tfor( let i in state.projects[ projectId ].permits[ permitType ] ) {\r\n\t\t\tif( state.projects[ projectId ].permits[ permitType ][ i ]._id==permit._id ) {\r\n\t\t\t\tVue.set( state.projects[ projectId ].permits[ permitType ], i, permit )\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tupdateInspectionGroup: function( state, { projectId, permitId, permitType, inspectionGroup } ) {\r\n\t\tfor( let permitIndex in state.projects[ projectId ].permits[ permitType ] ) {\r\n\t\t\tlet storePermit = state.projects[ projectId ].permits[ permitType ][ permitIndex ];\r\n\t\t\tif( storePermit._id==permitId ) {\r\n\t\t\t\tfor( let inspectionGroupIndex in storePermit.inspectionGroups ) {\r\n\t\t\t\t\tif( storePermit.inspectionGroups[ inspectionGroupIndex ]._id==inspectionGroup._id ) {\r\n\t\t\t\t\t\tVue.set( state.projects[ projectId ].permits[ permitType ][ permitIndex ].inspectionGroups, inspectionGroupIndex, inspectionGroup )\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tupdateInspection: function( state, { projectId, permitId, permitType, inspectionGroupId, inspection } ) {\r\n\t\tfor( let permitIndex in state.projects[ projectId ].permits[ permitType ] ) {\r\n\t\t\tlet storePermit = state.projects[ projectId ].permits[ permitType ][ permitIndex ];\r\n\t\t\tif( storePermit._id==permitId ) {\r\n\t\t\t\tfor( let inspectionGroupIndex in storePermit.inspectionGroups ) {\r\n\t\t\t\t\tlet storeInspectionGroup = storePermit.inspectionGroups[ inspectionGroupIndex ];\r\n\t\t\t\t\tif( storeInspectionGroup._id==inspectionGroupId ) {\r\n\r\n\t\t\t\t\t\tfor( let inspectionIndex in storeInspectionGroup.inspections ) {\r\n\t\t\t\t\t\t\tlet storeInspection = storeInspectionGroup.inspections[ inspectionIndex ];\r\n\t\t\t\t\t\t\tif( storeInspection._id==inspection._id ) {\r\n\t\t\t\t\t\t\t\tVue.set( state.projects[ projectId ].permits[ permitType ][ permitIndex ].inspectionGroups[ inspectionGroupIndex ].inspections, inspectionIndex, inspection )\r\n\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetKeyValueItems: ( state, keyValueItems ) => {\r\n\t\tstate.keyValueItems = Object.freeze( keyValueItems )\r\n\t\tstate.keyValueItemsLastFetched = new Date().getTime()\r\n\t},\r\n\r\n\tsetFetchingKeyValueItems: ( state, fetching ) => {\r\n\t\tstate.fetchingKeyValueItems = fetching\r\n\t},\r\n}\r\n\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.reverse911';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\trunningFetch: false,\r\n\t\trunningUpdate: false,\r\n\t\tid: null,\r\n\t\tcontact: false,\r\n\t\tdismiss: false,\r\n\t\tcontactMethods: [],\r\n\t\taddresses: [],\r\n\t\talertTypes: [],\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit } ) {\r\n\t\t//console.log( 'citizen reverse 911 initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen reverse 911 reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tfetch: async function ( {commit} ) {\r\n\t\t//set loading state\r\n\t\tcommit( 'setRunningFetch', true );\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tlet url = 'v2/reverse911/detail';\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( url );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setRunningFetch', false );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '6DD58B22-9980-4E32-BE58-2244B8FCF95B' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse === null ) {\r\n\t\t\tcommit( 'setRunningFetch', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return notification account information or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '1D56FCED-5EC6-4B70-9427-58F00D09AC57' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status === 503 ) {\r\n\t\t\tcommit( 'setRunningFetch', false );\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'EF360681-6E18-4BB7-9BC0-CCC6084FD676' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit( 'setRunningFetch', false );\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '5CB4FBC9-33B5-487C-BB83-E331BC681B27' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateState', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setRunningFetch', false );\r\n\t},\r\n\r\n\tsave: async function ( {commit, state, dispatch} ) {\r\n\t\t//set loading state\r\n\t\tcommit( 'setRunningUpdate', true );\r\n\r\n\t\tlet payload = {\r\n\t\t\taddresses: state.addresses,\r\n\t\t\tcontactMethods: state.contactMethods,\r\n\t\t\talertTypes: state.alertTypes,\r\n\t\t}\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tlet url = 'v2/reverse911/save';\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( url, payload );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setRunningUpdate', false );\r\n\t\t\tdispatch('sendErrorSnackbar', e, {root:true})\r\n\t\t\t//throw new CitizenApiError( e.message, e.code, {}, '6DD58B22-9980-4E32-BE58-2244B8FCF95B' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse === null ) {\r\n\t\t\tcommit( 'setRunningUpdate', false );\r\n\t\t\tdispatch('sendErrorSnackbar', {\r\n\t\t\t\tmessage:'Saving failed. Try signing out and back in. If you keep getting this error, contact support',\r\n\t\t\t\tcode:500,\r\n\t\t\t\tguid:'1D56FCED-5EC6-4B70-9427-58F00D09AC57'\r\n\t\t\t}, {root:true})\r\n\t\t\treturn\r\n\t\t\t//throw new CitizenApiError( 'The server didn\\'t return notification account information or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '1D56FCED-5EC6-4B70-9427-58F00D09AC57' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status === 503 ) {\r\n\t\t\tcommit( 'setRunningUpdate', false );\r\n\t\t\tdispatch('sendErrorSnackbar', {\r\n\t\t\t\tmessage:apiResponse.data.message,\r\n\t\t\t\tcode:apiResponse.data.status,\r\n\t\t\t\tguid:'EF360681-6E18-4BB7-9BC0-CCC6084FD676'\r\n\t\t\t}, {root:true})\r\n\t\t\treturn\r\n\t\t\t//throw new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'EF360681-6E18-4BB7-9BC0-CCC6084FD676' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit( 'setRunningUpdate', false );\r\n\t\t\tdispatch('sendErrorSnackbar', {\r\n\t\t\t\tmessage:apiResponse.data.message,\r\n\t\t\t\tcode:apiResponse.data.status,\r\n\t\t\t\tguid:'5CB4FBC9-33B5-487C-BB83-E331BC681B27'\r\n\t\t\t}, {root:true})\r\n\t\t\treturn\r\n\t\t\t//throw new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '5CB4FBC9-33B5-487C-BB83-E331BC681B27' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'setId', apiResponse.data.data.id );\r\n\t\tcommit( 'setContact', apiResponse.data.data.contact );\r\n\t\tcommit( 'setDismiss', apiResponse.data.data.dismiss );\r\n\r\n\t\tdispatch('sendSnackbar', {\r\n\t\t\tmessage: 'Saved changes successfully',\r\n\t\t\tcolor: 'success'\r\n\t\t}, {root:true})\r\n\r\n\t\t//set loading state\r\n\t\tcommit( 'setRunningUpdate', false );\r\n\t},\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\t\t\t\tstate.runningFetch = false;\r\n\t\t\t\tstate.runningUpdate = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign( state, getDefaultState() )\r\n\t},\r\n\r\n\tsetRunningFetch: function ( state, running ) {\r\n\t\tstate.runningFetch = running;\r\n\t},\r\n\r\n\tsetRunningUpdate: function ( state, running ) {\r\n\t\tstate.runningUpdate = running;\r\n\t},\r\n\r\n\tsetId: function ( state, id ) {\r\n\t\tstate.id = id;\r\n\t},\r\n\tsetContact: function ( state, contact ) {\r\n\t\tstate.contact = contact;\r\n\t},\r\n\tsetDismiss: function ( state, dismiss ) {\r\n\t\tstate.dismiss = dismiss;\r\n\t},\r\n\tsetContactMethods: function ( state, contactMethods ) {\r\n\t\tstate.contactMethods = contactMethods;\r\n\t},\r\n\tsetAddresses: function ( state, addresses ) {\r\n\t\tstate.addresses = addresses;\r\n\t},\r\n\tsetAlertTypes: function ( state, alertTypes ) {\r\n\t\tstate.alertTypes = alertTypes;\r\n\t},\r\n\r\n\tupdateAppendAddress: function ( state, address ) {\r\n\t\tlet updatedAddress = false;\r\n\t\tfor( let i in state.addresses ) {\r\n\t\t\tif( state.addresses[i].id==address.id ) {\r\n\t\t\t\tVue.set( state.addresses, i, address);\r\n\t\t\t\tupdatedAddress = true\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( !updatedAddress ) {\r\n\t\t\tstate.addresses.push( address );\r\n\t\t}\r\n\t},\r\n\r\n\tupdateAppendContactMethod: function ( state, contactMethod ) {\r\n\t\tlet updatedContactMethod = false;\r\n\t\tfor( let i in state.contactMethods ) {\r\n\t\t\tif( state.contactMethods[i].id==contactMethod.id ) {\r\n\t\t\t\tVue.set( state.contactMethods, i, contactMethod);\r\n\t\t\t\tupdatedContactMethod = true\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( !updatedContactMethod ) {\r\n\t\t\tstate.contactMethods.push( contactMethod );\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tupdateAppendAlertType: function ( state, alertType ) {\r\n\t\tlet updatedAlertType = false;\r\n\t\tfor( let i in state.contactMethods ) {\r\n\t\t\tif( state.alertTypes[i].id==alertType.id ) {\r\n\t\t\t\tVue.set( state.alertTypes, i, alertType);\r\n\t\t\t\tupdatedAlertType = true\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( !updatedAlertType ) {\r\n\t\t\tstate.alertTypes.push( alertType );\r\n\t\t}\r\n\t},\r\n\r\n\tupdateState: function ( state, serverResponse ) {\r\n\t\tstate.id = serverResponse.id;\r\n\t\tstate.contact = serverResponse.contact;\r\n\t\tstate.dismiss = serverResponse.dismiss;\r\n\t\tstate.contactMethods = serverResponse.contactMethods;\r\n\t\tstate.addresses = serverResponse.addresses;\r\n\t\tstate.alertTypes = serverResponse.alertTypes;\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\nimport { standardizeParcelId } from '@/services/citizen/citizenHelper';\r\n\r\nconst storeKey = 'citizen.store.search';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\taccountNumber: '',\r\n\t\tparcelId: '',\r\n\t\townerName: '',\r\n\t\tstreetNumber: '',\r\n\t\tstreetName: '',\r\n\t\trunningTaxSearch: false,\r\n\t\ttaxSearchResultParcelIds: [],\r\n\t\trunningUtilitySearch: false,\r\n\t\tutilitySearchResultAccountNumbers: [],\r\n\t};\r\n};\r\n\r\nconst state = getDefaultState();\r\n\r\nconst getters = {};\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function( { commit } ) {\r\n\t\t//console.log( 'citizen search initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t},\r\n\r\n\treset: async function( { commit } ) {\r\n\t\t//console.log( 'citizen search reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\ttaxSearch: async function( { state, commit, rootGetters, dispatch } ) {\r\n\t\tif( state.runningTaxSearch ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif( state.parcelId.trim()==='' && state.ownerName.trim()==='' && state.streetNumber.trim()==='' && state.streetName.trim()==='' ) {\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'At least one search field must be filled out',\r\n\t\t\t\tcolor: 'warning',\r\n\t\t\t}, {root:true} );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tawait commit( 'setRunningTaxSearch', true );\r\n\t\tawait dispatch( 'citizenTax/clearNonMemberAccountsFromStore', null, { root: true } );\r\n\t\tcommit( 'setTaxSearchResultParcelIds', [] );\r\n\r\n\t\tlet searchParams = {\r\n\t\t\tparcelId: state.parcelId,\r\n\t\t\townerName: state.ownerName,\r\n\t\t\tstreetNumber: state.streetNumber,\r\n\t\t\tstreetName: state.streetName,\r\n\t\t};\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v3/taxes/search/?' + new URLSearchParams( searchParams ).toString() );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setRunningTaxSearch', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '8F19D5AF-4C4C-4331-868D-6B84BE3332A5' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'AB7C0A8D-56CE-4C36-89B1-A83EED520483' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit( 'setRunningTaxSearch', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t respond normally. Try again, then try signing out and back in.', 500, {}, 'D7AE8BFA-3C17-4D23-BDFB-B23283517788' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet parcelIds = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tlet simpleAccountData = apiResponse.data.data.accounts[ i ];\r\n\t\t\tawait commit( 'citizenTax/defineAccountShells', simpleAccountData.parcelId, { root: true } );\r\n\t\t\tlet accountShell = rootGetters[ 'citizenTax/accounts' ][ standardizeParcelId( simpleAccountData.parcelId ) ];\r\n\t\t\tif( !accountShell._meta.fetched ) {\r\n\t\t\t\taccountShell.account.customerId = simpleAccountData.customerId;\r\n\t\t\t\taccountShell.customer = {\r\n\t\t\t\t\tname1: simpleAccountData.ownerName,\r\n\t\t\t\t\taddress: {\r\n\t\t\t\t\t\taddress: simpleAccountData.address,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t\taccountShell.overview.status = 1;\r\n\t\t\t}\r\n\t\t\tif( simpleAccountData.pulled ) {\r\n\t\t\t\taccountShell.overview.status = 3;\r\n\t\t\t}\r\n\t\t\telse if( simpleAccountData.paid ) {\r\n\t\t\t\taccountShell.overview.status = 0;\r\n\t\t\t}\r\n\r\n\t\t\tawait commit( 'citizenTax/updateAppendAccount', accountShell, { root: true } );\r\n\t\t\tparcelIds.push( simpleAccountData.parcelId );\r\n\t\t}\r\n\t\tcommit( 'setTaxSearchResultParcelIds', parcelIds );\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit( 'setRunningTaxSearch', false );\r\n\t},\r\n\r\n\r\n\tutilitySearch: async function( { state, commit, rootGetters, dispatch } ) {\r\n\t\tif( state.runningUtilitySearch ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif( state.parcelId.trim()==='' && state.accountNumber.trim()==='' && state.ownerName.trim()==='' && state.streetNumber.trim()==='' && state.streetName.trim()==='' ) {\r\n\t\t\tdispatch( 'sendSnackbar', {\r\n\t\t\t\tmessage: 'At least one search field must be filled out',\r\n\t\t\t\tcolor: 'warning',\r\n\t\t\t}, {root:true} );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tawait commit( 'setRunningUtilitySearch', true );\r\n\t\tawait dispatch( 'citizenUtility/clearNonMemberAccountsFromStore', null, { root: true } );\r\n\t\tcommit( 'setUtilitySearchResultAccountNumbers', [] );\r\n\r\n\t\tlet searchParams = {\r\n\t\t\tparcelId: state.parcelId,\r\n\t\t\taccountNumber:state.accountNumber\r\n\t\t};\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v3/public_utilities/search/?' + new URLSearchParams( searchParams ).toString() );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setRunningUtilitySearch', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '35A3D8F8-465D-4D73-9AFF-721BC58541BB' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '906654AB-251F-4AD8-82E4-496DCFCFE766' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit( 'setRunningUtilitySearch', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t respond normally. Try again, then try signing out and back in.', 500, {}, '8154D12C-62BF-4DC6-833D-22C23BD21BEB' );\r\n\t\t}\r\n\r\n\t\tconsole.log(apiResponse)\r\n\r\n\t\t//set data\r\n\t\tlet accountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tlet simpleAccountData = apiResponse.data.data.accounts[ i ];\r\n\t\t\tawait commit( 'citizenUtility/defineAccountShells', simpleAccountData.account, { root: true } );\r\n\t\t\tlet accountShell = rootGetters[ 'citizenUtility/accounts' ][ simpleAccountData.account ];\r\n\t\t\tif( !accountShell._meta.fetched ) {\r\n\t\t\t\taccountShell.account.accountNumber = simpleAccountData.account;\r\n\t\t\t\taccountShell.account.parcelId = simpleAccountData.parcelId;\r\n\t\t\t\taccountShell.account.customerId = simpleAccountData.customerId;\r\n\t\t\t\taccountShell.account.serviceAddress = {\r\n\t\t\t\t\taddress: simpleAccountData.serviceAddress,\r\n\t\t\t\t}\r\n\t\t\t\taccountShell.customer = {\r\n\t\t\t\t\tname1: simpleAccountData.ownerName,\r\n\t\t\t\t\taddress:{\r\n\t\t\t\t\t\taddress: simpleAccountData.serviceAddress\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\taccountShell.overview.status = 1;\r\n\t\t\t}\r\n\t\t\tif( simpleAccountData.pulled ) {\r\n\t\t\t\taccountShell.overview.status = 3;\r\n\t\t\t}\r\n\t\t\telse if( simpleAccountData.paid ) {\r\n\t\t\t\taccountShell.overview.status = 0;\r\n\t\t\t}\r\n\r\n\t\t\tawait commit( 'citizenUtility/updateAppendAccount', accountShell, { root: true } );\r\n\t\t\taccountNumbers.push( simpleAccountData.account );\r\n\t\t}\r\n\t\tcommit( 'setUtilitySearchResultAccountNumbers', accountNumbers );\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit( 'setRunningUtilitySearch', false );\r\n\t},\r\n\r\n\tclearFormAndResults: async function( { commit, dispatch } ) {\r\n\t\tdispatch( 'citizenTax/clearNonMemberAccountsFromStore', null, { root: true } );\r\n\t\tcommit( 'reset' );\r\n\t},\r\n\r\n};\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data!==null ) {\r\n\t\t\t\tObject.assign( state, data );\r\n\r\n\t\t\t\tstate.runningTaxSearch = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function( state ) {\r\n\t\tObject.assign( state, getDefaultState() );\r\n\t},\r\n\r\n\tsetTaxSearchResultParcelIds: function( state, parcelIds ) {\r\n\t\tstate.taxSearchResultParcelIds = parcelIds;\r\n\t},\r\n\r\n\tsetRunningTaxSearch: function( state, running ) {\r\n\t\tstate.runningTaxSearch = running;\r\n\t},\r\n\r\n\tsetUtilitySearchResultAccountNumbers: function( state, accountNumbers ) {\r\n\t\tstate.utilitySearchResultAccountNumbers = accountNumbers;\r\n\t},\r\n\r\n\tsetRunningUtilitySearch: function( state, running ) {\r\n\t\tstate.runningUtilitySearch = running;\r\n\t},\r\n\r\n\tupdateParcelId( state, parcelId ) {\r\n\t\tstate.parcelId = parcelId;\r\n\t},\r\n\r\n\tupdateAccountNumber( state, accountNumber ) {\r\n\t\tstate.accountNumber = accountNumber;\r\n\t},\r\n\r\n\tupdateOwnerName( state, ownerName ) {\r\n\t\tstate.ownerName = ownerName;\r\n\t},\r\n\r\n\tupdateStreetNumber( state, streetNumber ) {\r\n\t\tstate.streetNumber = streetNumber;\r\n\t},\r\n\r\n\tupdateStreetName( state, streetName ) {\r\n\t\tstate.streetName = streetName;\r\n\t},\r\n\r\n};\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations,\r\n};\r\n","import Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\nimport { standardizeParcelId } from '@/services/citizen/citizenHelper';\r\n\r\nconst storeKey = 'citizen.store.tax';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen tax initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE) );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen tax reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n/*\r\n\t\tcommit('setAccountLoadingTrue', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE));\r\n\t\tcommit('setAccountFetchingTrue', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE));\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tawait dispatch('citizenMember/getAccountNumbers', null, { root:true });\r\n\r\n\t\tlet memberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE);\r\n\r\n\t\tcommit('setAccountLoadingTrue', memberAccountNumbers);\r\n\t\tcommit('setAccountFetchingTrue', memberAccountNumbers);\r\n\r\n\t\tlet dispatches = [];\r\n\t\tfor( let i in memberAccountNumbers ) {\r\n\t\t\tlet parcelId = memberAccountNumbers[ i ];\r\n\t\t\tif(typeof parcelId === 'string') {\r\n\t\t\t\tawait dispatch( 'getAccount', { parcelId: parcelId, search:false } );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait Promise.all(dispatches);\r\n\t\tcommit('setRunningGetMemberAccounts', false );*/\r\n\r\n\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_TAX_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v3/taxes/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '64D51E1D-44FA-4DA2-BC40-BB76E55D4F11' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '20A0010B-7077-472A-A042-0E1A4B3B5925' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '94B0773A-FCB5-43A3-83CB-1104D0E09115' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[i].account.parcelId );\r\n\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[i] );\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_TAX_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, { parcelId, search } ) {\r\n\t\tparcelId = standardizeParcelId(parcelId);\r\n\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ parcelId ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', parcelId);\r\n\t\tcommit('setAccountFetchingTrue', parcelId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tlet url = 'v3/taxes/detail/' + parcelId;\r\n\t\t\tif(search) {\r\n\t\t\t\turl += '/search';\r\n\t\t\t}\r\n\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( url );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', parcelId );\r\n\t\t\tcommit( 'setAccountFetchingFalse', parcelId );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, 'AAF53FAE-E8DE-4455-84D1-1DA30C792D6A' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '52580E60-4CCC-4422-834D-20835510BE34' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\t\tcommit('setAccountFetchingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '04128A38-4754-4F70-BB66-3A3ACB3B132C' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\tcommit('setAccountFetchingFalse', parcelId);\r\n\t},\r\n\r\n\taddAccount: async function ( { commit, dispatch, rootState }, parcelId ) {\r\n\t\tparcelId = standardizeParcelId(parcelId);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', parcelId);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v3/taxes/add/'+rootState.citizenMember.user.userId+'/'+parcelId, {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '9D2207BD-FE1B-4323-90FA-3ECBDC247F1A' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( 'Failed to add account. Try again.', 404, {}, 'ED9F1D17-A562-4729-9EA9-0C83F193553C' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '19BBACCB-A7A1-4D7F-AA5F-92BBC4EF3838' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'E74826A5-CF0E-4D85-B4E1-4600EB71388A' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tawait dispatch( 'citizenMember/addAccount', { type:constants.PAYMENT_TYPE_TAX_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\tcommit('defineAccountShells', [ apiResponse.data.data.account ]);\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch('getAccount', { parcelId:apiResponse.data.data.account, search:false });\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', parcelId);\r\n\r\n\t\t//return the new account\r\n\t\treturn apiResponse.data.data.account;\r\n\r\n\t},\r\n\r\n\tremoveAccount: async function ( { dispatch, commit, rootState }, parcelId ) {\r\n\t\tparcelId = standardizeParcelId(parcelId);\r\n\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingTrue', parcelId);\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v3/taxes/remove/'+rootState.citizenMember.user.userId+'/'+parcelId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountRemovingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'DC5E6339-902B-4AD8-A506-59469C533565' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountRemovingFalse', parcelId);\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, '6AD169D6-9697-45A8-82AC-818F88F26BD8' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status===503 ) {\r\n\t\t\tcommit( 'setAccountRemovingFalse', parcelId );\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '74C86A4E-376E-4338-92EA-EF1BA20DE7EC' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit( 'setAccountRemovingFalse', parcelId );\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '26A557CF-A7C8-4467-A9DF-71BE6A16C3B7' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', {\r\n\t\t\ttype: constants.PAYMENT_TYPE_TAX_CODE,\r\n\t\t\taccount: apiResponse.data.data.account\r\n\t\t}, { root: true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit( 'setAccountRemovingFalse', parcelId );\r\n\t},\r\n\r\n\tclearAccountFromStore: function( { commit }, parcelId ) {\r\n\t\tcommit( 'clearAccountFromStore', parcelId )\r\n\t},\r\n\r\n\tclearAccountsFromStore: function( { commit }, parcelIds ) {\r\n\t\tcommit( 'clearAccountsFromStore', parcelIds )\r\n\t},\r\n\r\n\tclearNonMemberAccountsFromStore: function( { commit, rootGetters, state } ) {\r\n\t\tlet storeParcelIds = Object.keys( state.accounts );\r\n\t\tlet memberParcelIds = rootGetters[ \"citizenMember/accountNumbers\" ]( constants.PAYMENT_TYPE_TAX_CODE );\r\n\t\tlet nonMemberParcelIds = [];\r\n\r\n\t\tfor( let i in storeParcelIds ) {\r\n\t\t\tlet parcelId = storeParcelIds[ i ];\r\n\t\t\tif( !memberParcelIds.includes( parcelId ) ) {\r\n\t\t\t\tnonMemberParcelIds.push( parcelId );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( nonMemberParcelIds.length>0 ) {\r\n\t\t\tcommit( 'clearAccountsFromStore', nonMemberParcelIds )\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor( let i in state.accounts ) {\r\n\t\t\t\t\tstate.accounts[ i ]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[ i ]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tclearAccountFromStore: function( state, parcelId ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call( state.accounts, parcelId ) ) {\r\n\t\t\tdelete state.accounts[ parcelId ]\r\n\t\t}\r\n\t},\r\n\r\n\tclearAccountsFromStore: function( state, parcelIds ) {\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.accounts, parcelIds[ i ] ) ) {\r\n\t\t\t\tdelete state.accounts[ parcelIds[ i ] ]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function( state ) {\r\n\t\tObject.assign( state, getDefaultState() )\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts: function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function( state, parcelIds ) {\r\n\t\tif( !Array.isArray( parcelIds ) ) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId( parcelIds[ i ] );\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds ) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, parcelId ) ) {\r\n\t\t\t\tstate.accounts[ parcelId ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.parcelId)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.parcelId ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.parcelId, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, parcelIds ) {\r\n\t\tif(!Array.isArray(parcelIds)) {\r\n\t\t\tparcelIds = [ parcelIds ];\r\n\t\t}\r\n\t\tfor( let i in parcelIds) {\r\n\t\t\tlet parcelId = standardizeParcelId(parcelIds[i]);\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, parcelId)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\tpulled:false,\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\tparcelId:parcelId\r\n\t\t\t\t\t},\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, parcelId, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport * as constants from '@/constants';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenMaintenanceError from '@/errors/citizen/CitizenMaintenanceError';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\n\r\nconst storeKey = 'citizen.store.utility';\r\n\r\nconst getDefaultState = () => {\r\n\tlet now = new Date();\r\n\treturn {\r\n\t\taccounts: {},\r\n\t\tpaymentClient: null,\r\n\t\tcurrentFiscalYear: now.getMonth()<=5 ? now.getFullYear() : now.getFullYear() + 1,\r\n\t\trunningGetMemberAccounts: false\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tcurrentFiscalYear:function(state) {\r\n\t\treturn state.currentFiscalYear;\r\n\t},\r\n\r\n\taccounts:function(state){\r\n\t\treturn state.accounts;\r\n\t},\r\n\r\n\tmemberAccounts: function ( state, getters, rootState, rootGetters ) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_UTILITY_CODE);\r\n\t\tlet memberAccounts = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tmemberAccounts.push( state.accounts[ accountNumbers[ i ] ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberAccounts;\r\n\t},\r\n\r\n\tmemberNotices:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_UTILITY_CODE);\r\n\t\tlet memberNotices = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberNotices = memberNotices.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.notices );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberNotices;\r\n\t},\r\n\r\n\tmemberWarnings:function(state, getters, rootState, rootGetters) {\r\n\t\tlet accountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_UTILITY_CODE);\r\n\t\tlet memberWarnings = [];\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) && !state.accounts[ accountNumbers[ i ] ]._meta.loading ) {\r\n\t\t\t\tmemberWarnings = memberWarnings.concat( state.accounts[ accountNumbers[ i ] ].overview?.messages?.warnings );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn memberWarnings;\r\n\t},\r\n\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\tinitialize: async function ( { commit, rootGetters } ) {\r\n\t\t//console.log( 'citizen utility initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tcommit( 'defineAccountShells', rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_UTILITY_CODE) );\r\n\t},\r\n\r\n\treset: async function ( {commit} ) {\r\n\t\t//console.log( 'citizen utility reset' )\r\n\t\tawait commit( 'reset' );\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t}\r\n\t},\r\n\r\n\tgetMemberAccounts: async function ( { state, commit, dispatch, rootState, rootGetters } ) {\r\n\t\tif(state.runningGetMemberAccounts) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//set the running state so that we don't double fetch on navigation\r\n\t\tcommit('setRunningGetMemberAccounts', true );\r\n\r\n\t\tlet startingMemberAccountNumbers = rootGetters[\"citizenMember/accountNumbers\"](constants.PAYMENT_TYPE_UTILITY_CODE);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', startingMemberAccountNumbers );\r\n\t\tcommit('setAccountFetchingTrue', startingMemberAccountNumbers);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v3/public_utilities/accounts/' + rootState.citizenMember.user.userId );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setAccountFetchingFalse', startingMemberAccountNumbers );\r\n\t\t\tcommit( 'setRunningGetMemberAccounts', false );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '7289b251-5c9d-40b6-bc8f-955eee1e4cba' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '7bb019da-7d17-4986-93d7-646f3d951087' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\t\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the accounts or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, 'abffefa6-5bbd-419c-97a9-9b3952674588' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tlet updatedMemberAccountNumbers = [];\r\n\t\tfor( let i in apiResponse.data.data.accounts ) {\r\n\t\t\tupdatedMemberAccountNumbers.push( apiResponse.data.data.accounts[i].account.accountNumber );\r\n\t\t\tcommit( 'updateAppendAccount', apiResponse.data.data.accounts[i] );\r\n\t\t}\r\n\t\tdispatch('citizenMember/setAccounts', { accounts:updatedMemberAccountNumbers, type:constants.PAYMENT_TYPE_UTILITY_CODE }, { root:true } );\r\n\r\n\t\tcommit('setPaymentClient', apiResponse.data.data.payment );\r\n\r\n\t\t//set loading state of the accounts we touched\r\n\t\tcommit('setAccountLoadingFalse', startingMemberAccountNumbers);\r\n\t\tcommit('setAccountFetchingFalse', startingMemberAccountNumbers);\r\n\r\n\t\t//end the running state to allow fetching again\r\n\t\tcommit('setRunningGetMemberAccounts', false );\r\n\t},\r\n\r\n\tgetAccount: async function ( {commit}, accountNumber ) {\r\n\t\t//shell the account in case it's not saved yet\r\n\t\tcommit('defineAccountShells', [ accountNumber ]);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', accountNumber);\r\n\t\tcommit('setAccountFetchingTrue', accountNumber);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v3/public_utilities/detail/' + accountNumber );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit( 'setAccountLoadingFalse', accountNumber );\r\n\t\t\tcommit( 'setAccountFetchingFalse', accountNumber );\r\n\t\t\tif( e.code==503 ) {\r\n\t\t\t\tthrow new CitizenMaintenanceError( e.message, e.code, {}, '7bdfeba0-81b9-4445-b53f-d27cbbe86228' );\r\n\t\t\t}\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'b807b113-5ded-45ce-afe5-bc2e79137a51' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\t\tcommit('setAccountFetchingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( 'The server didn\\'t return the account or an error. Try signing out and back in. If you keep getting this error, contact support.', 500, {}, '7488bd93-3fa6-4f66-917a-6513d3f6820d' );\r\n\t\t}\r\n\r\n\t\t//set data\r\n\t\tcommit( 'updateAppendAccount', apiResponse.data.data );\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\tcommit('setAccountFetchingFalse', accountNumber);\r\n\t},\r\n\r\n\taddAccount: async function ( { commit, dispatch, rootState }, accountNumber ) {\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingTrue', accountNumber);\r\n\r\n\t\t//get data from api\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v3/public_utilities/add/' + rootState.citizenMember.user.userId + '/' + accountNumber, {} );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'af999289-c495-4082-bfc3-ccec94312dd9' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( 'Failed to add account. Try again.', 404, {}, 'e80bce0c-55d8-4c07-823d-c9371a8dc219' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '827a2ba8-7ccf-4695-b9ce-be3da6a455d7' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, 'a8881b6f-c079-4c53-b6b6-15ae3ca4e383' );\r\n\t\t}\r\n\r\n\t\t//add the type to member\r\n\t\tawait dispatch( 'citizenMember/addAccount', { type:constants.PAYMENT_TYPE_UTILITY_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\tcommit('defineAccountShells', [ apiResponse.data.data.account ]);\r\n\r\n\t\t//get account data\r\n\t\tawait dispatch('getAccount', apiResponse.data.data.account);\r\n\r\n\t\t//set loading state\r\n\t\tcommit('setAccountLoadingFalse', accountNumber);\r\n\r\n\t\t//return the new account\r\n\t\treturn apiResponse.data.data.account;\r\n\r\n\t},\r\n\r\n\tremoveAccount: async function ( { dispatch, commit, rootState }, accountNumber ) {\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingTrue', accountNumber);\r\n\r\n\t\t//tell api to remove account\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.delete( 'v3/public_utilities/remove/' + rootState.citizenMember.user.userId + '/' + accountNumber );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tcommit('setAccountRemovingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '35756547-AC80-4620-91DA-2E4CFFEB0F18' );\r\n\t\t}\r\n\r\n\t\t//handle non standard errors\r\n\t\tif( apiResponse===null ) {\r\n\t\t\tcommit('setAccountRemovingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( 'Failed to remove account. Try again.', 404, {}, '73E913BA-9C95-4BBA-935E-8F3E20B209CD' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error && apiResponse.data.status=== 503) {\r\n\t\t\tcommit('setAccountRemovingFalse', accountNumber);\r\n\t\t\tthrow new CitizenMaintenanceError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '7E409482-4353-47A4-B61F-ED0FC72F305D' );\r\n\t\t}\r\n\t\telse if( apiResponse.data.error ) {\r\n\t\t\tcommit('setAccountRemovingFalse', accountNumber);\r\n\t\t\tthrow new CitizenApiError( apiResponse.data.message, apiResponse.data.status, apiResponse.data.data, '99A920FA-F789-48DE-8061-3854C95A450C' );\r\n\t\t}\r\n\r\n\t\t//remove the type from member store\r\n\t\tawait dispatch( 'citizenMember/removeAccount', { type:constants.PAYMENT_TYPE_UTILITY_CODE, account:apiResponse.data.data.account }, { root:true } );\r\n\r\n\t\t//set removing state\r\n\t\tcommit('setAccountRemovingFalse', accountNumber);\r\n\t},\r\n\r\n\tclearAccountFromStore: function( { commit }, parcelId ) {\r\n\t\tcommit( 'clearAccountFromStore', parcelId )\r\n\t},\r\n\r\n\tclearAccountsFromStore: function( { commit }, parcelIds ) {\r\n\t\tcommit( 'clearAccountsFromStore', parcelIds )\r\n\t},\r\n\r\n\tclearNonMemberAccountsFromStore: function( { commit, rootGetters, state } ) {\r\n\t\tlet storeParcelIds = Object.keys( state.accounts );\r\n\t\tlet memberParcelIds = rootGetters[ \"citizenMember/accountNumbers\" ]( constants.PAYMENT_TYPE_UTILITY_CODE );\r\n\t\tlet nonMemberParcelIds = [];\r\n\r\n\t\tfor( let i in storeParcelIds ) {\r\n\t\t\tlet parcelId = storeParcelIds[ i ];\r\n\t\t\tif( !memberParcelIds.includes( parcelId ) ) {\r\n\t\t\t\tnonMemberParcelIds.push( parcelId );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( nonMemberParcelIds.length>0 ) {\r\n\t\t\tcommit( 'clearAccountsFromStore', nonMemberParcelIds )\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetModuleStateFromLocalStorage: function ( state ) {\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data !== null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\r\n\t\t\t\t//this is a page refresh so force the accounts to not be loading (in case a refresh started when the account was loading)\r\n\t\t\t\tstate.runningGetMemberAccounts = false;\r\n\t\t\t\tfor(let i in state.accounts) {\r\n\t\t\t\t\tstate.accounts[i]._meta.fetching = false;\r\n\t\t\t\t\tstate.accounts[i]._meta.loading = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tclearAccountFromStore: function( state, accountNumber ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call( state.accounts, accountNumber ) ) {\r\n\t\t\tdelete state.accounts[ accountNumber ]\r\n\t\t}\r\n\t},\r\n\r\n\tclearAccountsFromStore: function( state, accountNumbers ) {\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call( state.accounts, accountNumbers[ i ] ) ) {\r\n\t\t\t\tdelete state.accounts[ accountNumbers[ i ] ]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\treset: function ( state ) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t},\r\n\r\n\tsetRunningGetMemberAccounts:function( state, running ) {\r\n\t\tstate.runningGetMemberAccounts = running;\r\n\t},\r\n\r\n\tsetAccountLoadingTrue: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.loading = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountLoadingFalse: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.loading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountFetchingTrue: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.fetching = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountFetchingFalse: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.fetching = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccountRemovingTrue: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.removing = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetAccountRemovingFalse: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers ) {\r\n\t\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, accountNumbers[i] ) ) {\r\n\t\t\t\tstate.accounts[ accountNumbers[i] ]._meta.removing = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetPaymentClient:function( state, paymentClient) {\r\n\t\tstate.paymentClient = paymentClient;\r\n\t},\r\n\r\n\tupdateAppendAccount: function ( state, newAccount ) {\r\n\t\tif( Object.prototype.hasOwnProperty.call(state.accounts, newAccount.account.accountNumber)) {\r\n\t\t\tObject.assign(state.accounts[ newAccount.account.accountNumber ], newAccount)\r\n\t\t}\r\n\t\telse {\r\n\t\t\tVue.set(state.accounts, newAccount.account.accountNumber, newAccount)\r\n\t\t}\r\n\t},\r\n\r\n\tdefineAccountShells: function ( state, accountNumbers ) {\r\n\t\tif(!Array.isArray(accountNumbers)) {\r\n\t\t\taccountNumbers = [ accountNumbers ];\r\n\t\t}\r\n\t\tfor( let i in accountNumbers) {\r\n\t\t\tlet accountNumber = accountNumbers[i];\r\n\t\t\tif( !Object.prototype.hasOwnProperty.call(state.accounts, accountNumber)) {\r\n\t\t\t\tlet accountShell = {\r\n\t\t\t\t\taccount:{\r\n\t\t\t\t\t\taccountNumber:accountNumber,\r\n\t\t\t\t\t\tparcelId:'',\r\n\t\t\t\t\t\tcustomerId:'',\r\n\t\t\t\t\t\tserviceAddress:{\r\n\t\t\t\t\t\t\taddress:'',\r\n\t\t\t\t\t\t\taddress2:'',\r\n\t\t\t\t\t\t\tcity:'',\r\n\t\t\t\t\t\t\tstate:'',\r\n\t\t\t\t\t\t\tzip:'',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\toverview:{\r\n\t\t\t\t\t\tstatus:-1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_meta:{\r\n\t\t\t\t\t\tloading:true,\r\n\t\t\t\t\t\tremoving:false,\r\n\t\t\t\t\t\tfetched:null,\r\n\t\t\t\t\t\tfetching:false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tVue.set(state.accounts, accountNumber, accountShell)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","const state = () => ( {\r\n\trouting: false,\r\n\tto: {},\r\n\t_warnOnRouteChange: []\r\n} )\r\n\r\nconst getters = {\r\n\r\n\trouting: function( state ) {\r\n\t\treturn state.routing;\r\n\t},\r\n\r\n\tto: function( state ) {\r\n\t\treturn state.to;\r\n\t},\r\n\r\n\twarnOnRouteChange: function( state ) {\r\n\t\treturn state._warnOnRouteChange.length > 0;\r\n\t}\r\n\r\n}\r\n\r\nconst actions = {\r\n\r\n\t/**\r\n\t *\r\n\t * @param commit\r\n\t * @returns {string} Unique Id that needs to be provided to removeWarnOnRouteChanges to free up your claim to warning on route changes\r\n\t */\r\n\taddWarnOnRouteChange: function( { commit } ) {\r\n\t\tlet uniqueId = '_' + Math.random().toString( 36 ).substr( 2, 9 );\r\n\t\tcommit( '_addWarnOnRouteChange', uniqueId );\r\n\t\treturn uniqueId\r\n\t},\r\n\r\n\tremoveWarnOnRouteChange: async function( { commit }, uniqueId ) {\r\n\t\tawait commit( '_removeWarnOnRouteChange', uniqueId );\r\n\t}\r\n\r\n\r\n}\r\n\r\nconst mutations = {\r\n\r\n\t//DATA STATE\r\n\trouting: function( state, routing ) {\r\n\t\tstate.routing = routing;\r\n\t},\r\n\tto: function( state, to ) {\r\n\t\tstate.to = to;\r\n\t},\r\n\r\n\t_addWarnOnRouteChange: function( state, uniqueId ) {\r\n\t\tstate._warnOnRouteChange.push( uniqueId );\r\n\t},\r\n\r\n\t_removeWarnOnRouteChange: async function( state, uniqueId ) {\r\n\t\tlet index = state._warnOnRouteChange.findIndex( x => x === uniqueId );\r\n\t\tif( index > -1 ) {\r\n\t\t\tstate._warnOnRouteChange.splice( index, 1 );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_removeAllWarningRouteChanges: function( state ) {\r\n\t\tstate._warnOnRouteChange = [];\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\n\r\nimport citizenAtvStore from './citizen/atv.store';\r\nimport citizenBreadcrumbStore from './citizen/breadcrumbs.store';\r\nimport citizenLandfillCommercialRecyclingStore from './citizen/landfillCommercialRecycling.store';\r\nimport citizenLandfillCommercialWasteStore from './citizen/landfillCommercialWaste.store';\r\nimport citizenLandfillResidentialStore from './citizen/landfillResidential.store';\r\nimport citizenMemberStore from './citizen/member.store';\r\nimport citizenPaymentStore from './citizen/payment.store';\r\nimport citizenPermitStore from './citizen/permit.store';\r\nimport citizenReverse911Store from './citizen/reverse911.store';\r\nimport citizenSearchStore from './citizen/search.store';\r\nimport citizenTaxStore from './citizen/tax.store';\r\nimport citizenUtilityStore from './citizen/utility.store';\r\nimport routeStore from './route.store';\r\n\r\nVue.use( Vuex )\r\n\r\nexport default new Vuex.Store( {\r\n\tstate: {\r\n\t\tsnackbars: []\r\n\t},\r\n\tgetters: {\r\n\r\n\t\tsnackbars: function ( state ) {\r\n\t\t\treturn state.snackbars;\r\n\t\t},\r\n\r\n\t\tsnackbarTimeout: function ( state ) {\r\n\t\t\tif( typeof ( state.snackbars[ 0 ] ) != 'undefined' && typeof ( state.snackbars[ 0 ].timeout ) == 'number' ) {\r\n\t\t\t\treturn state.snackbars[ 0 ].timeout;\r\n\t\t\t}\r\n\t\t\treturn 4000;\r\n\t\t},\r\n\t},\r\n\tmutations: {\r\n\r\n\t\tsendSnackbar: function ( state, snackbar ) {\r\n\t\t\tstate.snackbars.push( snackbar );\r\n\t\t},\r\n\r\n\t\tremoveSnackbar: function ( state, id ) {\r\n\t\t\tlet index = state.snackbars.findIndex( item => item.id === id );\r\n\t\t\tif( index !== -1 ) {\r\n\t\t\t\tstate.snackbars.splice( index, 1 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetStateFromLocalStorage:function(/*state*/) {\r\n\t\t\t// if ( localStorage.getItem( 'citizen.store.downloadReports' ) ) {\r\n\t\t\t// \t// Replace the state object with the stored item\r\n\t\t\t// \tlet data = localStorage.getItem( 'citizen.store.downloadReports' );\r\n\t\t\t// \tif(data!==null) {\r\n\t\t\t// \t\tstate.downloadReports = data;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t},\r\n\r\n\r\n\t},\r\n\tactions: {\r\n\r\n\t\tinitialize: async function ({commit}) {\r\n\t\t\tawait commit('setStateFromLocalStorage');\r\n\t\t},\r\n\r\n\t\tflushStoreCache:async function() {\r\n\t\t\tlocalStorage.removeItem('citizen.store.member')\r\n\t\t},\r\n\r\n\t\tsendSnackbar: function ( {commit}, payload ) {\r\n\t\t\tlet snackbar = {\r\n\t\t\t\tid: \"snackbar_\" + crypto.randomUUID(),\r\n\t\t\t\tcolor: payload.color,\r\n\t\t\t\tmessage: payload.message,\r\n\t\t\t};\r\n\r\n\t\t\tif( 'timeout' in payload ) {\r\n\t\t\t\tsnackbar.timeout = payload.timeout;\r\n\t\t\t}\r\n\r\n\t\t\tcommit( 'sendSnackbar', snackbar );\r\n\r\n\t\t\treturn snackbar\r\n\r\n\t\t},\r\n\r\n\t\tsendErrorSnackbar: function ( {commit}, e ) {\r\n\t\t\tlet message = '';\r\n\t\t\tif( 'code' in e && e.code !== 0 && e.code!=='' && e.code!==null ) {\r\n\t\t\t\tmessage += e.code + ': ';\r\n\t\t\t}\r\n\t\t\tmessage += e.message;\r\n\r\n\t\t\tlet snackbar = {\r\n\t\t\t\tid: \"snackbar_\" + crypto.randomUUID(),\r\n\t\t\t\tcolor: 'error',\r\n\t\t\t\tmessage: message,\r\n\t\t\t\ttimeout: 5000\r\n\t\t\t};\r\n\r\n\t\t\tif( 'timeout' in e ) {\r\n\t\t\t\tsnackbar.timeout = e.timeout;\r\n\t\t\t}\r\n\r\n\t\t\tcommit( 'sendSnackbar', snackbar );\r\n\r\n\t\t\treturn snackbar\r\n\t\t},\r\n\r\n\t\tremoveSnackbar( {commit}, id ) {\r\n\t\t\tcommit( 'removeSnackbar', id );\r\n\t\t},\r\n\r\n\t},\r\n\tmodules: {\r\n\t\troute: routeStore,\r\n\t\tcitizenMember: citizenMemberStore,\r\n\t\tcitizenPayment: citizenPaymentStore,\r\n\t\tcitizenSearch: citizenSearchStore,\r\n\t\tcitizenTax: citizenTaxStore,\r\n\t\tcitizenUtility: citizenUtilityStore,\r\n\t\tcitizenLandfillResidential: citizenLandfillResidentialStore,\r\n\t\tcitizenAtv: citizenAtvStore,\r\n\t\tcitizenLandfillCommercialWaste: citizenLandfillCommercialWasteStore,\r\n\t\tcitizenLandfillCommercialRecycling: citizenLandfillCommercialRecyclingStore,\r\n\t\tcitizenReverse911: citizenReverse911Store,\r\n\t\tcitizenPermit: citizenPermitStore,\r\n\t\tcitizenBreadcrumbs: citizenBreadcrumbStore,\r\n\t}\r\n} )\r\n","import CustomError from \"@/errors/CustomError\";\r\n\r\n\r\nclass AuthError\r\n\textends CustomError {\r\n\r\n\tconstructor(message, code=0, data={}, guid='') {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper( message, code, data, guid )\r\n\t}\r\n\r\n}\r\nexport default AuthError;","import CustomError from \"@/errors/CustomError\";\r\n\r\n\r\nclass CitizenLogicError\r\n\textends CustomError {\r\n\tconstructor( message, code = 0, data = {}, guid='') {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper( message, code, data, guid )\r\n\t}\r\n}\r\n\r\nexport default CitizenLogicError;","import jwt_decode from 'jwt-decode';\r\nimport { some } from 'lodash';\r\n\r\nimport * as constants from '@/constants';\r\nimport { waitUntil } from '@/constants';\r\nimport AuthError from '@/errors/AuthError';\r\nimport CitizenApiError from '@/errors/citizen/CitizenApiError';\r\nimport CitizenLogicError from '@/errors/citizen/CitizenLogicError';\r\nimport router from '@/router';\r\nimport CitizenConnectApiService from '@/services/citizen/CitizenConnectApiService';\r\nimport PermitsApiService from '@/services/citizen/PermitsApiService';\r\n\r\nconst storeKey = 'citizen.store.member';\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\taccessToken: '',\r\n\t\trefreshToken: '',\r\n\t\troles: [],\r\n\t\tuser: {},\r\n\t\tisSignedIn: false,\r\n\t\tfresh: false,\r\n\t\taccountNumbers: {\r\n\t\t\ttax: [],\r\n\t\t\tlandfill: [],\r\n\t\t\tutility: [],\r\n\t\t\tcommercialLandfillWaste: [],\r\n\t\t\tcommercialLandfillRecycling: [],\r\n\t\t\tatv: [],\r\n\t\t\tpermit: [],\r\n\t\t\tpermitRequest: [],\r\n\t\t},\r\n\t\timpersonating: false,\r\n\t\t_gettingAccessToken: false,\r\n\t\t_exchangingRefreshToken: false,\r\n\t}\r\n}\r\n\r\nconst state = getDefaultState()\r\n\r\nconst getters = {\r\n\r\n\tisSignedIn: function( state ) {\r\n\t\tif( !state.isSignedIn || !state.fresh ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\ttryRefreshToken: function( state ) {\r\n\t\tif( state.refreshToken!=='' ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tuserId: function( state ) {\r\n\t\treturn state.user.userId;\r\n\t},\r\n\r\n\taccountNumbers: ( state ) => ( type ) => {\r\n\t\treturn state.accountNumbers[ type ];\r\n\t},\r\n\r\n\thasRole: ( state ) => ( role ) => {\r\n\t\treturn state.roles.includes( role );\r\n\t},\r\n\r\n}\r\n\r\nconst actions = {\r\n\tinitialize: async function( {\r\n\t\tcommit, dispatch\r\n\t} ) {\r\n\t\t//console.log( 'citizen member initialize' )\r\n\t\tawait commit( 'setModuleStateFromLocalStorage' );\r\n\t\tawait dispatch( 'initializeDependentStores' );\r\n\t},\r\n\r\n\tinitializeDependentStores: async function( { dispatch } ) {\r\n\t\t//console.log( 'citizen member initializeDependentStores' )\r\n\t\tawait dispatch( 'citizenSearch/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenTax/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenUtility/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenLandfillResidential/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenAtv/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenLandfillCommercialWaste/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenLandfillCommercialRecycling/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenReverse911/initialize', null, { root: true } );\r\n\t\tawait dispatch( 'citizenPermit/initialize', null, { root: true } );\r\n\t},\r\n\r\n\treset: async function( { commit, dispatch }, clearCache=true ) {\r\n\t\t//console.log( 'citizen member reset' )\r\n\t\tlet memberCancel = CitizenConnectApiService.cancel( 'Sign out' )\r\n\t\tlet permitsCancel = PermitsApiService.cancelAll()\r\n\t\tlet memberReset = commit( 'reset' );\r\n\t\tlet dependentModulesReset = dispatch( 'resetDependentStores' );\r\n\r\n\t\tawait memberCancel\r\n\t\tawait permitsCancel\r\n\t\tawait memberReset\r\n\t\tawait dependentModulesReset\r\n\r\n\t\tif(clearCache) {\r\n\t\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t\tlocalStorage.removeItem( storeKey );\r\n\t\t\t}\r\n\t\t\tif( localStorage.getItem( storeKey+'.impersonate' ) ) {\r\n\t\t\t\tlocalStorage.removeItem( storeKey+'.impersonate' );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tresetDependentStores: async function( { dispatch } ) {\r\n\t\tlet paymentReset = dispatch( 'citizenPayment/reset', null, { root: true } );\r\n\t\tlet taxReset = dispatch( 'citizenTax/reset', null, { root: true } );\r\n\t\tlet utilityReset = dispatch( 'citizenUtility/reset', null, { root: true } );\r\n\t\tlet landfillResidentialReset = dispatch( 'citizenLandfillResidential/reset', null, { root: true } );\r\n\t\tlet atvReset = dispatch( 'citizenAtv/reset', null, { root: true } );\r\n\t\tlet landfillCommercialWasteReset = dispatch( 'citizenLandfillCommercialWaste/reset', null, { root: true } );\r\n\t\tlet landfillCommercialRecyclingReset = dispatch( 'citizenLandfillCommercialRecycling/reset', null, { root: true } );\r\n\t\tlet reverse911StoreReset = dispatch( 'citizenReverse911/reset', null, { root: true } );\r\n\t\tlet searchReset = dispatch( 'citizenSearch/reset', null, { root: true } );\r\n\t\tlet permitReset = dispatch( 'citizenPermit/reset', null, { root: true } );\r\n\r\n\t\tawait paymentReset\r\n\t\tawait taxReset\r\n\t\tawait utilityReset\r\n\t\tawait landfillResidentialReset\r\n\t\tawait atvReset\r\n\t\tawait landfillCommercialWasteReset\r\n\t\tawait landfillCommercialRecyclingReset\r\n\t\tawait reverse911StoreReset\r\n\t\tawait searchReset\r\n\t\tawait permitReset\r\n\t},\r\n\r\n\tgetAccessToken: async function( { state, commit, dispatch } ) {\r\n\t\t//if the task is already getting a new one\r\n\t\tif( state._gettingAccessToken ) {\r\n\t\t\tawait waitUntil( () => !state._gettingAccessToken )\r\n\t\t\treturn state.accessToken\r\n\t\t}\r\n\r\n\t\tcommit( 'setGettingAccessToken', true )\r\n\t\t//console.log( 'getAccessToken - start' );\r\n\t\tlet getNewToken = false;\r\n\r\n\t\tif( state.accessToken==\"\" ) {\r\n\t\t\tgetNewToken = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\ttry {\r\n\t\t\t\tlet decodedCurrentAccessToken = jwt_decode( state.accessToken );\r\n\t\t\t\tif( Date.now()>=( decodedCurrentAccessToken.exp * 1000 ) ) {\r\n\t\t\t\t\tgetNewToken = true;\r\n\t\t\t\t\t//console.log( 'getAccessToken - access token expired' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch( e ) {\r\n\t\t\t\t//console.log( 'getAccessToken - access token invalid' );\r\n\t\t\t\tgetNewToken = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( getNewToken ) {\r\n\t\t\tawait commit( 'setAccessToken', '' );\r\n\t\t\tif( state.refreshToken=='' ) {\r\n\t\t\t\tcommit( 'setGettingAccessToken', false )\r\n\t\t\t\tdispatch( 'reset' )\r\n\t\t\t\trouter.push( { name: 'citizen.auth.signIn' } )\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t\t//console.log( 'getAccessToken - exchange refresh token' );\r\n\t\t\tawait dispatch( 'exchangeRefreshToken' );\r\n\t\t}\r\n\r\n\t\t//console.log( 'getAccessToken - return access token' );\r\n\t\tawait commit( 'setFresh', true );\r\n\t\tcommit( 'setGettingAccessToken', false )\r\n\t\treturn state.accessToken;\r\n\t},\r\n\r\n\texchangeRefreshToken: async function( { state, commit, dispatch } ) {\r\n\t\tcommit( 'setExchangingRefreshToken', true )\r\n\t\t//console.log( 'exchangeRefreshToken - start' );\r\n\r\n\t\t//if refresh token is invalid or expired, send user to sign in page\r\n\t\tlet refreshTokenExpiredInvalid = false;\r\n\t\ttry {\r\n\t\t\tlet decodedCurrentRefreshToken = jwt_decode( state.refreshToken );\r\n\t\t\tif( Date.now()>( decodedCurrentRefreshToken.exp * 1000 ) ) {\r\n\t\t\t\trefreshTokenExpiredInvalid = true;\r\n\t\t\t\t//console.log( 'refresh token expired' );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log( 'exchangeRefreshToken - refresh token invalid' );\r\n\t\t\trefreshTokenExpiredInvalid = true;\r\n\t\t}\r\n\r\n\t\tif( refreshTokenExpiredInvalid ) {\r\n\t\t\tcommit( 'setRefreshToken', '' )\r\n\t\t\tif( router.currentRoute.name!=='citizen.auth.signIn' ) {\r\n\t\t\t\tdispatch( 'reset' )\r\n\t\t\t\tawait router.push( { name: 'citizen.auth.signIn' } )\r\n\t\t\t}\r\n\t\t\tcommit( 'setExchangingRefreshToken', false )\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\t//refresh token is valid, exchange it for a new access token and refresh token\r\n\t\tlet payload = {\r\n\t\t\t'grant_type': 'refresh_token',\r\n\t\t\t'refresh_token': state.refreshToken,\r\n\t\t\t'client_id': process.env.VUE_APP_PAYMENTS_API_CLIENT_ID,\r\n\t\t\t'scope': state.roles.join( ' ' )\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\t//console.log( 'exchangeRefreshToken - exchange refresh token' );\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.post( 'v2/auth/authorize', payload, {}, false );\r\n\t\t\tcommit( 'setDataFromToken', apiResponse.data.access_token );\r\n\t\t\tcommit( 'setRefreshToken', apiResponse.data.refresh_token );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log( 'exchangeRefreshToken - error exchanging refresh token: ' + e.message );\r\n\t\t\tdispatch( 'reset' )\r\n\t\t\tawait router.push( { name: 'citizen.auth.signIn' } )\r\n\t\t}\r\n\r\n\t\tcommit( 'setExchangingRefreshToken', false )\r\n\r\n\t\t//console.log( 'exchangeRefreshToken - end' );\r\n\t},\r\n\r\n\texchangeAuthorizationGrantCode: async function( { commit, dispatch }, authorizationGrantCode ) {\r\n\t\t//console.log( 'exchangeAuthorizationGrantCode - start' );\r\n\r\n\t\t//refresh token is valid, exchange it for a new access token and refresh token\r\n\t\tlet payload = {\r\n\t\t\t'grant_type': 'authorization_code',\r\n\t\t\t'code': authorizationGrantCode,\r\n\t\t\t'client_id': process.env.VUE_APP_PAYMENTS_API_CLIENT_ID\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\t//console.log( 'exchangeAuthorizationGrantCode - exchange refresh token' );\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.post( 'v2/auth/authorize', payload, {}, false );\r\n\t\t\tcommit( 'setDataFromToken', apiResponse.data.access_token );\r\n\t\t\tcommit( 'setRefreshToken', apiResponse.data.refresh_token );\r\n\t\t\tawait dispatch( 'getAccountNumbers' );\r\n\t\t\tawait dispatch( 'initializeDependentStores' );\r\n\t\t\tawait router.push( { name: 'citizen.dashboard' } )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log( 'exchangeAuthorizationGrantCode - error exchanging refresh token: ' + e.message );\r\n\t\t\t//console.log( e );\r\n\t\t\tawait router.push( {\r\n\t\t\t\tname: 'citizen.auth.error',\r\n\t\t\t\tquery: {\r\n\t\t\t\t\tcode: e.code,\r\n\t\t\t\t\tmessage: e.message\r\n\t\t\t\t}\r\n\t\t\t} )\r\n\t\t}\r\n\r\n\t\t//console.log( 'exchangeAuthorizationGrantCode - end' );\r\n\t},\r\n\r\n\tpasswordGrantSignIn: async function( { commit, dispatch }, form ) {\r\n\t\t//console.log( 'passwordGrantSignIn - start' );\r\n\r\n\t\t//refresh token is valid, exchange it for a new access token and refresh token\r\n\t\tlet payload = {\r\n\t\t\t'grant_type': 'password',\r\n\t\t\t'client_id': process.env.VUE_APP_PAYMENTS_API_CLIENT_ID,\r\n\t\t\t'scope': 'login',\r\n\t\t\t'username': form.email,\r\n\t\t\t'password': form.password\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\t//console.log( 'passwordGrantSignIn - post' );\r\n\t\t\tlet apiResponse = await CitizenConnectApiService.post( 'v2/auth/authorize', payload, {}, false );\r\n\t\t\tcommit( 'setDataFromToken', apiResponse.data.access_token );\r\n\t\t\tcommit( 'setRefreshToken', apiResponse.data.refresh_token );\r\n\t\t\tawait dispatch( 'getAccountNumbers' );\r\n\t\t\tawait dispatch( 'initializeDependentStores' );\r\n\t\t\t//console.log( 'go to dashboard' );\r\n\t\t\tawait router.push( { name: 'citizen.dashboard' } )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.log( 'passwordGrantSignIn - error with sign in: ' + e.message );\r\n\t\t\tif( e.response && e.response.data.message ) {\r\n\t\t\t\treturn e.response.data.message;\r\n\t\t\t}\r\n\t\t\treturn e.message;\r\n\t\t}\r\n\r\n\t\t//console.log( 'passwordGrantSignIn - end' );\r\n\t},\r\n\r\n\tgetAccountNumbers: async function( { state, dispatch } ) {\r\n\r\n\t\tlet apiResponse = null;\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/member/accountNumbers/' + state.user.userId );\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.taxes,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_TAX_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.public_utilities,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_UTILITY_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.permits,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.permitRequests,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_PERMIT_REQUEST_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.landfill,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_LANDFILL_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.atv,\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_ATV_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.wasteworks[ constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_API_CODE ],\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE\r\n\t\t\t} )\r\n\t\t\tawait dispatch( 'setAccounts', {\r\n\t\t\t\taccounts: apiResponse.data.data.wasteworks[ constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_API_CODE ],\r\n\t\t\t\ttype: constants.PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE\r\n\t\t\t} )\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '8F041B1C-AF8C-429F-A997-1CFB9F3D7773' );\r\n\t\t}\r\n\t},\r\n\r\n\tsetAccounts: async function( { state, commit }, { accounts, type } ) {\r\n\t\t// accountsAndType = { accounts:[\"\",\"\"], type:\"\" }\r\n\r\n\t\t//verify accountsAndType structure is correct\r\n\t\tif( typeof accounts==='undefined') {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account numbers', 500, {}, '865A3B68-7F2F-4F9A-BA44-71BD3E014621' );\r\n\t\t}\r\n\t\telse if( typeof type==='undefined' ) {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account type', 500, {}, 'A94C94C8-D8C6-4E79-8D9D-962AFD9C329C' );\r\n\t\t}\r\n\r\n\t\t//verify types are valid\r\n\t\tif( !Object.hasOwn( state.accountNumbers, type ) ) {\r\n\t\t\tthrow new CitizenLogicError( type+' is an invalid accounts type', 500, {}, '60FDAE12-03EA-4694-85A1-E84BFA6623C7' );\r\n\t\t}\r\n\r\n\t\t//add account\r\n\t\tcommit( 'setAccounts', {accounts, type} )\r\n\r\n\t},\r\n\r\n\taddAccount: async function( { state, commit, dispatch }, { account, type } ) {\r\n\r\n\t\t//verify accountsAndType structure is correct\r\n\t\tif( typeof account==='undefined') {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account number', 500, {}, 'C3D0C3EC-7043-450F-B8EB-2512764E7827' );\r\n\t\t}\r\n\t\telse if( typeof type ==='undefined' ) {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account type', 500, {}, '3A63CF89-B439-4485-9877-FE5F0E0607AC' );\r\n\t\t}\r\n\r\n\t\t//verify types are valid\r\n\t\tif( !Object.hasOwn( state.accountNumbers, type ) ) {\r\n\t\t\tthrow new CitizenLogicError( type+' is an invalid account type', 500, {}, 'F49C8D92-F923-4615-8C10-2739EED9A805' );\r\n\t\t}\r\n\r\n\t\t//don't duplicate an account\r\n\t\tlet isMemberAccount = await dispatch('isMemberAccount', { accountNumber:account, type:type })\r\n\t\tif(!isMemberAccount) {\r\n\t\t\tcommit( 'addAccount', { account, type } )\r\n\t\t}\r\n\r\n\r\n\t},\r\n\r\n\tremoveAccount: async function( { state, commit }, accountsAndType ) {\r\n\t\t// accountsAndType = { account:\"\", type:\"\" }\r\n\r\n\t\t//verify accountsAndType structure is correct\r\n\t\tif( !Object.prototype.hasOwnProperty.call( accountsAndType, 'account' ) ) {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account number', 500, {}, 'C3D0C3EC-7043-450F-B8EB-2512764E7827' );\r\n\t\t}\r\n\t\telse if( !Object.prototype.hasOwnProperty.call( accountsAndType, 'type' ) ) {\r\n\t\t\tthrow new CitizenLogicError( 'Missing account type', 500, {}, '3A63CF89-B439-4485-9877-FE5F0E0607AC' );\r\n\t\t}\r\n\r\n\t\t//verify types are valid\r\n\t\tif( !Object.prototype.hasOwnProperty.call( state.accountNumbers, accountsAndType.type ) ) {\r\n\t\t\tthrow new CitizenLogicError( 'Invalid account type', 500, {}, 'F49C8D92-F923-4615-8C10-2739EED9A805' );\r\n\t\t}\r\n\r\n\t\t//add account\r\n\t\tcommit( 'removeAccount', accountsAndType )\r\n\r\n\t},\r\n\r\n\tchangePassword: async function( { state }, password ) {\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/member/changePassword/' + state.user.userId, { password: password } );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '68F0468E-8BC9-43BD-ABD1-33EE4075BDF6' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\t},\r\n\r\n\tchangeEmail: async function( { state }, email ) {\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/member/changeEmail/' + state.user.userId, { email: email } );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'C3CD61BE-7B05-49AF-B934-A276CA67FBB0' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\r\n\t},\r\n\r\n\tconfirmChangeEmail: async function( vueX, { memberId, changeRequestId, requestVerificationCode } ) {\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/member/confirmChangeEmail/' + memberId + '/' + changeRequestId + '/' + requestVerificationCode, {}, {}, false );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '8A1B6B01-85E3-4A02-A051-043BC75A518F' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\t},\r\n\r\n\tgetChangeEmailRequest: async function( vueX, { memberId, changeRequestId, requestVerificationCode } ) {\r\n\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/member/getChangeEmailRequest/' + memberId + '/' + changeRequestId + '/' + requestVerificationCode, {}, false );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, 'AB810E71-B75D-4B2F-915F-399CA16E8CFD' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\r\n\t},\r\n\r\n\tverifyAccount: async function( vueX, { memberId, verificationCode } ) {\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.post( 'v2/member/verifyAccount/' + memberId + '/' + verificationCode, {}, {}, false );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '0A11A21B-DB7A-4008-ABF3-99CE65DF58F1' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\t},\r\n\r\n\tgetVerifyAccount: async function( vueX, { memberId, verificationCode } ) {\r\n\r\n\t\tlet apiResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tapiResponse = await CitizenConnectApiService.get( 'v2/member/getVerifyAccount/' + memberId + '/' + verificationCode, {}, false );\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\t//console.error( e );\r\n\t\t\tthrow new CitizenApiError( e.message, e.code, {}, '7EAD2ECB-96A9-4C83-BA86-03A29B02FAD1' );\r\n\t\t}\r\n\r\n\t\treturn apiResponse\r\n\r\n\t},\r\n\r\n\tisMemberAccount: function( { state }, { type, accountNumber } ) {\r\n\t\tlet memberAccounts = state.accountNumbers[ type ]\r\n\t\t//string account numbers\r\n\t\tif( memberAccounts.includes( accountNumber ) ) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t//integer account numbers\r\n\t\telse if( memberAccounts.includes( parseInt( accountNumber ) ) ) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t//multikey account numbers\r\n\t\telse {\r\n\t\t\treturn some( memberAccounts, accountNumber )\r\n\t\t}\r\n\r\n\t},\r\n\r\n\timpersonate:async function( { state, commit, dispatch }, { access_token, refresh_token } ) {\r\n\t\tlocalStorage.setItem( storeKey+'.impersonate', JSON.stringify( state ) );\r\n\t\tawait dispatch('resetDependentStores')\r\n\t\tcommit('setImpersonating', true )\r\n\t\tcommit( 'setDataFromToken', access_token );\r\n\t\tcommit( 'setRefreshToken', refresh_token );\r\n\t\tawait dispatch( 'getAccountNumbers' );\r\n\t\tawait dispatch( 'initializeDependentStores' );\r\n\t},\r\n\r\n\texitImpersonate:async function({ commit, dispatch } ) {\r\n\t\tawait CitizenConnectApiService.cancel( 'Request cancelled' )\r\n\t\tawait dispatch('resetDependentStores')\r\n\t\tcommit('setModuleStateFromImpersonateLocalStorage');\r\n\t\tcommit('setImpersonating', false )\r\n\t\tawait dispatch( 'getAccountNumbers' );\r\n\t\tawait dispatch( 'initializeDependentStores' );\r\n\t}\r\n}\r\n\r\nconst mutations = {\r\n\r\n\tsetDataFromToken: function( state, accessToken ) {\r\n\t\ttry {\r\n\t\t\tlet decodedAccessToken = jwt_decode( accessToken );\r\n\t\t\tstate.accessToken = accessToken;\r\n\t\t\tstate.roles = decodedAccessToken.scope;\r\n\t\t\tstate.user = decodedAccessToken.data;\r\n\t\t\tstate.isSignedIn = true;\r\n\t\t\tstate.fresh = true;\r\n\t\t}\r\n\t\tcatch( e ) {\r\n\t\t\tthrow new AuthError( 'Invalid authentication token provided by API', 500, e, 'DDA5CE54-D6DB-4753-85FF-B947ED042ACE' );\r\n\t\t}\r\n\t},\r\n\tsetAccessToken: function( state, accessToken ) {\r\n\t\tstate.accessToken = accessToken;\r\n\t},\r\n\tsetRefreshToken: function( state, refreshToken ) {\r\n\t\tstate.refreshToken = refreshToken;\r\n\t},\r\n\r\n\tsetModuleStateFromLocalStorage: function( state ) {\r\n\t\t//console.log( 'citizen member setModuleStateFromLocalStorage' )\r\n\t\tif( localStorage.getItem( storeKey ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey ) );\r\n\t\t\tif( data!==null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\t\t\t\tstate.fresh = false;\r\n\t\t\t\tstate._gettingAccessToken = false;\r\n\t\t\t\tstate._exchangingRefreshToken = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tsetModuleStateFromImpersonateLocalStorage: function( state ) {\r\n\t\tif( localStorage.getItem( storeKey+'.impersonate' ) ) {\r\n\t\t\t// Replace the state object with the stored item\r\n\t\t\tlet data = JSON.parse( localStorage.getItem( storeKey+'.impersonate' ) );\r\n\t\t\tif( data!==null ) {\r\n\t\t\t\tObject.assign( state, data )\r\n\t\t\t\tstate.fresh = false;\r\n\t\t\t\tstate._gettingAccessToken = false;\r\n\t\t\t\tstate._exchangingRefreshToken = false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tsetFresh: function( state, val ) {\r\n\t\tstate.fresh = val;\r\n\t},\r\n\r\n\tsetImpersonating: function( state, val ) {\r\n\t\tstate.impersonating = val;\r\n\t},\r\n\r\n\tsetGettingAccessToken: function( state, val ) {\r\n\t\tstate._gettingAccessToken = val;\r\n\t},\r\n\r\n\tsetExchangingRefreshToken: function( state, val ) {\r\n\t\tstate._exchangingRefreshToken = val;\r\n\t},\r\n\r\n\treset( state ) {\r\n\t\tObject.assign( state, getDefaultState() )\r\n\t},\r\n\r\n\tsetAccounts( state, accountsAndType ) {\r\n\t\tstate.accountNumbers[ accountsAndType.type ] = accountsAndType.accounts;\r\n\t},\r\n\r\n\taddAccount( state, accountsAndType ) {\r\n\t\tstate.accountNumbers[ accountsAndType.type ].push( accountsAndType.account );\r\n\t},\r\n\r\n\tremoveAccount( state, accountsAndType ) {\r\n\t\tlet index = state.accountNumbers[ accountsAndType.type ].findIndex( accountNumber => accountNumber==accountsAndType.account )\r\n\t\tif( accountsAndType.type==='permit' ) {\r\n\t\t\tindex = state.accountNumbers[ accountsAndType.type ].findIndex( accountNumber => accountNumber.projectId==accountsAndType.account.projectId )\r\n\t\t}\r\n\t\tif( accountsAndType.type==='permitRequest' ) {\r\n\t\t\tindex = state.accountNumbers[ accountsAndType.type ].findIndex( accountNumber => accountNumber.projectRequestId==accountsAndType.account.projectRequestId )\r\n\t\t}\r\n\t\tif( index!== -1 ) {\r\n\t\t\tstate.accountNumbers[ accountsAndType.type ].splice( index, 1 );\r\n\t\t}\r\n\t},\r\n\r\n\tsetEmail( state, email ) {\r\n\t\tstate.user.email = email\r\n\t}\r\n\r\n}\r\n\r\n\r\nexport default {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n}\r\n","import ApiService, {ApiConfig, ApiError} from '@gcgov/apiservice';\r\n\r\nimport store from '@/store/index';\r\n\r\n/**\r\n * Example usage:\r\n * import BulkEmailApiService from \"@/services/BulkEmailApiService\"\r\n * try {\r\n * apiResponse = await BulkEmailApiService.get( 'widget/' + widgetId )\r\n * }\r\n * catch( e ) {\r\n * //console.log(e)\r\n * }\r\n */\r\nconst config = new ApiConfig(\r\n\tprocess.env.VUE_APP_PERMITS_API_URL, //base url for the api\r\n\tprocess.env.VUE_APP_PERMITS_API_URL_PARAMS, //url parameters to be added to every request\r\n\ttrue, //api requires authentication\r\n\tasync () => { //method to get and auto refresh the api access token\r\n\t\tlet apiAccessToken = await store.dispatch( 'citizenPermit/getAccessToken' );\r\n\t\tif( apiAccessToken==='' ) {\r\n\t\t\t//console.log( 'empty access token' );\r\n\t\t\tthrow new ApiError( 'Not authenticated', 401 );\r\n\t\t}\r\n\r\n\t\treturn apiAccessToken\r\n\t}\r\n)\r\nclass PermitsApiService extends ApiService {\r\n\tuploadForProject = async ( projectId, permitId, inspectionId, files) => {\r\n\t\tlet url = 'file/upload/' + projectId;\r\n\t\tif( typeof ( permitId )!='undefined' && permitId!=null ) {\r\n\t\t\turl += '/' + permitId;\r\n\t\t}\r\n\t\tif( typeof ( inspectionId )!='undefined' && inspectionId!=null ) {\r\n\t\t\turl += '/' + inspectionId;\r\n\t\t}\r\n\t\treturn this.upload( url, files )\r\n\t}\r\n\r\n\tuploadForExternal = async ( externalProjectRequestId, files) => {\r\n\t\treturn this.upload( 'externalProjectRequestFile/upload/' + externalProjectRequestId, files )\r\n\t}\r\n\r\n\r\n\texchangeCitizenConnectTokenForPermitToken = async ()=> {\r\n\t\tlet citizenConnectApiAccessToken = await store.dispatch( 'citizenMember/getAccessToken' );\r\n\t\tif( citizenConnectApiAccessToken==='' ) {\r\n\t\t\t//console.log( 'empty citizen connect access token' );\r\n\t\t\tthrow new ApiError( 'Not authenticated', 401 );\r\n\t\t}\r\n\t\tlet options = {\r\n\t\t\theaders: {\r\n\t\t\t\t'Authorization': 'Bearer ' + citizenConnectApiAccessToken\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.get( 'auth/citizenConnect', options, false );\r\n\t}\r\n}\r\n\r\n\r\n\r\nexport default new PermitsApiService( config )\r\n","import CustomError from \"@/errors/CustomError\";\r\n\r\n\r\nclass CitizenApiError\r\n\textends CustomError {\r\n\tconstructor( message, code = 0, data = {}, guid='') {\r\n\t\t// Pass remaining arguments (including vendor specific ones) to parent constructor\r\n\t\tsuper( message, code, data, guid )\r\n\t}\r\n}\r\n\r\nexport default CitizenApiError;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"155\":\"citizen.auth.error\",\"175\":\"citizen.landfillCommercial\",\"180\":\"citizen.reverse911\",\"204\":\"citizen.permit\",\"223\":\"citizen.utility\",\"224\":\"citizen.tax\",\"244\":\"citizen.atv\",\"297\":\"citizen.verify.account\",\"300\":\"citizen.taxOpenAccounts\",\"308\":\"citizen.auth.createAccount\",\"379\":\"citizen.dashboard\",\"444\":\"citizen.verify.changeEmail\",\"461\":\"citizen.search\",\"508\":\"citizen.feedback\",\"545\":\"citizen.payment\",\"585\":\"citizen.auth.signIn\",\"592\":\"citizen.auth.signOut\",\"624\":\"citizen.permit.new\",\"779\":\"error\",\"837\":\"citizen.landfillResidential\",\"918\":\"citizen.account\",\"929\":\"citizen.auth.forgotPassword\",\"930\":\"citizen.admin\"}[chunkId] || chunkId) + \".\" + {\"10\":\"a4076ce6\",\"35\":\"bc55a9da\",\"116\":\"ab7a686a\",\"153\":\"dd2a934c\",\"155\":\"1b8941a8\",\"163\":\"aada65fa\",\"175\":\"8aea4336\",\"180\":\"71b846cb\",\"198\":\"0a2b154f\",\"204\":\"b7c75bcf\",\"223\":\"80b2ead5\",\"224\":\"df1fc830\",\"244\":\"1715d21a\",\"262\":\"12ecf079\",\"297\":\"8346d776\",\"300\":\"94873a62\",\"308\":\"6484e47b\",\"319\":\"c907461d\",\"379\":\"82042a92\",\"444\":\"18cfbf9a\",\"460\":\"ec7835ca\",\"461\":\"70905316\",\"508\":\"23b22d80\",\"545\":\"141bea62\",\"571\":\"00adf07c\",\"585\":\"1581e605\",\"592\":\"ab9fe251\",\"624\":\"6a853bbe\",\"628\":\"9c1d173a\",\"632\":\"0871e0e8\",\"641\":\"5f1cd3d2\",\"652\":\"04b88b8c\",\"769\":\"351d34d4\",\"779\":\"f9d3ec35\",\"800\":\"ab7f37a6\",\"831\":\"4006da6e\",\"837\":\"8fac518b\",\"845\":\"5214ce98\",\"851\":\"5aa7a23b\",\"872\":\"a97c5339\",\"899\":\"59a84d85\",\"918\":\"f4847cd6\",\"929\":\"6e790b69\",\"930\":\"dcac7a70\",\"931\":\"2ac30200\",\"959\":\"20976be8\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + ({\"175\":\"citizen.landfillCommercial\",\"180\":\"citizen.reverse911\",\"204\":\"citizen.permit\",\"223\":\"citizen.utility\",\"224\":\"citizen.tax\",\"244\":\"citizen.atv\",\"297\":\"citizen.verify.account\",\"300\":\"citizen.taxOpenAccounts\",\"308\":\"citizen.auth.createAccount\",\"379\":\"citizen.dashboard\",\"444\":\"citizen.verify.changeEmail\",\"461\":\"citizen.search\",\"508\":\"citizen.feedback\",\"545\":\"citizen.payment\",\"585\":\"citizen.auth.signIn\",\"624\":\"citizen.permit.new\",\"837\":\"citizen.landfillResidential\",\"918\":\"citizen.account\",\"929\":\"citizen.auth.forgotPassword\",\"930\":\"citizen.admin\"}[chunkId] || chunkId) + \".\" + {\"10\":\"8bb54fe6\",\"35\":\"8bb54fe6\",\"116\":\"8bb54fe6\",\"153\":\"8bb54fe6\",\"175\":\"95355650\",\"180\":\"95355650\",\"204\":\"95355650\",\"223\":\"0ed86576\",\"224\":\"0ed86576\",\"244\":\"95355650\",\"297\":\"95355650\",\"300\":\"fa5ed266\",\"308\":\"95355650\",\"319\":\"8bb54fe6\",\"379\":\"95355650\",\"444\":\"95355650\",\"460\":\"8bb54fe6\",\"461\":\"92555160\",\"508\":\"95355650\",\"545\":\"d268493a\",\"571\":\"8bb54fe6\",\"585\":\"95355650\",\"624\":\"b81e157a\",\"632\":\"8bb54fe6\",\"800\":\"8bb54fe6\",\"831\":\"8bb54fe6\",\"837\":\"95355650\",\"845\":\"8bb54fe6\",\"872\":\"8bb54fe6\",\"899\":\"8bb54fe6\",\"918\":\"a9f7e7cd\",\"929\":\"95355650\",\"930\":\"350059bf\",\"959\":\"8bb54fe6\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"garrettcounty:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/modules/custom/gcgov_citizen_connect/dist/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"10\":1,\"35\":1,\"116\":1,\"153\":1,\"175\":1,\"180\":1,\"204\":1,\"223\":1,\"224\":1,\"244\":1,\"297\":1,\"300\":1,\"308\":1,\"319\":1,\"379\":1,\"444\":1,\"460\":1,\"461\":1,\"508\":1,\"545\":1,\"571\":1,\"585\":1,\"624\":1,\"632\":1,\"800\":1,\"831\":1,\"837\":1,\"845\":1,\"872\":1,\"899\":1,\"918\":1,\"929\":1,\"930\":1,\"959\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkgarrettcounty\"] = self[\"webpackChunkgarrettcounty\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(4111); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","attrs","$store","getters","_e","snackbars","snackbarTimeout","icons","mdiClose","on","$event","dispatch","staticRenderFns","name","components","VApp","VProgressLinear","metaInfo","title","titleTemplate","data","component","filters","formatDateTime","dateTimeString","options","month","day","year","hour","minute","dtObj","parseJSON","isValid","toLocaleString","formatDate","formatCurrency","val","minimumFractionDigits","formatter","Intl","NumberFormat","style","currency","format","formatBoolToYesNo","number_format","number","decimals","dec_point","thousands_sep","replace","n","isFinite","prec","Math","abs","sep","dec","s","toFixedFix","k","pow","round","toFixed","split","length","Array","join","ui","loading","loadDialog","adding","addDialog","saving","saveDialog","editing","editDialog","removing","removeDialog","maintenance","maintenanceCode","maintenanceMessage","maintenanceGuid","error","errorCode","errorMessage","errorGuid","tasks","methods","ui_setTaskStatus","taskKey","taskStatus","$set","ui_getTaskStatus","ui_Reset","ui_SetError","e","String","code","message","guid","ui_SetMaintenance","ui_ClearMaintenance","ui_ClearError","Vue","use","Vuetify","VAlert","VAppBar","VAppBarTitle","VBreadcrumbs","VBreadcrumbsItem","VBtn","VCard","VCardActions","VCardSubtitle","VCardText","VCardTitle","VCheckbox","VChip","VCol","VContainer","VDataTable","VDialog","VDivider","VFileInput","VFooter","VIcon","VImg","VInput","VItem","VList","VListGroup","VListItem","VListItemAction","VListItemAvatar","VListItemContent","VListItemGroup","VListItemIcon","VListItemSubtitle","VListItemTitle","VMain","VMenu","VRadio","VRadioGroup","VRating","VResponsive","VRow","VSelect","VSimpleCheckbox","VSkeletonLoader","VSlideYTransition","VSnackbar","VSpacer","VSubheader","VSystemBar","VTextarea","VTextField","VToolbar","VTooltip","VTreeview","iconfont","breakpoint","mobileBreakpoint","config","productionTip","mixin","stateMixin","formattersMixin","prototype","$constants","constants","VueMeta","VuetifySnackbarQueue","VueDataObjectPath","VueTelInputVuetify","vuetify","initStore","async","store","storeToLocalStorage","mutation","state","type","startsWith","localStorage","setItem","JSON","stringify","citizenMember","citizenSearch","citizenTax","citizenUtility","citizenLandfillResidential","citizenAtv","citizenLandfillCommercialWaste","citizenLandfillCommercialRecycling","getItem","removeItem","subscribe","then","router","h","App","$mount","ApiError","CustomError","constructor","super","CitizenConnectApiService","_defineProperty","cancelMessage","axiosAbortController","abort","AbortController","url","authentication","buildAxiosConfig","axios","get","urlBuild","catch","apiErrorCatch","post","isEmpty","headers","put","delete","fullOptions","_objectSpread","responseType","response","downloadUrl","window","URL","createObjectURL","Blob","link","document","createElement","href","fileName","fileNameMatch","match","replaceAll","setAttribute","body","appendChild","click","remove","instance","getBaseUrl","process","getUrlParams","urlPath","substr","cleanUrlPath","append","indexOf","_CitizenConnectApiService","signal","citizenConnectApiAccessToken","isCancel","request","toLowerCase","resolvedResponse","parse","text","status","Object","freeze","CitizenMaintenanceError","impersonating","staticStyle","_v","staticClass","_s","user","email","routes","path","citizenRouterViewWrapper","props","meta","citizenAuth","required","roles","children","route","query","showAccountCreated","params","verifyEmailAddress","_route$query$account","_route$query$email","_route$query$id","account","id","accountNumber","standardizeParcelId","search","customerId","editType","vehicleId","projectRequestId","projectId","permitType","permitId","inspectionGroupId","inspectionId","VueRouter","mode","base","scrollBehavior","to","from","savedPosition","x","y","behavior","_document$getElementB","_document$getElementB2","getElementById","getBoundingClientRect","top","scrollY","beforeEach","next","confirm","commit","push","i","includes","color","onError","afterEach","failure","parcelId","padStart","sdatLink","substring","PAYMENT_TYPE_TAX_CODE","PAYMENT_TYPE_TAX_LABEL","PAYMENT_TYPE_UTILITY_CODE","PAYMENT_TYPE_UTILITY_LABEL","PAYMENT_TYPE_LANDFILL_CODE","PAYMENT_TYPE_LANDFILL_LABEL","PAYMENT_TYPE_ATV_CODE","PAYMENT_TYPE_ATV_LABEL","PAYMENT_TYPE_PERMIT_CODE","PAYMENT_TYPE_PERMIT_LABEL","PAYMENT_TYPE_PERMIT_REQUEST_CODE","PAYMENT_TYPE_PERMIT_REQUEST_LABEL","PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_CODE","PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_API_CODE","PAYMENT_TYPE_COMMERCIAL_LANDFILL_WASTE_LABEL","PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_CODE","PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_API_CODE","PAYMENT_TYPE_COMMERCIAL_LANDFILL_RECYCLING_LABEL","CITIZEN_PAGE_ACCOUNT_SETTINGS","CITIZEN_PAGE_ACCOUNT_HISTORICAL_TRANSACTIONS","CITIZEN_PAGE_ACCOUNT_AUTOPAY","CITIZEN_PAGE_ACCOUNT_SAVED_PAYMENTS","CITIZEN_PAGE_ACCOUNT_SCHEDULED_PAYMENTS","CITIZEN_PAGE_ACCOUNT_CHANGE_PASSWORD","CITIZEN_PAGE_ACCOUNT_CHANGE_EMAIL","PERMIT_STATUS_TEXT_APPLICATION","PERMIT_STATUS_ID_APPLICATION","PERMIT_STATUS_ICON_APPLICATION","PERMIT_STATUS_COLOR_APPLICATION","PERMIT_STATUS_TEXT_SIGNATURES_AND_PAYMENT","PERMIT_STATUS_ID_SIGNATURES_AND_PAYMENT","PERMIT_STATUS_ICON_SIGNATURES_AND_PAYMENT","PERMIT_STATUS_COLOR_SIGNATURES_AND_PAYMENT","PERMIT_STATUS_TEXT_APPROVED","PERMIT_STATUS_ID_APPROVED","PERMIT_STATUS_ICON_APPROVED","PERMIT_STATUS_COLOR_APPROVED","PERMIT_STATUS_TEXT_COMPLETE","PERMIT_STATUS_ID_COMPLETE","PERMIT_STATUS_ICON_COMPLETE","PERMIT_STATUS_COLOR_COMPLETE","PERMIT_STATUS_TEXT_INACTIVE","PERMIT_STATUS_ID_INACTIVE","PERMIT_STATUS_ICON_INACTIVE","PERMIT_STATUS_COLOR_INACTIVE","PERMITTYPE_LABEL","PERMIT_EXTERNAL_STATUS_TEXT_NOT_SUBMITTED","PERMIT_EXTERNAL_STATUS_ID_NOT_SUBMITTED","PERMIT_EXTERNAL_STATUS_ICON_NOT_SUBMITTED","PERMIT_EXTERNAL_STATUS_COLOR_NOT_SUBMITTED","PERMIT_EXTERNAL_STATUS_TEXT_SUBMITTED","PERMIT_EXTERNAL_STATUS_ID_SUBMITTED","PERMIT_EXTERNAL_STATUS_ICON_SUBMITTED","PERMIT_EXTERNAL_STATUS_COLOR_SUBMITTED","PERMIT_EXTERNAL_STATUS_TEXT_CONVERTED","PERMIT_EXTERNAL_STATUS_ID_CONVERTED","PERMIT_EXTERNAL_STATUS_ICON_CONVERTED","PERMIT_EXTERNAL_STATUS_COLOR_CONVERTED","PERMIT_EXTERNAL_STATUS_TEXT_REJECTED","PERMIT_EXTERNAL_STATUS_ID_REJECTED","PERMIT_EXTERNAL_STATUS_ICON_REJECTED","PERMIT_EXTERNAL_STATUS_COLOR_REJECTED","waitUntil","condition","Promise","resolve","interval","setInterval","clearInterval","delay","time","setTimeout","paymentTypeToRoutePrepend","paymentType","states","Error","captureStackTrace","storeKey","getDefaultState","now","Date","accounts","paymentClient","currentFiscalYear","getMonth","getFullYear","currentPermitYear","runningGetMemberAccounts","vehicleTypes","newVehicle","engineSizeUnitOfMeasurement","value","vehicleColors","memberAccounts","rootState","rootGetters","accountNumbers","hasOwnProperty","call","memberNotices","_state$accounts$accou","_meta","concat","overview","messages","notices","memberWarnings","_state$accounts$accou2","warnings","actions","initialize","all","console","log","reset","getMemberAccounts","startingMemberAccountNumbers","apiResponse","userId","CitizenApiError","updatedMemberAccountNumbers","root","payment","getAccount","customer","dob","d","DateTime","fromFormat","toISODate","co_dob","addAccount","removeAccount","fetchVehicleTypes","fetchNewVehicle","mutations","setModuleStateFromLocalStorage","assign","fetching","setNewVehicle","setRunningGetMemberAccounts","running","setAccountLoadingTrue","customerIds","isArray","setAccountLoadingFalse","setAccountFetchingTrue","setAccountFetchingFalse","setAccountRemovingTrue","setAccountRemovingFalse","setPaymentClient","updateAppendAccount","newAccount","updateAppendVehicle","vehicle","updated","vehicles","defineAccountShells","accountShell","fetched","current","setVehicleTypes","namespaced","breadcrumbs","disabled","exact","new","pop","stateLoop","j","isEqual","splice","tickets","trim","permits","landfill","transactions","fetchingVaults","vaults","fetchingBlankPaymentClient","blankPaymentClient","fetchingHistoricalTransactions","historicalTransactions","fetchingScheduledTransactions","scheduledTransactions","fetchVaults","fetchBlankPaymentClient","updateVault","methodType","vault","successCallback","errorCallback","removeVault","vaultId","saveAutopay","postForm","disableAutopay","shellTransactionIfItDoesNotExist","transactionUiId","getTransaction","isScheduledTransaction","urlKey","fetchScheduledTransactions","fetchHistoricalTransactions","cancelScheduledTransaction","transactionId","setTransactionLoadingTrue","transactionUiIds","setTransactionLoadingFalse","setTransactionFetchingTrue","setTransactionFetchingFalse","setTransactionRemovingTrue","setTransactionRemovingFalse","updateAppendTransaction","transaction","publicIdentifier","defineTransactionShells","transactionShell","setFetchingVaults","setVaults","setFetchingBlankPaymentClient","setBlankPaymentClient","setFetchingHistoricalTransactions","setHistoricalTransactions","setFetchingScheduledTransactions","setScheduledTransactions","removeScheduledTransaction","index","accessToken","projects","projectRequests","paymentClients","fetchingKeyValueItems","keyValueItems","keyValueItemsLastFetched","moduleStatusLastChecked","memberProjects","projectKeys","memberProjectRequests","projectRequestKeys","keyValueItemCollection","keyValueItemObj","keyValueItem","group","keyValueItemCollectionAsObject","_id","getAccessToken","getNewToken","decodedCurrentAccessToken","jwt_decode","exp","PermitsApiService","exchangeCitizenConnectTokenForPermitToken","access_token","defineProjectShells","defineProjectRequestShells","fetchKeyValueItems","force","hours24","getTime","memberProjectKeys","memberProjectRequestKeys","dispatches","r","projectNumber","projectRequestNumber","finally","getModuleStatus","getProject","projectApiResponse","getProjectRequest","_projectRequestApiRes","projectRequestApiResponse","addedAsProject","projectSubId","_forceKey","addProject","projectKey","addProjectRequest","projectRequestKey","saveProjectRequest","projectRequest","isLinkedToMember","subId","removeProject","removeProjectRequest","paymentForm","holdOnly","setAccessToken","token","projectShell","applicants","projectRequestShell","setModuleStatusLastChecked","setProjectLoadingTrue","projectIds","setProjectLoadingFalse","setProjectRequestLoadingTrue","projectRequestIds","setProjectRequestLoadingFalse","setProjectError","errorMessages","setProjectRequestError","setProjectFetchingTrue","setProjectFetchingFalse","setProjectRequestFetchingTrue","setProjectRequestFetchingFalse","setProjectRemovingTrue","setProjectRemovingFalse","setProjectRequestRemovingTrue","setProjectRequestRemovingFalse","updateAppendPaymentClient","project","invoiceNumber","map","random","toString","amount","balance","bills","arCategory","credit","displayValue","total","echeck","amounts","max","updateAppendProject","newProject","parseFloat","transactionsBalance","updateAppendProjectRequest","newProjectRequest","key","updatePermit","permit","updateInspectionGroup","inspectionGroup","permitIndex","storePermit","inspectionGroupIndex","inspectionGroups","updateInspection","inspection","storeInspectionGroup","inspectionIndex","inspections","storeInspection","setKeyValueItems","setFetchingKeyValueItems","runningFetch","runningUpdate","contact","dismiss","contactMethods","addresses","alertTypes","fetch","save","payload","setRunningFetch","setRunningUpdate","setId","setContact","setDismiss","setContactMethods","setAddresses","setAlertTypes","updateAppendAddress","address","updatedAddress","updateAppendContactMethod","contactMethod","updatedContactMethod","updateAppendAlertType","alertType","updatedAlertType","updateState","serverResponse","ownerName","streetNumber","streetName","runningTaxSearch","taxSearchResultParcelIds","runningUtilitySearch","utilitySearchResultAccountNumbers","taxSearch","searchParams","URLSearchParams","parcelIds","simpleAccountData","name1","pulled","paid","utilitySearch","serviceAddress","clearFormAndResults","setTaxSearchResultParcelIds","setRunningTaxSearch","setUtilitySearchResultAccountNumbers","setRunningUtilitySearch","updateParcelId","updateAccountNumber","updateOwnerName","updateStreetNumber","updateStreetName","clearAccountFromStore","clearAccountsFromStore","clearNonMemberAccountsFromStore","storeParcelIds","keys","memberParcelIds","nonMemberParcelIds","address2","city","zip","routing","_warnOnRouteChange","warnOnRouteChange","addWarnOnRouteChange","uniqueId","removeWarnOnRouteChange","_addWarnOnRouteChange","_removeWarnOnRouteChange","findIndex","_removeAllWarningRouteChanges","Vuex","timeout","sendSnackbar","snackbar","removeSnackbar","item","setStateFromLocalStorage","flushStoreCache","crypto","randomUUID","sendErrorSnackbar","modules","routeStore","citizenMemberStore","citizenPayment","citizenPaymentStore","citizenSearchStore","citizenTaxStore","citizenUtilityStore","citizenLandfillResidentialStore","citizenAtvStore","citizenLandfillCommercialWasteStore","citizenLandfillCommercialRecyclingStore","citizenReverse911","citizenReverse911Store","citizenPermit","citizenPermitStore","citizenBreadcrumbs","citizenBreadcrumbStore","AuthError","CitizenLogicError","refreshToken","isSignedIn","fresh","tax","utility","commercialLandfillWaste","commercialLandfillRecycling","atv","permitRequest","_gettingAccessToken","_exchangingRefreshToken","tryRefreshToken","hasRole","role","initializeDependentStores","clearCache","memberCancel","cancel","permitsCancel","cancelAll","memberReset","dependentModulesReset","resetDependentStores","paymentReset","taxReset","utilityReset","landfillResidentialReset","atvReset","landfillCommercialWasteReset","landfillCommercialRecyclingReset","reverse911StoreReset","searchReset","permitReset","exchangeRefreshToken","refreshTokenExpiredInvalid","decodedCurrentRefreshToken","currentRoute","refresh_token","exchangeAuthorizationGrantCode","authorizationGrantCode","passwordGrantSignIn","form","password","getAccountNumbers","taxes","public_utilities","permitRequests","wasteworks","setAccounts","hasOwn","isMemberAccount","accountsAndType","changePassword","changeEmail","confirmChangeEmail","vueX","memberId","changeRequestId","requestVerificationCode","getChangeEmailRequest","verifyAccount","verificationCode","getVerifyAccount","parseInt","some","impersonate","exitImpersonate","setDataFromToken","decodedAccessToken","scope","setRefreshToken","setModuleStateFromImpersonateLocalStorage","setFresh","setImpersonating","setGettingAccessToken","setExchangingRefreshToken","setEmail","ApiConfig","apiAccessToken","ApiService","args","files","upload","externalProjectRequestId","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","a","definition","o","defineProperty","enumerable","f","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","bind","target","head","Symbol","toStringTag","nmd","paths","p","createStylesheet","fullhref","oldTag","reject","linkTag","rel","nonce","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}