import { SharedModels } from '../shared/shared-models'; import { SharedContracts, SubscriptionContracts } from '../../contracts'; export namespace SubscriptionModels { export interface ISubscriptionEnvironment { name: string; id: string; } export class SubscriptionProject implements SharedModels.IBaseModel { public id!: string; public isActive!: boolean; public name!: string; public environments!: ISubscriptionEnvironment[]; public _raw!: SubscriptionContracts.ISubscriptionProjectContract; constructor(data: { id: string; isActive: boolean; name: string; environments: ISubscriptionEnvironment[]; _raw: SubscriptionContracts.ISubscriptionProjectContract; }) { Object.assign(this, data); } } export interface ISubscriptionCollectionGroup { collections: SharedContracts.IReferenceObjectContract[]; roles: ISubscriptionUserRole[]; } export interface ISubscriptionUserRoleLanguage { id: string; externalId?: string; codename: string; name: string; isActive: boolean; } export interface ISubscriptionUserRole { id: string; name: string; codename: string; languages: ISubscriptionUserRoleLanguage[]; } export interface ISubscriptionUserEnvironment { id: string; name: string; isUserActive: boolean; lastActivityAt?: Date; collectionGroups: ISubscriptionCollectionGroup[]; } export interface ISubscriptionUserProject { id: string; name: string; environments: ISubscriptionUserEnvironment[]; } export class SubscriptionUser { public id!: string; public email!: string; public hasPendingInvitation!: boolean; public projects!: ISubscriptionUserProject[]; public firstName?: string; public lastName?: string; constructor(data: { id: string; email: string; hasPendingInvitation: boolean; projects: ISubscriptionUserProject[]; firstName?: string; lastName?: string; _raw: SubscriptionContracts.ISubscriptionUserContract; }) { Object.assign(this, data); } } }