|
5 | 5 | import USWDSPagination from "./USWDSPagination.vue";
|
6 | 6 | import USWDSAlert from './USWDSAlert.vue'
|
7 | 7 | import { setSelectedAgencyId} from '../stores/agencies'
|
8 |
| - import { useStore } from '@nanostores/vue' |
9 |
| - import { profile} from '../stores/user' |
10 |
| -
|
11 |
| - const user = useStore(profile) |
| 8 | + import { RepositoryFactory } from "./RepositoryFactory.vue"; |
| 9 | + const adminRepository = RepositoryFactory.get('admin') |
12 | 10 |
|
13 | 11 | const PAGE_SIZE = 25
|
14 | 12 |
|
15 |
| - const base_url = import.meta.env.PUBLIC_API_BASE_URL |
16 |
| - const report_url = `${base_url}/api/v1/users/` |
17 |
| - const update_url = `${base_url}/api/v1/users/edit-user-for-reporting/` |
18 |
| -
|
19 | 13 | let currentPage = ref(0)
|
20 | 14 | let numberOfResults = ref(0)
|
21 | 15 | const numberOfPages = computed(() => Math.ceil(numberOfResults.value/PAGE_SIZE))
|
|
36 | 30 | async function search() {
|
37 | 31 | clearAlerts()
|
38 | 32 | noResults.value = false
|
39 |
| - const url = new URL(`${report_url}`) |
40 |
| - url.search = new URLSearchParams({searchText: searchTerm.value, page_number: currentPage.value + 1}) |
41 |
| -
|
42 | 33 | try {
|
43 |
| - const response = await fetch( |
44 |
| - url, { |
45 |
| - method: 'GET', |
46 |
| - headers: { |
47 |
| - 'Authorization': `Bearer ${user.value.jwt}` |
48 |
| - } |
49 |
| - } |
50 |
| - ) |
51 |
| - if (! response.ok) { |
52 |
| - const message = await response.text() |
53 |
| - throw new Error(message) |
54 |
| - } |
55 |
| - let search_results = await response.json() |
| 34 | + let search_results = await adminRepository.userSearch(searchTerm.value, currentPage.value) |
56 | 35 | searchResults.value = search_results.users
|
57 | 36 | numberOfResults.value = search_results.total_count
|
58 | 37 | noResults.value = search_results.total_count === 0
|
|
62 | 41 | }
|
63 | 42 |
|
64 | 43 | async function updateUserReports(userId, agencyIds) {
|
65 |
| - const agencies = agencyIds.map(a => a.id) |
66 |
| - const url = new URL(update_url) |
67 |
| - url.search = new URLSearchParams({user_id: userId}) |
68 | 44 | try {
|
69 |
| - const response = await fetch( |
70 |
| - url, { |
71 |
| - method: "PATCH", |
72 |
| - headers: { |
73 |
| - 'Content-Type': 'application/json', |
74 |
| - 'Authorization': `Bearer ${user.value.jwt}` |
75 |
| - }, |
76 |
| - body: JSON.stringify(agencies) |
77 |
| - } |
78 |
| - ) |
79 |
| - if (!response.ok) { |
80 |
| - const message = await response.text() |
81 |
| - throw new Error(message) |
82 |
| - } |
83 |
| - let updatedUser = await response.json() |
| 45 | + let updatedUser = await adminRepository.updateUserReports(userId, agencyIds) |
84 | 46 | selectedUser.value.report_agencies = updatedUser.report_agencies
|
85 |
| - setCurrentUser(undefined) |
86 |
| - setSelectedAgencyId(undefined) |
| 47 | + updateUserSuccess("Updated users reporting access") |
| 48 | + refreshSelectedUser() |
87 | 49 | } catch (err){
|
88 | 50 | error.value = err
|
89 | 51 | }
|
90 | 52 | }
|
91 | 53 |
|
92 |
| - function setCurrentUser(e) { |
| 54 | + async function refreshSelectedUser(){ |
| 55 | + if(!selectedUser.value){ |
| 56 | + return |
| 57 | + } |
| 58 | +
|
| 59 | + try{ |
| 60 | + selectedUser.value = await adminRepository.getUser(selectedUser.value.id) |
| 61 | + } catch (err) { |
| 62 | + error.value = err |
| 63 | + } |
| 64 | + } |
| 65 | +
|
| 66 | + function setSelectedUser(e) { |
93 | 67 | selectedUser.value = e
|
94 | 68 | }
|
95 | 69 |
|
96 | 70 | function cancelEdit(){
|
97 |
| - setCurrentUser(undefined) |
| 71 | + setSelectedUser(undefined) |
98 | 72 | setSelectedAgencyId(undefined)
|
99 | 73 | }
|
100 | 74 |
|
101 | 75 | async function updateUserSuccess(message) {
|
| 76 | + refreshSelectedUser() |
102 | 77 | successMessage.value = message
|
103 | 78 | showSuccessMessage.value = true
|
104 |
| - cancelEdit() |
105 |
| - currentPage.value = 0 |
106 |
| - numberOfResults.value = 0 |
107 |
| - searchTerm.value = '' |
108 |
| - searchResults.value = [] |
109 | 79 | }
|
110 | 80 |
|
111 | 81 | function clearAlerts() {
|
|
182 | 152 | <AdminUserSearchTable
|
183 | 153 | :number-of-results="numberOfResults"
|
184 | 154 | :search-results="searchResults"
|
185 |
| - @select-item="setCurrentUser" |
| 155 | + @select-item="setSelectedUser" |
186 | 156 | />
|
187 | 157 | <USWDSPagination
|
188 | 158 | :current-page="currentPage"
|
|
200 | 170 | <div v-else>
|
201 | 171 | <AdminEditReporting
|
202 | 172 | :user="selectedUser"
|
203 |
| - @save="updateUserReports" |
| 173 | + @update-reporting-access="updateUserReports" |
204 | 174 | @cancel="cancelEdit"
|
205 | 175 | @user-update-success="updateUserSuccess"
|
206 | 176 | />
|
|
0 commit comments