76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
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);
|
|
}
|