@@ -14,8 +14,6 @@ export const apiUpdateAdminUserRole = (id, payload) =>
|
||||
http.patch(buildUrl(endpoints.updateUserRole, { id }), payload)
|
||||
|
||||
export const apiChangeAdminUserStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeUserStatus, { id }), payload)
|
||||
http.patch(buildUrl(endpoints.changeUserStatus, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminUser = (id) => http.delete(buildUrl(endpoints.deleteUser, { id }))
|
||||
|
||||
export const apiGetAdminRoles = () => http.get(endpoints.getRolesList)
|
||||
|
||||
@@ -56,7 +56,6 @@ export const endpoints = {
|
||||
addNewUser: '/admin/users',
|
||||
updateUser: '/admin/users/:id',
|
||||
updateUserRole: '/admin/users/:id/role',
|
||||
getRolesList: '/admin/roles',
|
||||
changeUserStatus: '/admin/users/:id/status',
|
||||
deleteUser: '/admin/users/:id',
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ const makeUser = (i, overrides = {}) => {
|
||||
avatarUrl: '',
|
||||
avatarDownloadUrl: '',
|
||||
createdAt: new Date(Date.now() - i * 86_400_000).toISOString(),
|
||||
birthday: new Date(1990, i % 12, ((i * 3) % 27) + 1).toISOString(),
|
||||
|
||||
// --- ui-only (pending backend) ---
|
||||
firstName,
|
||||
@@ -94,7 +95,6 @@ const makeUser = (i, overrides = {}) => {
|
||||
},
|
||||
profile: {
|
||||
bio: '',
|
||||
birthDate: new Date(1990, i % 12, ((i * 3) % 27) + 1).toISOString(),
|
||||
maritalStatus: i % 2 ? 'single' : 'married',
|
||||
gender: i % 2 ? 'female' : 'male',
|
||||
},
|
||||
|
||||
@@ -15,7 +15,9 @@ import {
|
||||
register('GET', endpoints.getApprovedUsers, ({ query }) => {
|
||||
let list = filterItems(adminUsers, query, {
|
||||
name: (item, v) =>
|
||||
`${item.firstName} ${item.lastName}`.toLowerCase().includes(String(v).toLowerCase()),
|
||||
(item.name || `${item.firstName} ${item.lastName}`)
|
||||
.toLowerCase()
|
||||
.includes(String(v).toLowerCase()),
|
||||
nationalCode: 'includes',
|
||||
phoneNumber: 'includes',
|
||||
roleId: (item, v) => String(item.roleId) === String(v),
|
||||
@@ -39,30 +41,32 @@ register('POST', endpoints.addNewUser, ({ data }) => {
|
||||
const id = makeId()
|
||||
const roleByName = (n) => roles.find((r) => r.name === n)
|
||||
const role =
|
||||
roles.find((r) => r.id === Number(data.roleId)) ||
|
||||
(data.role ? roleByName(data.role) : null) ||
|
||||
(Array.isArray(data.roles) && data.roles[0] ? roleByName(data.roles[0]) : null) ||
|
||||
roles.find((r) => r.id === Number(data.roleId)) ||
|
||||
null
|
||||
const province = data.provinceId ? { id: data.provinceId, name: '' } : null
|
||||
const city = data.cityId ? { id: data.cityId, name: '' } : null
|
||||
const firstName = data.firstName || ''
|
||||
const lastName = data.lastName || ''
|
||||
const fullName = `${firstName} ${lastName}`.trim()
|
||||
const name = data.name || `${data.firstName || ''} ${data.lastName || ''}`.trim()
|
||||
const [firstName, ...rest] = name.split(' ')
|
||||
const lastName = rest.join(' ')
|
||||
const phoneNumber = data.phoneNumber || ''
|
||||
const user = {
|
||||
// --- spec ---
|
||||
id,
|
||||
name: data.name || fullName,
|
||||
name,
|
||||
email: data.email || '',
|
||||
phone: data.phone || (phoneNumber ? phoneNumber.replace(/^0/, '+98') : null),
|
||||
roles: Array.isArray(data.roles) ? data.roles : role ? [role.name] : [],
|
||||
avatarUrl: '',
|
||||
avatarDownloadUrl: null,
|
||||
createdAt: isoNow(),
|
||||
birthday: data.birthday || null,
|
||||
|
||||
// --- ui-only ---
|
||||
firstName,
|
||||
lastName,
|
||||
fullName,
|
||||
fullName: name,
|
||||
phoneNumber,
|
||||
nationalCode: data.nationalCode || '',
|
||||
status: 'approved',
|
||||
@@ -70,8 +74,7 @@ register('POST', endpoints.addNewUser, ({ data }) => {
|
||||
address: { address: data.address || '', province, city },
|
||||
profile: {
|
||||
bio: data.bio || '',
|
||||
birthDate: data.birthDate || '',
|
||||
maritalStatus: data.maritalStatus || '',
|
||||
maritalStatus: data.marriageStatus || data.maritalStatus || '',
|
||||
gender: data.gender || '',
|
||||
avatarId: data.avatarId || null,
|
||||
},
|
||||
@@ -87,24 +90,25 @@ register('POST', endpoints.addNewUser, ({ data }) => {
|
||||
register('PATCH', endpoints.updateUser, ({ params, data }) => {
|
||||
const roleByName = (n) => roles.find((r) => r.name === n)
|
||||
const role =
|
||||
roles.find((r) => r.id === Number(data.roleId)) ||
|
||||
(Array.isArray(data.roles) && data.roles[0] ? roleByName(data.roles[0]) : null) ||
|
||||
roles.find((r) => r.id === Number(data.roleId)) ||
|
||||
null
|
||||
const firstName = data.firstName ?? ''
|
||||
const lastName = data.lastName ?? ''
|
||||
const fullName = `${firstName} ${lastName}`.trim()
|
||||
const name = data.name ?? `${data.firstName ?? ''} ${data.lastName ?? ''}`.trim()
|
||||
const [firstName, ...rest] = name.split(' ')
|
||||
const lastName = rest.join(' ')
|
||||
const phoneNumber = data.phoneNumber ?? ''
|
||||
const patch = {
|
||||
// --- spec ---
|
||||
name: data.name ?? fullName,
|
||||
name,
|
||||
email: data.email,
|
||||
phone: data.phone ?? (phoneNumber ? phoneNumber.replace(/^0/, '+98') : undefined),
|
||||
roles: Array.isArray(data.roles) ? data.roles : role ? [role.name] : [],
|
||||
birthday: data.birthday ?? null,
|
||||
|
||||
// --- ui-only ---
|
||||
firstName,
|
||||
lastName,
|
||||
fullName,
|
||||
fullName: name,
|
||||
phoneNumber,
|
||||
nationalCode: data.nationalCode,
|
||||
roleId: role?.id,
|
||||
@@ -115,8 +119,7 @@ register('PATCH', endpoints.updateUser, ({ params, data }) => {
|
||||
},
|
||||
profile: {
|
||||
bio: data.bio || '',
|
||||
birthDate: data.birthDate || '',
|
||||
maritalStatus: data.maritalStatus || '',
|
||||
maritalStatus: data.marriageStatus ?? data.maritalStatus ?? '',
|
||||
gender: data.gender || '',
|
||||
avatarId: data.avatarId || null,
|
||||
},
|
||||
@@ -148,9 +151,14 @@ register('PATCH', endpoints.updateUserRole, ({ params, data }) => {
|
||||
}
|
||||
})
|
||||
|
||||
register('POST', endpoints.changeUserStatus, ({ params, data }) => ({
|
||||
data: updateById(adminUsers, params.id, { status: data.status }),
|
||||
}))
|
||||
register('PATCH', endpoints.changeUserStatus, ({ params, data }) => {
|
||||
const updated = updateById(adminUsers, params.id, { status: data.status })
|
||||
return {
|
||||
success: true,
|
||||
message: 'User status updated.',
|
||||
data: { id: updated.id, name: updated.name, status: updated.status },
|
||||
}
|
||||
})
|
||||
|
||||
register('DELETE', endpoints.deleteUser, ({ params }) => {
|
||||
removeById(adminUsers, params.id)
|
||||
@@ -160,5 +168,3 @@ register('DELETE', endpoints.deleteUser, ({ params }) => {
|
||||
data: null,
|
||||
}
|
||||
})
|
||||
|
||||
register('GET', endpoints.getRolesList, () => ({ data: roles }))
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
apiAddAdminUser,
|
||||
apiChangeAdminUserStatus,
|
||||
apiDeleteAdminUser,
|
||||
apiGetAdminRoles,
|
||||
apiGetAdminUsers,
|
||||
apiShowAdminUser,
|
||||
apiUpdateAdminUser,
|
||||
@@ -15,7 +14,6 @@ export const adminUsersKeys = {
|
||||
all: ['admin', 'users'],
|
||||
list: (filters, pagination) => ['admin', 'users', 'list', filters, pagination],
|
||||
detail: (id) => ['admin', 'users', 'detail', id],
|
||||
roles: () => ['admin', 'users', 'roles'],
|
||||
}
|
||||
|
||||
export const useAdminUsersListQuery = (filtersRef, paginationRef, options = {}) =>
|
||||
@@ -37,14 +35,6 @@ export const useAdminUserQuery = (idRef, options = {}) =>
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAdminRolesListQuery = (options = {}) =>
|
||||
useQuery({
|
||||
queryKey: adminUsersKeys.roles(),
|
||||
queryFn: () => apiGetAdminRoles(),
|
||||
select: (response) => response?.data ?? response,
|
||||
...options,
|
||||
})
|
||||
|
||||
export const useAddAdminUserMutation = () =>
|
||||
useMutation({ mutationFn: (payload) => apiAddAdminUser(payload) })
|
||||
|
||||
|
||||
Reference in New Issue
Block a user