wepee's picture
fix: too much header
0c0f5cc
Raw
History Blame Contribute Delete
1.95 kB
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 !== ''),
);
}