import { ContactInfoType } from "@app/core/common/enum/contact-info-type"; import { RoleOrganizationType } from "@app/core/common/enum/role-organization-type"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; import { Reference } from "../reference/reference"; export interface User extends BaseEntity { name: string; additionalInfo: UserAdditionalInfo; contacts: UserContactInfo[]; roles: UserRole[]; credentials: UserCredential[]; } export interface UserPersist extends BaseEntityPersist { name: String; additionalInfo: UserAdditionalInfoPersist; } export interface UserAdditionalInfoPersist { avatarUrl: String; timezone: String; culture: String; language: String; roleOrganization: String; organizationId: Guid; } export interface UserAdditionalInfo { avatarUrl: String; timezone: String; culture: String; language: String; roleOrganization: RoleOrganizationType; organization: Reference; } export interface UserContactInfo { id: Guid; value: String; type: ContactInfoType; ordinal: number; user: User; createdAt: Date; } export interface UserRole { id: Guid; role: String; user: User; createdAt: Date; } export interface UserRolePatchPersist { id: Guid; roles: String[]; hash: string; } export interface UserCredential { id: Guid; externalId: String; user: User; createdAt: Date; data: UserCredentialData } export interface UserCredentialData { externalProviderNames: String[]; email: String; } export interface DmpAssociatedUser { id: Guid; name: string; email: string; } export interface UserMergeRequestPersist { email: string; }