import { DmpAccessType } from '@app/core/common/enum/dmp-access-type'; import { DmpStatus } from '@app/core/common/enum/dmp-status'; import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; import { DmpVersionStatus } from '@app/core/common/enum/dmp-version-status'; import { BaseEntity, BaseEntityPersist } from '@common/base/base-entity.model'; import { Guid } from '@common/types/guid'; import { DescriptionTemplate } from '../description-template/description-template'; import { Description } from '../description/description'; import { DmpBlueprint } from '../dmp-blueprint/dmp-blueprint'; import { EntityDoi } from '../entity-doi/entity-doi'; import { ReferencePersist } from '../reference/reference'; import { User } from "../user/user"; import { DmpReference } from './dmp-reference'; export interface Dmp extends BaseEntity { label: string; version: number; status: DmpStatus; versionStatus: DmpVersionStatus; properties: string; groupId: String; description: String; finalizedAt: Date; publishedAt: Date; creator: User; accessType: DmpAccessType; blueprint: DmpBlueprint; language: String; publicAfter: Date; dmpReferences: DmpReference[]; dmpUsers: DmpUser[]; descriptions: Description[]; dmpDescriptionTemplates: DmpDescriptionTemplate[]; entityDois: EntityDoi[]; } export interface DmpUser extends BaseEntity { dmp: Dmp; user: User; role: DmpUserRole; } export interface DmpDescriptionTemplate extends BaseEntity { dmp: Dmp; currentDescriptionTemplate: DescriptionTemplate; //TODO: what is this? descriptionTemplates: DescriptionTemplate[]; //TODO: why it is array? descriptionTemplateGroupId: Guid; sectionId: Guid; } // // Persist // export interface DmpPersist extends BaseEntityPersist { label: string; status: DmpStatus; properties: string; description: String; language: String; blueprint: Guid; accessType: DmpAccessType; references: DmpReferencePersist[]; descriptionTemplates: DmpDescriptionTemplatePersist[]; } export interface DmpReferencePersist extends BaseEntityPersist { reference?: ReferencePersist; data?: string; } export interface DmpDescriptionTemplatePersist extends BaseEntityPersist { descriptionTemplateGroupId: Guid; sectionId: Guid; } export interface CloneDmpPersist { id: Guid; label: string; description: String; descriptions: Guid[]; } export interface NewVersionDmpPersist { id: Guid; label: string; description: String; blueprintId: Guid; descriptions: Guid[]; } export interface DmpUserPersist { user: Guid; role: DmpUserRole; } export interface DmpUserRemovePersist { id: Guid; dmpId: Guid; role: DmpUserRole; } export interface DmpUserInvitePersist { users: DmpUserInviteTypePersist[]; role: DmpUserRole; } export interface DmpUserInviteTypePersist { userId: Guid; email: string; }