Spaces:
Sleeping
Sleeping
| import type { AdminRole, AdminUser, UserFilterForm, UserForm } from '@/types/admin'; | |
| export const emptyUserForm: UserForm = { | |
| email: '', | |
| identity_number: '', | |
| is_active: true, | |
| is_superuser: false, | |
| name: '', | |
| password: '', | |
| phone: '', | |
| role: 'student', | |
| user_token: '', | |
| }; | |
| export function stringValue(value: unknown): string { | |
| if (value === null || value === undefined) { | |
| return ''; | |
| } | |
| return String(value); | |
| } | |
| export function roleLabel(role?: AdminRole | null): string { | |
| return ( | |
| { | |
| admin: 'Admin', | |
| lecturer: 'Dosen', | |
| student: 'Mahasiswa', | |
| }[role ?? 'student'] ?? 'Mahasiswa' | |
| ); | |
| } | |
| export function isUserActive(user: AdminUser): boolean { | |
| if (typeof user.is_active === 'boolean') { | |
| return user.is_active; | |
| } | |
| return user.status === 'active'; | |
| } | |
| export function formatDate(value?: string | null): string { | |
| if (!value) { | |
| return '-'; | |
| } | |
| return value.split('T')[0] || value; | |
| } | |
| export function readError(errors: object, key: string): string | undefined { | |
| return (errors as Record<string, string | undefined>)[key]; | |
| } | |
| export function userToForm(user: AdminUser): UserForm { | |
| return { | |
| email: stringValue(user.email), | |
| identity_number: stringValue(user.identity_number), | |
| is_active: isUserActive(user), | |
| is_superuser: Boolean(user.is_superuser), | |
| name: stringValue(user.name), | |
| password: '', | |
| phone: stringValue(user.phone), | |
| role: user.role ?? 'student', | |
| user_token: stringValue(user.user_token), | |
| }; | |
| } | |
| export function buildFilterQuery(filters: UserFilterForm): Record<string, string> { | |
| return Object.fromEntries( | |
| Object.entries({ | |
| email: filters.email, | |
| name: filters.name, | |
| role: filters.role === 'all' ? '' : filters.role, | |
| }).filter(([, value]) => value !== ''), | |
| ); | |
| } | |