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)[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 { return Object.fromEntries( Object.entries({ email: filters.email, name: filters.name, role: filters.role === 'all' ? '' : filters.role, }).filter(([, value]) => value !== ''), ); }