fix: design
This commit is contained in:
@@ -21,28 +21,51 @@ register('GET', endpoints.getApprovedUsers, ({ query }) => {
|
||||
roleId: (item, v) => String(item.roleId) === String(v),
|
||||
})
|
||||
list = filterDateRange(list, query)
|
||||
return paginate(list, query)
|
||||
const { data: items, meta } = paginate(list, query)
|
||||
return {
|
||||
success: true,
|
||||
message: 'OK',
|
||||
data: { items, meta },
|
||||
}
|
||||
})
|
||||
|
||||
register('GET', endpoints.showUserDetails, ({ params }) => ({
|
||||
success: true,
|
||||
message: 'OK',
|
||||
data: findOrThrow(adminUsers, params.id),
|
||||
}))
|
||||
|
||||
register('POST', endpoints.addNewUser, ({ data }) => {
|
||||
const id = makeId()
|
||||
const role = roles.find((r) => r.id === Number(data.roleId)) || null
|
||||
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) ||
|
||||
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 phoneNumber = data.phoneNumber || ''
|
||||
const user = {
|
||||
// --- spec ---
|
||||
id,
|
||||
firstName: data.firstName || '',
|
||||
lastName: data.lastName || '',
|
||||
fullName: `${data.firstName || ''} ${data.lastName || ''}`.trim(),
|
||||
phoneNumber: data.phoneNumber || '',
|
||||
nationalCode: data.nationalCode || '',
|
||||
name: data.name || fullName,
|
||||
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(),
|
||||
|
||||
// --- ui-only ---
|
||||
firstName,
|
||||
lastName,
|
||||
fullName,
|
||||
phoneNumber,
|
||||
nationalCode: data.nationalCode || '',
|
||||
status: 'approved',
|
||||
roles: role ? [role.name] : [],
|
||||
roleId: role?.id,
|
||||
address: { address: data.address || '', province, city },
|
||||
profile: {
|
||||
@@ -52,22 +75,39 @@ register('POST', endpoints.addNewUser, ({ data }) => {
|
||||
gender: data.gender || '',
|
||||
avatarId: data.avatarId || null,
|
||||
},
|
||||
createdAt: isoNow(),
|
||||
}
|
||||
adminUsers.unshift(user)
|
||||
return { data: user }
|
||||
return {
|
||||
success: true,
|
||||
message: 'User created.',
|
||||
data: user,
|
||||
}
|
||||
})
|
||||
|
||||
register('PUT', endpoints.updateUser, ({ params, data }) => {
|
||||
const role = roles.find((r) => r.id === Number(data.roleId))
|
||||
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) ||
|
||||
null
|
||||
const firstName = data.firstName ?? ''
|
||||
const lastName = data.lastName ?? ''
|
||||
const fullName = `${firstName} ${lastName}`.trim()
|
||||
const phoneNumber = data.phoneNumber ?? ''
|
||||
const patch = {
|
||||
firstName: data.firstName,
|
||||
lastName: data.lastName,
|
||||
fullName: `${data.firstName || ''} ${data.lastName || ''}`.trim(),
|
||||
phoneNumber: data.phoneNumber,
|
||||
// --- spec ---
|
||||
name: data.name ?? fullName,
|
||||
email: data.email,
|
||||
phone: data.phone ?? (phoneNumber ? phoneNumber.replace(/^0/, '+98') : undefined),
|
||||
roles: Array.isArray(data.roles) ? data.roles : role ? [role.name] : [],
|
||||
|
||||
// --- ui-only ---
|
||||
firstName,
|
||||
lastName,
|
||||
fullName,
|
||||
phoneNumber,
|
||||
nationalCode: data.nationalCode,
|
||||
roleId: role?.id,
|
||||
roles: role ? [role.name] : [],
|
||||
address: {
|
||||
address: data.address || '',
|
||||
province: data.provinceId ? { id: data.provinceId, name: '' } : null,
|
||||
@@ -82,13 +122,32 @@ register('PUT', endpoints.updateUser, ({ params, data }) => {
|
||||
},
|
||||
}
|
||||
const updated = updateById(adminUsers, params.id, patch)
|
||||
return { data: updated }
|
||||
return {
|
||||
success: true,
|
||||
message: 'User updated.',
|
||||
data: updated,
|
||||
}
|
||||
})
|
||||
|
||||
register('POST', endpoints.updateUserRole, ({ params, data }) => {
|
||||
const role = roles.find((r) => r.id === Number(data.roleId))
|
||||
const patch = role ? { roleId: role.id, roles: [role.name] } : {}
|
||||
return { data: updateById(adminUsers, params.id, patch) }
|
||||
register('PATCH', endpoints.updateUserRole, ({ params, data }) => {
|
||||
const byName = (n) => roles.find((r) => r.name === n)
|
||||
const nextRoleNames = Array.isArray(data.roles)
|
||||
? data.roles.filter(Boolean)
|
||||
: data.role
|
||||
? [data.role]
|
||||
: data.roleId
|
||||
? [roles.find((r) => r.id === Number(data.roleId))?.name].filter(Boolean)
|
||||
: []
|
||||
const primary = nextRoleNames[0] ? byName(nextRoleNames[0]) : null
|
||||
const patch = nextRoleNames.length
|
||||
? { roles: nextRoleNames, roleId: primary?.id }
|
||||
: {}
|
||||
const updated = updateById(adminUsers, params.id, patch)
|
||||
return {
|
||||
success: true,
|
||||
message: 'Roles updated.',
|
||||
data: updated,
|
||||
}
|
||||
})
|
||||
|
||||
register('POST', endpoints.changeUserStatus, ({ params, data }) => ({
|
||||
@@ -97,7 +156,11 @@ register('POST', endpoints.changeUserStatus, ({ params, data }) => ({
|
||||
|
||||
register('DELETE', endpoints.deleteUser, ({ params }) => {
|
||||
removeById(adminUsers, params.id)
|
||||
return { data: { message: 'حذف موفق' } }
|
||||
return {
|
||||
success: true,
|
||||
message: 'User deleted.',
|
||||
data: null,
|
||||
}
|
||||
})
|
||||
|
||||
register('GET', endpoints.getRolesList, () => ({ data: roles }))
|
||||
|
||||
Reference in New Issue
Block a user