import { MultiLanguageString, Timestamp, Address, MultiLanguageAddress, } from './common'; import {StudentId} from './student'; import { SchoolId } from './school'; import {ClientId} from './client'; import {UserId, UserTypeGuardian, Role} from './user'; import {Image} from './fileManager'; export type FamilyId = string; /** * DB: family/${sid}/{fid} */ export interface Family { id: FamilyId; profile: FamilyProfile; metadata: FamilyMetadata; contacts: { [id: string]: FamilyContact; }; } /** * DB: family/${sid}/{fid}/contacts/{id} */ export interface FamilyContact { uid?: UserId; name?: MultiLanguageString | string; type: UserTypeGuardian; mobilePhone: string; isEmergency?: boolean; priority?: number; } /** * DB: family/${sid}/{fid}/metadata */ export interface FamilyMetadata { id: FamilyId; sid: SchoolId; cid: ClientId; active: boolean; createdAt: Timestamp; createdBy: UserId; updatedAt?: Timestamp; updatedBy?: UserId; guardians?: { [userId: UserId]: boolean; }; students?: { [studentId: StudentId]: boolean; }; } /** * DB: family/${sid}/{fid}/profile */ export interface FamilyProfile { name: MultiLanguageString | string; address?: MultiLanguageAddress | Address; phoneHome: string; } /** * dbRef: family/${sid}/{fid} * @deprecated */ export interface FamilyV2 { id: FamilyId; cid: ClientId; profile: FamilyProfileV2; members: { [userId: UserId]: FamilyMemberV2; }; metadata: FamilyMetadataV2; } /** * dbRef: family/${sid}/{fid} * @deprecated */ export interface FamilyProfileV2 { familyNameRomaji: string; familyNameFurigana: string; familyNameKanji: string; emergencyContact?: { [userId: UserId]: FamilyProfileEmergencyContactV2; }; } /** * dbRef: family/${sid}/{fid} * @deprecated */ export interface FamilyMemberV2 { avatar?: Image; childRelationship: UserTypeGuardian | null; firstNameFurigana?: string; firstNameKanji?: string; firstNameRomaji?: string; gender?: "male" | "female"; isUser: boolean; nameFurigana: string; nameKanji: string; nameRomaji: string; userType?: Role; } /** * dbRef: family/${sid}/{fid} * @deprecated */ export interface FamilyMetadataV2 { id: FamilyId; school: SchoolId; cid: ClientId; archived: boolean; active: boolean; createdAt: Timestamp; createdBy: UserId; updatedAt: Timestamp; guardians: { [userId: UserId]: boolean; }; students: { [studentId: StudentId]: boolean; }; } /** * dbRef: family/${sid}/{fid} * @deprecated */ export interface FamilyProfileEmergencyContactV2 { phoneWork: string | null; phoneMobile: string | null; }