diff --git a/backend/src/components/user.js b/backend/src/components/user.js index f5474da3..56b3c75d 100644 --- a/backend/src/components/user.js +++ b/backend/src/components/user.js @@ -202,6 +202,7 @@ function mapUsersPermissionsFacilitiesObjectForFront(data) { usersPermissionsFacilities.facilities = usersPermissionsFacilities.facilities.map((facility) => { const facilityData = new MappableObjectForFront(facility, UsersPermissionsFacilityMappings).toJSON() facilityData.accountNumber = facilityData.address?.accountnumber + facilityData.facilityStateCode = facilityData.address?.statecode facilityData.city = facilityData.address?.address1_city facilityData.address = facilityData.address?.address1_line1 return facilityData @@ -219,7 +220,7 @@ function mapUsersPermissionsFacilitiesObjectForFront(data) { async function getUsersPermissionsFacilities(req, res) { try { let usersPermissionsFacilities = [] - const operation = `contacts?$select=ccof_userid,ccof_username,contactid,emailaddress1,ofm_first_name,ofm_last_name,statecode,telephone1&$expand=ofm_facility_business_bceid($select=_ofm_bceid_value,ofm_bceid_facilityid,_ofm_facility_value,ofm_name,ofm_portal_access,ofm_is_expense_authority,statecode,statuscode;$expand=ofm_facility($select=address1_city,address1_line1,address1_line2,address1_line3);$filter=(ofm_portal_access eq true and statecode eq 0)),ofm_portal_role_id($select=ofm_portal_role_number,ofm_name)&$filter=(_parentcustomerid_value eq ${req.params.organizationId})&pageSize=1000` + const operation = `contacts?$select=ccof_userid,ccof_username,contactid,emailaddress1,ofm_first_name,ofm_last_name,statecode,telephone1&$expand=ofm_facility_business_bceid($select=_ofm_bceid_value,ofm_bceid_facilityid,_ofm_facility_value,ofm_name,ofm_portal_access,ofm_is_expense_authority,statecode,statuscode;$expand=ofm_facility($select=address1_city,address1_line1,address1_line2,address1_line3,statecode);$filter=(ofm_portal_access eq true and statecode eq 0)),ofm_portal_role_id($select=ofm_portal_role_number,ofm_name)&$filter=(_parentcustomerid_value eq ${req.params.organizationId})&pageSize=1000` const response = await getOperation(operation) response?.value?.forEach((item) => { usersPermissionsFacilities.push(mapUsersPermissionsFacilitiesObjectForFront(item)) diff --git a/frontend/src/components/account-mgmt/ManageUserDialog.vue b/frontend/src/components/account-mgmt/ManageUserDialog.vue index e061cdee..484ecd8a 100644 --- a/frontend/src/components/account-mgmt/ManageUserDialog.vue +++ b/frontend/src/components/account-mgmt/ManageUserDialog.vue @@ -223,7 +223,7 @@ export default { updatingUser: { handler(value) { this.userOperationType = Object.keys(value).length === 0 ? 'add' : 'update' - this.selectedFacilityIds = value.facilities + this.selectedFacilityIds = value.facilities?.filter((fac) => this.facilitiesToAdminister.some((adminFac) => adminFac.facilityId === fac.facilityId)).map((fac) => fac.facilityId) this.user = value if (!this.user.role) this.user.role = {} }, @@ -391,14 +391,21 @@ export default { * Get facilities to add. */ getFacilitiesToAdd(selectedFacilities, userFacilities) { - return selectedFacilities?.filter((selectedFacility) => !userFacilities?.some((userFacility) => userFacility.facilityId === selectedFacility.facilityId)) + return selectedFacilities?.filter((selectedFacilities) => !userFacilities?.some((userFacility) => userFacility.facilityId === selectedFacilities.facilityId)) }, /** * Get facilities to remove. */ - getFacilitiesToRemove(selectedFacility, userFacilities) { - return userFacilities?.filter((userFacility) => !selectedFacility?.some((selectedFacility) => selectedFacility.facilityId === userFacility.facilityId)) + getFacilitiesToRemove(selectedFacilities, userFacilities) { + // Get facility IDs that the admin can administer + const adminFacilityIds = this.facilitiesToAdminister.map((fac) => fac.facilityId) + + return userFacilities?.filter( + (userFacility) => + // Only remove if it's not selected and is in the facilityToAdminister list + !selectedFacilities?.some((selected) => selected.facilityId === userFacility.facilityId) && adminFacilityIds.includes(userFacility.facilityId), + ) }, /** diff --git a/frontend/src/views/account-mgmt/ManageUsersView.vue b/frontend/src/views/account-mgmt/ManageUsersView.vue index 181acd87..ea59eeb7 100644 --- a/frontend/src/views/account-mgmt/ManageUsersView.vue +++ b/frontend/src/views/account-mgmt/ManageUsersView.vue @@ -59,7 +59,7 @@ - + @@ -151,6 +151,10 @@ export default { await this.getUsersAndFacilities() }, methods: { + getActiveFacilities(facilities) { + return facilities.filter((facility) => facility.facilityStateCode == 0) + }, + isDeactivatedUser(user) { return user?.facilities?.length === 0 },