diff --git a/src/app/core/eperson/models/NormalizedEperson.model.ts b/src/app/core/eperson/models/NormalizedEperson.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c0b2490d6d228235a34f2d2cd71f68058c38912 --- /dev/null +++ b/src/app/core/eperson/models/NormalizedEperson.model.ts @@ -0,0 +1,37 @@ +import { autoserialize, inheritSerialization } from 'cerialize'; +import { CacheableObject } from '../../cache/object-cache.reducer'; +import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; +import { NormalizedDSpaceObject } from '../../cache/models/normalized-dspace-object.model'; +import { Eperson } from './eperson.model'; +import { mapsTo, relationship } from '../../cache/builders/build-decorators'; +import { ResourceType } from '../../shared/resource-type'; + +@mapsTo(Eperson) +@inheritSerialization(NormalizedDSpaceObject) +export class NormalizedEpersonModel extends NormalizedDSpaceObject implements CacheableObject, ListableObject { + + @autoserialize + public handle: string; + + @autoserialize + @relationship(ResourceType.Group, true) + groups: string[]; + + @autoserialize + public netid: string; + + @autoserialize + public lastActive: string; + + @autoserialize + public canLogIn: boolean; + + @autoserialize + public email: string; + + @autoserialize + public requireCertificate: boolean; + + @autoserialize + public selfRegistered: boolean; +} diff --git a/src/app/core/eperson/models/NormalizedGroup.model.ts b/src/app/core/eperson/models/NormalizedGroup.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..24f7da8eab2019fa1dc699fe0f5b5cf695ea67e6 --- /dev/null +++ b/src/app/core/eperson/models/NormalizedGroup.model.ts @@ -0,0 +1,18 @@ +import { autoserialize, inheritSerialization } from 'cerialize'; +import { CacheableObject } from '../../cache/object-cache.reducer'; +import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; +import { NormalizedDSpaceObject } from '../../cache/models/normalized-dspace-object.model'; +import { Eperson } from './eperson.model'; +import { mapsTo } from '../../cache/builders/build-decorators'; +import { Group } from './group.model'; + +@mapsTo(Group) +@inheritSerialization(NormalizedDSpaceObject) +export class NormalizedGroupModel extends NormalizedDSpaceObject implements CacheableObject, ListableObject { + + @autoserialize + public handle: string; + + @autoserialize + public permanent: boolean; +} diff --git a/src/app/core/eperson/models/eperson.model.ts b/src/app/core/eperson/models/eperson.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..373fb42792af44f5e1a580a1962edf1efed32c02 --- /dev/null +++ b/src/app/core/eperson/models/eperson.model.ts @@ -0,0 +1,22 @@ +import { DSpaceObject } from '../../shared/dspace-object.model'; +import { Group } from './group.model'; + +export class Eperson extends DSpaceObject { + + public handle: string; + + public groups: Group[]; + + public netid: string; + + public lastActive: string; + + public canLogIn: boolean; + + public email: string; + + public requireCertificate: boolean; + + public selfRegistered: boolean; + +} diff --git a/src/app/core/eperson/models/group.model.ts b/src/app/core/eperson/models/group.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..cd41ce9e25798415ad66c858e659c3b6a164f7fa --- /dev/null +++ b/src/app/core/eperson/models/group.model.ts @@ -0,0 +1,8 @@ +import { DSpaceObject } from '../../shared/dspace-object.model'; + +export class Group extends DSpaceObject { + + public handle: string; + + public permanent: boolean; +} diff --git a/src/app/core/shared/resource-type.ts b/src/app/core/shared/resource-type.ts index f3554e18cfb355c00e210ef067e0b0a4a3127967..6f4a1c735893215b7ea9e6c5d78dd53c5c14fb67 100644 --- a/src/app/core/shared/resource-type.ts +++ b/src/app/core/shared/resource-type.ts @@ -9,4 +9,6 @@ export enum ResourceType { Item = 'item', Collection = 'collection', Community = 'community', + Eperson = 'eperson', + Group = 'group', }