import type { SaveUserData } from '@/business/my-class/api'; export interface MyClassStudentFormValues { readonly namePrefix: string; readonly firstName: string; readonly lastName: string; readonly email: string; readonly phoneNumber: string; readonly avatar: string | null; readonly guardians: readonly MyClassGuardianFormValues[]; } export interface MyClassGuardianFormValues { readonly key: string; readonly id: string | null; readonly namePrefix: string; readonly firstName: string; readonly lastName: string; readonly email: string; readonly phoneNumber: string; readonly avatar: string | null; } export function buildMyClassStudentSaveData( values: MyClassStudentFormValues, classId: string, studentRoleId: string, ): SaveUserData { return { name_prefix: values.namePrefix === '' ? null : values.namePrefix, firstName: values.firstName.trim(), lastName: values.lastName.trim(), email: values.email.trim(), phoneNumber: values.phoneNumber.trim() || null, avatar: values.avatar, app_role: studentRoleId, classId, }; } export function hasMyClassGuardianFormValues(values: MyClassGuardianFormValues): boolean { return Boolean( values.namePrefix.trim() || values.firstName.trim() || values.lastName.trim() || values.email.trim() || values.phoneNumber.trim() || values.avatar, ); } export function buildMyClassGuardianSaveData( values: MyClassGuardianFormValues, guardianRoleId: string, ): SaveUserData { return { name_prefix: values.namePrefix.trim() === '' ? null : values.namePrefix.trim(), firstName: values.firstName.trim(), lastName: values.lastName.trim(), email: values.email.trim(), phoneNumber: values.phoneNumber.trim() || null, avatar: values.avatar, app_role: guardianRoleId, }; } export function canManageMyClassStudents(input: { readonly hasUserPermission: boolean; readonly classId: string | null; readonly studentRoleId: string | null; }): boolean { return input.hasUserPermission && Boolean(input.classId) && Boolean(input.studentRoleId); }