import { SharedModels } from '../shared/shared-models'; import { ProjectUserContracts, SharedContracts } from '../../contracts'; export namespace ProjectUserModels { export interface IProjectUserCollectionGroup { collections: SharedContracts.IReferenceObjectContract[]; roles: IProjectUserRole[]; } export interface IProjectUserRole { id: string; languages: SharedContracts.IReferenceObjectContract[]; } export class ProjectUser implements SharedModels.IBaseModel { userId!: string; collectionGroups!: CollectionGroup[]; _raw!: ProjectUserContracts.IUserContract; constructor(data: { userId: string; collectionGroups: CollectionGroup[]; _raw: ProjectUserContracts.IUserContract; }) { Object.assign(this, data); } } export class CollectionGroup implements SharedModels.IBaseModel { collections!: SharedContracts.IReferenceObjectContract[]; roles!: ProjectUserModels.IProjectUserRole[]; _raw!: ProjectUserContracts.IProjectUserCollectionGroupContract; constructor(data: { collections: SharedContracts.IReferenceObjectContract[]; roles: ProjectUserModels.IProjectUserRole[]; _raw: ProjectUserContracts.IProjectUserCollectionGroupContract; }) { Object.assign(this, data); } } export interface ICollectionGroupsData { collections: SharedContracts.IReferenceObjectContract[]; roles: { id: string; languages: SharedContracts.IReferenceObjectContract[]; }[]; } export interface IInviteUserData { email: string; collection_groups: ICollectionGroupsData[]; } export interface IChangeUserRoleData { collection_groups: ICollectionGroupsData[]; } }