diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 965740bf..d85befd7 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -421,7 +421,8 @@ todo: many biz objects are not using new PUT methodology CURRENTLY DOING: -Workorder modifications for restricted / low rights users +Subcontractor / tech limited modifications + - Remove all costs from workorder for parts unless have inventory-limited, inventory, bizadminfull or Accounting roles not sent over wire / populated not shown as fields in UI of workorder anywhere diff --git a/ayanova/src/api/initialize.js b/ayanova/src/api/initialize.js index b111d1f8..49225f31 100644 --- a/ayanova/src/api/initialize.js +++ b/ayanova/src/api/initialize.js @@ -35,7 +35,7 @@ function initNavPanel() { ServiceContractor = 5 */ //########## OUTSIDE USERS GROUP (CUSTOMER / HEADOFFICE) ### - if (window.$gz.store.state.isCustomerUser == true) { + if (window.$gz.store.state.getters.isCustomerUser == true) { //clear sublevel array sub = []; @@ -55,7 +55,7 @@ function initNavPanel() { CustomerHomePageSet = true; } - if (window.$gz.store.state.notifyAvailable) { + if (window.$gz.store.state.getters.canSubscribeToNotifications) { sub.push({ title: "NotifySubscriptionList", icon: "$ayiBullhorn", @@ -108,6 +108,38 @@ function initNavPanel() { return; } + //###### SUBCONTRACTORS ###### + //console.log(window.$gz.store.state.getters.isSubContractorUser); + if (window.$gz.store.state.getters.isSubContractorUser == true) { + //clear sublevel array + sub = []; + + //USER SETTINGS + + sub.push({ + title: "UserSettings", + icon: "$ayiUserCog", + route: "/home-user-settings", + key: key++ + }); + + //SCHEDULE (personal) + sub.push({ + title: "Schedule", + icon: "$ayiCalendarDay", + route: "/home-schedule", + key: key++ + }); + + //** HOME (TOP) + addNavItem("Home", "$ayiHome", undefined, sub, key++, "home"); + + //set default home page + window.$gz.store.commit("setHomePage", "/home-schedule"); + + return; + } + //###### ALL INSIDE USERS FROM HERE DOWN ############### //###### EXPIRED LICENSE GROUP @@ -702,7 +734,7 @@ function initNavPanel() { //as long as they are a normal User type and not a subcontractor type if ( (licenseState == 1) & - (window.$gz.store.state.isSubContractorUser == false) + (window.$gz.store.state.getters.isSubContractorUser == false) ) { addNavItem( "Evaluate", diff --git a/ayanova/src/store.js b/ayanova/src/store.js index 7da1b1c9..a20ea82c 100644 --- a/ayanova/src/store.js +++ b/ayanova/src/store.js @@ -26,7 +26,6 @@ export default new Vuex.Store({ apiToken: "-", downloadToken: "-", tfaEnabled: undefined, - notifyAvailable: true, customerRights: {}, userId: 0, userName: "NOT AUTHENTICATED", @@ -65,6 +64,7 @@ export default new Vuex.Store({ return state.userType == 3 || state.userType == 4; }, isSubContractorUser: state => { + console.log("Issubcontractoruser", state); return state.userType == 5; }, isScheduleableUser: state => { @@ -107,13 +107,6 @@ export default new Vuex.Store({ state.tfaEnabled = data.tfaEnabled; if (data.customerRights) { state.customerRights = data.customerRights; - //only a customer user could have zero access to notifications - state.notifyAvailable = - data.customerRights.notifyServiceImminent == true || - data.customerRights.notifyCSRAccepted == true || - data.customerRights.notifyCSRRejected == true || - data.customerRights.notifyWOCompleted == true || - data.customerRights.notifyWOCreated == true; } }, logout(state) { @@ -127,7 +120,6 @@ export default new Vuex.Store({ state.userName = "NOT AUTHENTICATED"; state.roles = 0; state.userType = 0; - state.notifyAvailable = true; state.homePage = undefined; state.navItems = []; state.translationText = {}; diff --git a/ayanova/src/views/home-dashboard.vue b/ayanova/src/views/home-dashboard.vue index d8d265ac..487d78ed 100644 --- a/ayanova/src/views/home-dashboard.vue +++ b/ayanova/src/views/home-dashboard.vue @@ -380,7 +380,7 @@ function generateMenu(vm) { vm: vm }); menuOptions.menuItems.push({ divider: true, inset: false }); - if (vm.$store.state.isScheduleableUser) { + if (vm.$store.state.getters.isScheduleableUser) { menuOptions.menuItems.push({ title: "WorkOrderItemScheduledUserList", icon: "$ayiUserClock", diff --git a/ayanova/src/views/home-notifications.vue b/ayanova/src/views/home-notifications.vue index c44e6b34..f891ce75 100644 --- a/ayanova/src/views/home-notifications.vue +++ b/ayanova/src/views/home-notifications.vue @@ -298,7 +298,7 @@ function generateMenu(vm) { vm: vm }); - if (!window.$gz.store.state.isCustomerUser) { + if (!window.$gz.store.state.getters.isCustomerUser) { menuOptions.menuItems.push({ title: "DirectNotification", icon: "$ayiCommentAlt", diff --git a/ayanova/src/views/home-notify-subscription.vue b/ayanova/src/views/home-notify-subscription.vue index 9f0ce350..04ab9f9e 100644 --- a/ayanova/src/views/home-notify-subscription.vue +++ b/ayanova/src/views/home-notify-subscription.vue @@ -431,7 +431,7 @@ export default { } }, showTags() { - if (!window.$gz.store.state.isCustomerUser) { + if (!window.$gz.store.state.getters.isCustomerUser) { //customers NEVER see tags anywhere, that's private information and they do not use or require it switch (this.obj.eventType) { case 27: //General notification @@ -774,7 +774,7 @@ async function populateSelectionLists(vm) { //ensure the pick lists required are pre-fetched await window.$gz.enums.fetchEnumList("NotifyEventType"); const tempEventTypes = window.$gz.enums.getSelectionList("NotifyEventType"); - if (window.$gz.store.state.isCustomerUser) { + if (window.$gz.store.state.getters.isCustomerUser) { vm.selectLists.eventTypes = tempEventTypes.filter(z => { //return true if it's a type allowed by customer *and* they have customerRights to it