argos/dmp-frontend/src/app/core/model/dmp/dmp.ts

213 lines
4.7 KiB
TypeScript
Raw Normal View History

2023-12-06 22:10:01 +01:00
import { DmpAccessType } from '@app/core/common/enum/dmp-access-type';
import { DmpStatus } from '@app/core/common/enum/dmp-status';
2023-12-06 22:10:01 +01:00
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';
2024-03-11 08:47:03 +01:00
import { Description, PublicDescription } from '../description/description';
2023-12-29 16:04:16 +01:00
import { DmpBlueprint } from '../dmp-blueprint/dmp-blueprint';
2023-12-06 22:10:01 +01:00
import { EntityDoi } from '../entity-doi/entity-doi';
2023-12-28 16:18:49 +01:00
import { ReferencePersist } from '../reference/reference';
import { DmpAssociatedUser, User } from "../user/user";
2023-12-28 16:18:49 +01:00
import { DmpReference } from './dmp-reference';
import { IsActive } from '@app/core/common/enum/is-active.enum';
2024-03-14 10:23:46 +01:00
import { AppPermission } from '@app/core/common/enum/permission.enum';
2024-03-29 10:06:47 +01:00
import { EntityType } from '@app/core/common/enum/entity-type';
2019-01-18 18:03:45 +01:00
2023-10-27 17:56:19 +02:00
export interface Dmp extends BaseEntity {
2024-01-18 13:23:20 +01:00
label?: string;
version?: number;
status?: DmpStatus;
versionStatus?: DmpVersionStatus;
properties?: DmpProperties;
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[];
2024-03-14 10:23:46 +01:00
authorizationFlags?: AppPermission[];
}
2024-01-15 17:47:34 +01:00
export interface DmpProperties {
dmpBlueprintValues: DmpBlueprintValue[];
contacts: DmpContact[];
}
export interface DmpBlueprintValue {
fieldId: Guid;
fieldValue: string;
}
export interface DmpContact {
user?: DmpAssociatedUser;
2024-01-15 17:47:34 +01:00
firstName: string;
lastName: string;
email: string;
}
2023-11-29 14:26:40 +01:00
export interface DmpUser extends BaseEntity {
dmp: Dmp;
user: User;
role: DmpUserRole;
2024-02-21 14:18:41 +01:00
sectionId: Guid;
2023-11-29 14:26:40 +01:00
}
export interface DmpDescriptionTemplate extends BaseEntity {
2024-01-18 13:23:20 +01:00
dmp?: Dmp;
currentDescriptionTemplate?: DescriptionTemplate; //TODO: what is this?
descriptionTemplates?: DescriptionTemplate[]; //TODO: why it is array?
descriptionTemplateGroupId?: Guid;
sectionId?: Guid;
}
2024-03-14 10:23:46 +01:00
//
// Persist
2024-03-14 10:23:46 +01:00
//
export interface DmpPersist extends BaseEntityPersist {
label: string;
status: DmpStatus;
2024-01-15 17:47:34 +01:00
properties: DmpPropertiesPersist;
2023-11-29 14:26:40 +01:00
description: String;
language: String;
2023-12-28 16:18:49 +01:00
blueprint: Guid;
2023-11-29 14:26:40 +01:00
accessType: DmpAccessType;
descriptionTemplates: DmpDescriptionTemplatePersist[];
2024-02-20 16:00:20 +01:00
users: DmpUserPersist[];
2023-11-29 14:26:40 +01:00
}
2024-01-15 17:47:34 +01:00
export interface DmpPropertiesPersist {
2024-01-19 17:28:53 +01:00
dmpBlueprintValues: Map<Guid, DmpBlueprintValuePersist>;
2024-01-15 17:47:34 +01:00
contacts: DmpContactPersist[];
}
export interface DmpBlueprintValuePersist {
fieldId: Guid;
fieldValue: string;
references: DmpReferencePersist[];
}
export interface DmpContactPersist {
userId: Guid;
firstName: string;
lastName: string;
email: string;
}
export interface DmpReferencePersist {
2023-12-28 16:18:49 +01:00
reference?: ReferencePersist;
2024-01-15 17:47:34 +01:00
data?: DmpReferenceDataPersist;
}
export interface DmpReferenceDataPersist {
blueprintFieldId: Guid;
2023-11-29 14:26:40 +01:00
}
2024-01-18 13:23:20 +01:00
export interface DmpDescriptionTemplatePersist {
2023-11-29 14:26:40 +01:00
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[];
2024-03-04 11:42:14 +01:00
hash?: string;
2023-11-29 14:26:40 +01:00
}
export interface DmpUserPersist {
user: Guid;
role: DmpUserRole;
2024-02-21 11:46:24 +01:00
email: string;
2024-02-21 14:18:41 +01:00
sectionId: Guid;
2023-12-06 22:10:01 +01:00
}
export interface DmpUserRemovePersist {
id: Guid;
dmpId: Guid;
role: DmpUserRole;
2023-12-29 17:36:02 +01:00
}
export interface DmpUserInvitePersist {
users: DmpUserPersist[];
2023-12-29 17:36:02 +01:00
}
2024-03-11 08:47:03 +01:00
//
// Public
//
export interface PublicDmp extends BaseEntity {
label?: string;
version?: number;
description?: string;
finalizedAt?: Date;
publishedAt?: Date;
status?: DmpStatus;
groupId?: String;
accessType: DmpAccessType;
2024-03-11 08:47:03 +01:00
dmpReferences: PublicDmpReference[];
2024-03-11 14:20:09 +01:00
dmpUsers: PublicDmpUser[];
2024-03-11 08:47:03 +01:00
descriptions: PublicDescription[];
2024-03-29 10:06:47 +01:00
entityDois: PublicEntityDoi[];
2024-03-11 08:47:03 +01:00
}
export interface PublicDmpReference {
id: Guid;
dmp: PublicDmp;
reference: PublicReference;
isActive?: IsActive;
2024-03-11 08:47:03 +01:00
}
export interface PublicReference {
id: Guid;
label: string;
type: PublicReferenceType;
description?: string;
reference?: string;
}
export interface PublicReferenceType {
id: Guid;
name: string;
code: string;
2024-03-11 08:47:03 +01:00
}
export interface PublicDmpUser {
id: Guid;
dmp: PublicDmp;
user: PublicUser;
role: DmpUserRole;
}
export interface PublicUser {
id: Guid;
name: string;
}
2024-03-29 10:06:47 +01:00
export interface PublicEntityDoi {
id: Guid;
entityType: EntityType;
entityId: Guid;
repositoryId: string;
doi: string;
}