From 4d8342f492a5f57070f218d17b5a8df6e8cb28a3 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Thu, 21 Oct 2021 14:31:59 +0300 Subject: [PATCH] add red-domain lib --- angular.json | 23 ++++ .../src/app/models/file/dossier-template.ts | 3 +- ...-edit-dossier-template-dialog.component.ts | 3 +- .../screens/trash/trash-screen.component.ts | 2 +- .../team-members-manager.component.ts | 5 +- .../add-dossier-dialog.component.ts | 5 +- ...sign-reviewer-approver-dialog.component.ts | 2 +- .../document-info-dialog.component.ts | 2 +- .../edit-dossier-attributes.component.ts | 2 +- ...dit-dossier-deleted-documents.component.ts | 2 +- .../edit-dossier-dictionary.component.ts | 2 +- ...edit-dossier-download-package.component.ts | 4 +- .../edit-dossier-dialog.component.ts | 2 +- .../edit-dossier-general-info.component.ts | 6 +- .../edit-dossier-team-members.component.ts | 2 +- ...dossier-overview-bulk-actions.component.ts | 2 +- .../dossier-details-stats.component.ts | 2 +- .../dossier-details.component.ts | 4 +- .../dossier-overview-screen.component.ts | 4 +- .../dossiers-listing-actions.component.ts | 6 +- ...dossiers-listing-dossier-name.component.ts | 2 +- .../table-item/table-item.component.ts | 2 +- .../dossiers-listing/config.service.ts | 2 +- .../dossiers-listing-screen.component.ts | 3 +- .../file-preview-screen.component.ts | 2 +- .../needs-work-badge.component.ts | 2 +- .../file-download-btn.component.ts | 2 +- .../dictionary-manager.component.ts | 2 +- .../dossier-attributes.service.ts | 2 +- .../upload-download/model/download-status.ts | 3 +- .../entity-services/dossiers.service.ts | 5 +- .../src/app/services/permissions.service.ts | 2 +- .../red-ui/src/app/state/app-state.service.ts | 4 +- .../download-types-translations.ts | 2 +- apps/red-ui/src/app/utils/file-drop-utils.ts | 2 +- apps/red-ui/src/app/utils/filter-utils.ts | 2 +- libs/red-domain/.eslintrc.json | 116 ++++++++++++++++++ libs/red-domain/README.md | 1 + libs/red-domain/jest.config.js | 18 +++ libs/red-domain/src/index.ts | 2 + .../src/lib/dossiers/dossier.interface.ts | 22 ++++ .../src/lib/dossiers/dossier.model.ts | 21 ++-- .../src/lib/dossiers/dossier.request.ts} | 18 +-- libs/red-domain/src/lib/dossiers/index.ts | 4 + libs/red-domain/src/lib/dossiers/types.ts | 6 + libs/red-domain/src/lib/shared/types.ts | 8 ++ libs/red-domain/src/test-setup.ts | 2 + libs/red-domain/tsconfig.json | 24 ++++ libs/red-domain/tsconfig.lib.json | 15 +++ libs/red-domain/tsconfig.spec.json | 10 ++ libs/red-ui-http/src/lib/model/dossier.ts | 46 ------- .../src/lib/model/dossierTemplate.ts | 2 +- .../src/lib/model/downloadStatus.ts | 2 +- libs/red-ui-http/src/lib/model/models.ts | 2 - package.json | 4 +- tsconfig.base.json | 3 +- 56 files changed, 322 insertions(+), 126 deletions(-) create mode 100644 libs/red-domain/.eslintrc.json create mode 100644 libs/red-domain/README.md create mode 100644 libs/red-domain/jest.config.js create mode 100644 libs/red-domain/src/index.ts create mode 100644 libs/red-domain/src/lib/dossiers/dossier.interface.ts rename apps/red-ui/src/app/state/model/dossier.ts => libs/red-domain/src/lib/dossiers/dossier.model.ts (86%) rename libs/{red-ui-http/src/lib/model/dossierRequest.ts => red-domain/src/lib/dossiers/dossier.request.ts} (76%) create mode 100644 libs/red-domain/src/lib/dossiers/index.ts create mode 100644 libs/red-domain/src/lib/dossiers/types.ts create mode 100644 libs/red-domain/src/lib/shared/types.ts create mode 100644 libs/red-domain/src/test-setup.ts create mode 100644 libs/red-domain/tsconfig.json create mode 100644 libs/red-domain/tsconfig.lib.json create mode 100644 libs/red-domain/tsconfig.spec.json delete mode 100644 libs/red-ui-http/src/lib/model/dossier.ts diff --git a/angular.json b/angular.json index ee50cef8c..0e78f4204 100644 --- a/angular.json +++ b/angular.json @@ -42,6 +42,29 @@ } } }, + "red-domain": { + "projectType": "library", + "root": "libs/red-domain", + "sourceRoot": "libs/red-domain/src", + "prefix": "red", + "architect": { + "test": { + "builder": "@nrwl/jest:jest", + "outputs": ["coverage/libs/red-domain"], + "options": { + "jestConfig": "libs/red-domain/jest.config.js", + "passWithNoTests": true + } + }, + "lint": { + "builder": "@nrwl/linter:eslint", + "options": { + "lintFilePatterns": ["libs/red-domain/src/**/*.ts", "libs/red-domain/src/**/*.html"] + }, + "outputs": ["{options.outputFile}"] + } + } + }, "red-cache": { "projectType": "library", "root": "libs/red-cache", diff --git a/apps/red-ui/src/app/models/file/dossier-template.ts b/apps/red-ui/src/app/models/file/dossier-template.ts index ae5364686..eebf11b80 100644 --- a/apps/red-ui/src/app/models/file/dossier-template.ts +++ b/apps/red-ui/src/app/models/file/dossier-template.ts @@ -1,5 +1,6 @@ -import { DownloadFileType, IDossierTemplate } from '@redaction/red-ui-http'; +import { IDossierTemplate } from '@redaction/red-ui-http'; import { IListable, List } from '@iqser/common-ui'; +import { DownloadFileType } from '@red/domain'; export class DossierTemplate implements IDossierTemplate, IListable { readonly createdBy?: string; diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts index eceb1b75a..3e894c234 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts @@ -4,12 +4,13 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import * as moment from 'moment'; import { Moment } from 'moment'; -import { DownloadFileType, IDossierTemplate } from '@redaction/red-ui-http'; +import { IDossierTemplate } from '@redaction/red-ui-http'; import { applyIntervalConstraints } from '@utils/date-inputs-utils'; import { downloadTypesTranslations } from '../../../../translations/download-types-translations'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { CONFLICT_ERROR_CODE, Toaster } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { DownloadFileType } from '@red/domain'; @Component({ templateUrl: './add-edit-dossier-template-dialog.component.html', diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts index 1d129b295..f205f483d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts @@ -1,5 +1,4 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core'; -import { IDossier } from '@redaction/red-ui-http'; import { CircleButtonTypes, ConfirmationDialogInput, @@ -20,6 +19,7 @@ import { Observable } from 'rxjs'; import { distinctUntilChanged, map } from 'rxjs/operators'; import { getLeftDateTime } from '@utils/functions'; import { RouterHistoryService } from '@services/router-history.service'; +import { IDossier } from '@red/domain'; interface DossierListItem extends IDossier, IListable { readonly canRestore: boolean; diff --git a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts index e3e35a338..3c39fec39 100644 --- a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts @@ -1,10 +1,9 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DossierRequest, IDossier } from '@redaction/red-ui-http'; import { UserService } from '@services/user.service'; import { Toaster } from '@iqser/common-ui'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { Dossier } from '@state/model/dossier'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { Dossier, IDossier, IDossierRequest } from '@red/domain'; @Component({ selector: 'redaction-team-members-manager', @@ -56,7 +55,7 @@ export class TeamMembersManagerComponent implements OnInit { memberIds: this.selectedMembersList, approverIds: this.selectedApproversList, ownerId: this.selectedOwnerId, - } as DossierRequest; + } as IDossierRequest; const result = await this._dossiersService.createOrUpdate(dossier).toPromise(); if (result) { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts index e2d1ff8f1..457be2835 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { MatDialogRef } from '@angular/material/dialog'; -import { DossierRequest, DownloadFileType, IDossierTemplate, ReportTemplate } from '@redaction/red-ui-http'; +import { IDossierTemplate, ReportTemplate } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import * as moment from 'moment'; import { downloadTypesTranslations } from '../../../../translations/download-types-translations'; @@ -8,6 +8,7 @@ import { IconButtonTypes } from '@iqser/common-ui'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { ReportTemplateService } from '@services/report-template.service'; +import { DownloadFileType, IDossierRequest } from '@red/domain'; @Component({ templateUrl: './add-dossier-dialog.component.html', @@ -112,7 +113,7 @@ export class AddDossierDialogComponent { }); } - private _formToObject(): DossierRequest { + private _formToObject(): IDossierRequest { return { dossierName: this.dossierForm.get('dossierName').value, description: this.dossierForm.get('description').value, diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 46a5823e3..e7fc346fa 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -5,7 +5,7 @@ import { UserService } from '@services/user.service'; import { Toaster } from '@iqser/common-ui'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { File } from '@models/file/file'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { FilesService } from '@services/entity-services/files.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts index 3d325dc0a..8ae79ce2f 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/document-info-dialog/document-info-dialog.component.ts @@ -3,7 +3,7 @@ import { FormBuilder, FormGroup } from '@angular/forms'; import { IFile, IFileAttributeConfig } from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts index 23b63358f..9ccf55f34 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts @@ -1,6 +1,6 @@ import { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; -import { Dossier } from '../../../../../state/model/dossier'; +import { Dossier } from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui'; import { FormBuilder, FormGroup } from '@angular/forms'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts index f220b38a9..20bb06d56 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts @@ -1,6 +1,6 @@ import { Component, EventEmitter, forwardRef, Injector, Input, OnInit, Output } from '@angular/core'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { CircleButtonTypes, ConfirmationDialogInput, diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index b543c4916..1eb2182aa 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { PermissionsService } from '@services/permissions.service'; import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index 341aed718..c9ef6f225 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -1,7 +1,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DownloadFileType, ReportTemplate } from '@redaction/red-ui-http'; +import { ReportTemplate } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { Dossier } from '@state/model/dossier'; +import { Dossier, DownloadFileType } from '@red/domain'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { downloadTypesTranslations } from '../../../../../translations/download-types-translations'; import { DossiersService } from '@services/entity-services/dossiers.service'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index f039a1e35..daef546a9 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectorRef, Component, Inject, ViewChild } from '@angular/core'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component'; import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component'; import { EditDossierSectionInterface } from './edit-dossier-section.interface'; diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 562ef918d..e16e5ddcb 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -1,8 +1,8 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DossierRequest, IDossierTemplate } from '@redaction/red-ui-http'; +import { IDossierTemplate } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import * as moment from 'moment'; -import { Dossier } from '@state/model/dossier'; +import { Dossier, IDossierRequest } from '@red/domain'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { DossiersDialogService } from '../../../services/dossiers-dialog.service'; import { PermissionsService } from '@services/permissions.service'; @@ -101,7 +101,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti watermarkEnabled: this.dossierForm.get('watermarkEnabled').value, dueDate: this.hasDueDate ? this.dossierForm.get('dueDate').value : undefined, dossierTemplateId: this.dossierForm.get('dossierTemplateId').value, - } as DossierRequest; + } as IDossierRequest; await this._dossiersService.createOrUpdate(dossier).toPromise(); this.updateDossier.emit(); } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts index 9f9f1929f..cf0521c84 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { TeamMembersManagerComponent } from '../../../components/team-members-manager/team-members-manager.component'; import { UserService } from '@services/user.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts index 6e79c4ba3..b1f683275 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/bulk-actions/dossier-overview-bulk-actions.component.ts @@ -8,7 +8,7 @@ import { DossiersDialogService } from '../../../../services/dossiers-dialog.serv import { CircleButtonTypes, ConfirmationDialogInput, ListingService, LoadingService } from '@iqser/common-ui'; import { TranslateService } from '@ngx-translate/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { LongPressEvent } from '@shared/directives/long-press.directive'; import { UserPreferenceService } from '@services/user-preference.service'; import { FileManagementService } from '../../../../shared/services/file-management.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts index b6e747537..f2ba8f6d7 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details-stats/dossier-details-stats.component.ts @@ -1,7 +1,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { DossierAttributeWithValue } from '@models/dossier-attributes.model'; import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { DossiersDialogService } from '../../../../services/dossiers-dialog.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts index 7c60c4f5c..f54b8226e 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/components/dossier-details/dossier-details.component.ts @@ -8,9 +8,9 @@ import { FilterService, Toaster } from '@iqser/common-ui'; import { DossierAttributeWithValue } from '@models/dossier-attributes.model'; import { fileStatusTranslations } from '../../../../translations/file-status-translations'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { DossierRequest } from '@redaction/red-ui-http'; import { User } from '@models/user'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { IDossierRequest } from '@red/domain'; @Component({ selector: 'redaction-dossier-details', @@ -72,7 +72,7 @@ export class DossierDetailsComponent implements OnInit { async assignOwner(user: User | string) { this.owner = typeof user === 'string' ? this._userService.find(user) : user; const activeDossier = this.dossiersService.activeDossier; - const dossierRequest: DossierRequest = { ...activeDossier, dossierId: activeDossier.dossierId, ownerId: this.owner.id }; + const dossierRequest: IDossierRequest = { ...activeDossier, dossierId: activeDossier.dossierId, ownerId: this.owner.id }; await this.dossiersService.createOrUpdate(dossierRequest).toPromise(); const ownerName = this._userService.getNameForId(this.owner.id); diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts index 925e93bc4..04dee669f 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts @@ -46,7 +46,7 @@ import { DossierAttributeWithValue } from '@models/dossier-attributes.model'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { PermissionsService } from '@services/permissions.service'; import { RouterHistoryService } from '@services/router-history.service'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { Router } from '@angular/router'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { ConfigService as AppConfigService } from '@services/config.service'; @@ -55,7 +55,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { LongPressEvent } from '@shared/directives/long-press.directive'; import { UserPreferenceService } from '@services/user-preference.service'; -import { saveAsCSV } from '../../../../../utils/csv-utils'; +import { saveAsCSV } from '@utils/csv-utils'; @Component({ templateUrl: './dossier-overview-screen.component.html', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts index 62003983c..1236afa26 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-actions/dossiers-listing-actions.component.ts @@ -4,10 +4,10 @@ import { StatusSorter } from '@utils/sorters/status-sorter'; import { CircleButtonTypes, StatusBarConfig } from '@iqser/common-ui'; import { UserService } from '@services/user.service'; import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { DossiersDialogService } from '../../../../services/dossiers-dialog.service'; -import { LongPressEvent } from '../../../../../shared/directives/long-press.directive'; -import { UserPreferenceService } from '../../../../../../services/user-preference.service'; +import { LongPressEvent } from '@shared/directives/long-press.directive'; +import { UserPreferenceService } from '@services/user-preference.service'; @Component({ selector: 'redaction-dossiers-listing-actions', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts index 755418f20..8454d65aa 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-dossier-name/dossiers-listing-dossier-name.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; @Component({ diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts index 321ca04a7..62ffd1013 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { Required } from '@iqser/common-ui'; @Component({ diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts index 9d7014889..04bab4020 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/config.service.ts @@ -1,6 +1,6 @@ import { Injectable, TemplateRef } from '@angular/core'; import { ButtonConfig, IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqser/common-ui'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { TranslateService } from '@ngx-translate/core'; import { UserPreferenceService } from '@services/user-preference.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts index 7b48a932d..fc89acb59 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts @@ -9,9 +9,8 @@ import { TemplateRef, ViewChild, } from '@angular/core'; -import { DossierStatuses } from '@redaction/red-ui-http'; import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '@state/model/dossier'; +import { Dossier, DossierStatuses } from '@red/domain'; import { UserService } from '@services/user.service'; import { PermissionsService } from '@services/permissions.service'; import { TranslateChartService } from '@services/translate-chart.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts index 4d4939935..ce24e5fe8 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.ts @@ -44,7 +44,7 @@ import { FileActionsComponent } from '../../shared/components/file-actions/file- import { User } from '@models/user'; import { FilesService } from '@services/entity-services/files.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { FileManagementService } from '../../shared/services/file-management.service'; import Annotation = Core.Annotations.Annotation; diff --git a/apps/red-ui/src/app/modules/dossier/shared/components/needs-work-badge/needs-work-badge.component.ts b/apps/red-ui/src/app/modules/dossier/shared/components/needs-work-badge/needs-work-badge.component.ts index 6b136e8ac..27a1bde5d 100644 --- a/apps/red-ui/src/app/modules/dossier/shared/components/needs-work-badge/needs-work-badge.component.ts +++ b/apps/red-ui/src/app/modules/dossier/shared/components/needs-work-badge/needs-work-badge.component.ts @@ -1,7 +1,7 @@ import { Component, Input } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; import { File } from '@models/file/file'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; @Component({ selector: 'redaction-needs-work-badge', diff --git a/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts b/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts index 708e10603..3ec14a67b 100644 --- a/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/buttons/file-download-btn/file-download-btn.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, Input, OnDestroy } from '@angular/core'; import { PermissionsService } from '@services/permissions.service'; -import { Dossier } from '../../../../../state/model/dossier'; +import { Dossier } from '@red/domain'; import { File } from '@models/file/file'; import { FileDownloadService } from '@upload-download/services/file-download.service'; import { AutoUnsubscribe, CircleButtonType, CircleButtonTypes, List, Toaster } from '@iqser/common-ui'; diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts index 081de28a0..c9232ec90 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts @@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@a import { Debounce, IconButtonTypes, List } from '@iqser/common-ui'; import { Observable, of } from 'rxjs'; import { catchError, map, take, tap } from 'rxjs/operators'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DictionaryService } from '@shared/services/dictionary.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; diff --git a/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts b/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts index 76440e51d..c3d4ff622 100644 --- a/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/controller-wrappers/dossier-attributes.service.ts @@ -1,6 +1,6 @@ import { Injectable, Injector } from '@angular/core'; import { DossierAttribute, DossierAttributes, DossierAttributesConfig, IDossierAttributeConfig } from '@redaction/red-ui-http'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { DossierAttributeWithValue } from '@models/dossier-attributes.model'; import { Observable } from 'rxjs'; import { DossierAttributeConfig } from '@state/model/dossier-attribute-config'; diff --git a/apps/red-ui/src/app/modules/upload-download/model/download-status.ts b/apps/red-ui/src/app/modules/upload-download/model/download-status.ts index 84ae062ce..495d59daf 100644 --- a/apps/red-ui/src/app/modules/upload-download/model/download-status.ts +++ b/apps/red-ui/src/app/modules/upload-download/model/download-status.ts @@ -1,5 +1,6 @@ -import { DownloadFileType, DownloadStatusType, IDownloadStatus } from '@redaction/red-ui-http'; +import { DownloadStatusType, IDownloadStatus } from '@redaction/red-ui-http'; import { IListable, List } from '@iqser/common-ui'; +import { DownloadFileType } from '@red/domain'; export class DownloadStatus implements IDownloadStatus, IListable { readonly creationDate?: string; diff --git a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts index c64ec953c..278e114b8 100644 --- a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts @@ -1,7 +1,6 @@ import { Injectable, Injector } from '@angular/core'; -import { DossierRequest, IDossier } from '@redaction/red-ui-http'; import { EntitiesService, List, QueryParam, RequiredParam, Toaster, Validate } from '@iqser/common-ui'; -import { Dossier } from '@state/model/dossier'; +import { Dossier, IDossier, IDossierRequest } from '@red/domain'; import { catchError, map, tap } from 'rxjs/operators'; import { BehaviorSubject, Observable, of } from 'rxjs'; import { ActivationEnd, Router } from '@angular/router'; @@ -98,7 +97,7 @@ export class DossiersService extends EntitiesService { } @Validate() - createOrUpdate(@RequiredParam() dossier: DossierRequest): Observable { + createOrUpdate(@RequiredParam() dossier: IDossierRequest): Observable { return this._post(dossier).pipe( map(updatedDossier => new Dossier(updatedDossier, this.find(updatedDossier.dossierId)?.files ?? [])), tap(newDossier => this.replace(newDossier)), diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index d9455c5e7..6ae7c69fe 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -3,7 +3,7 @@ import { AppStateService } from '@state/app-state.service'; import { UserService } from './user.service'; import { File } from '@models/file/file'; import { Comment } from '@redaction/red-ui-http'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; import { DossiersService } from './entity-services/dossiers.service'; @Injectable({ diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index 37799078f..e819eeef1 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@angular/core'; -import { Colors, IDossier, IFile } from '@redaction/red-ui-http'; +import { Colors, IFile } from '@redaction/red-ui-http'; import { ActivationEnd, Router } from '@angular/router'; import { UserService } from '@services/user.service'; import { forkJoin, Observable, of, Subject } from 'rxjs'; import { catchError, filter, first, map, tap } from 'rxjs/operators'; import { currentComponentRoute, FALLBACK_COLOR, hexToRgb } from '@utils/functions'; import { File } from '@models/file/file'; -import { Dossier } from './model/dossier'; +import { Dossier, IDossier } from '@red/domain'; import { DossierTemplate } from '@models/file/dossier-template'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { UserPreferenceService } from '@services/user-preference.service'; diff --git a/apps/red-ui/src/app/translations/download-types-translations.ts b/apps/red-ui/src/app/translations/download-types-translations.ts index 930e00574..527b53cf3 100644 --- a/apps/red-ui/src/app/translations/download-types-translations.ts +++ b/apps/red-ui/src/app/translations/download-types-translations.ts @@ -1,5 +1,5 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { DownloadFileType } from '@redaction/red-ui-http'; +import { DownloadFileType } from '@red/domain'; export const downloadTypesTranslations: { [key in DownloadFileType]: string } = { ORIGINAL: _('download-type.original'), diff --git a/apps/red-ui/src/app/utils/file-drop-utils.ts b/apps/red-ui/src/app/utils/file-drop-utils.ts index 7cc4bfdf1..c816d93d8 100644 --- a/apps/red-ui/src/app/utils/file-drop-utils.ts +++ b/apps/red-ui/src/app/utils/file-drop-utils.ts @@ -1,5 +1,5 @@ import { FileUploadModel } from '@upload-download/model/file-upload.model'; -import { Dossier } from '@state/model/dossier'; +import { Dossier } from '@red/domain'; export function isCsv(file: FileUploadModel): boolean { return file.file.type?.toLowerCase() === 'text/csv' || file.file.name.toLowerCase().endsWith('.csv'); diff --git a/apps/red-ui/src/app/utils/filter-utils.ts b/apps/red-ui/src/app/utils/filter-utils.ts index 2763afba0..9b00d390d 100644 --- a/apps/red-ui/src/app/utils/filter-utils.ts +++ b/apps/red-ui/src/app/utils/filter-utils.ts @@ -1,5 +1,5 @@ import { File } from '@models/file/file'; -import { Dossier } from '../state/model/dossier'; +import { Dossier } from '@red/domain'; import { handleCheckedValue, INestedFilter } from '@iqser/common-ui'; export function handleFilterDelta(oldFilters: INestedFilter[], newFilters: INestedFilter[], allFilters: INestedFilter[]) { diff --git a/libs/red-domain/.eslintrc.json b/libs/red-domain/.eslintrc.json new file mode 100644 index 000000000..c3a38e5bf --- /dev/null +++ b/libs/red-domain/.eslintrc.json @@ -0,0 +1,116 @@ +{ + "extends": [ + "../../.eslintrc.json" + ], + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "extends": [ + "plugin:@nrwl/nx/angular", + "plugin:@angular-eslint/template/process-inline-templates", + "plugin:@angular-eslint/recommended", + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@angular-eslint/recommended--extra" + ], + "parserOptions": { + "project": [ + "libs/red-domain/tsconfig.*?.json" + ] + }, + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "red", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "red", + "style": "kebab-case" + } + ], + "@angular-eslint/prefer-on-push-component-change-detection": "error", + "@angular-eslint/use-lifecycle-interface": "error", + "@angular-eslint/no-input-prefix": "error", + "@angular-eslint/no-input-rename": "error", + "@angular-eslint/no-output-on-prefix": "error", + "@angular-eslint/no-output-rename": "error", + "@angular-eslint/prefer-output-readonly": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/lines-between-class-members": "off", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "memberLike", + "modifiers": [ + "private" + ], + "format": [ + "camelCase" + ], + "leadingUnderscore": "require" + }, + { + "selector": "memberLike", + "modifiers": [ + "protected" + ], + "format": [ + "camelCase" + ], + "leadingUnderscore": "require" + }, + { + "selector": "memberLike", + "modifiers": [ + "private" + ], + "format": [ + "UPPER_CASE", + "camelCase" + ], + "leadingUnderscore": "require" + } + ], + "import/prefer-default-export": "off", + "no-underscore-dangle": "off", + "no-param-reassign": "error", + "consistent-return": "off", + "class-methods-use-this": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/restrict-template-expressions": "off" + }, + "plugins": [ + "@angular-eslint/eslint-plugin", + "@typescript-eslint" + ] + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@nrwl/nx/angular-template", + "plugin:@angular-eslint/template/recommended" + ], + "plugins": [ + "prettier" + ], + "rules": {} + } + ] +} diff --git a/libs/red-domain/README.md b/libs/red-domain/README.md new file mode 100644 index 000000000..0c4dc2117 --- /dev/null +++ b/libs/red-domain/README.md @@ -0,0 +1 @@ +# Red domain diff --git a/libs/red-domain/jest.config.js b/libs/red-domain/jest.config.js new file mode 100644 index 000000000..6e8fc70e8 --- /dev/null +++ b/libs/red-domain/jest.config.js @@ -0,0 +1,18 @@ +module.exports = { + displayName: 'red-domain', + preset: '../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + }, + coverageDirectory: '../../coverage/libs/red-domain', + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], + transform: { '^.+\\.(ts|js|html)$': 'jest-preset-angular' }, +}; diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts new file mode 100644 index 000000000..8671dfe75 --- /dev/null +++ b/libs/red-domain/src/index.ts @@ -0,0 +1,2 @@ +export * from './lib/dossiers'; +export * from './lib/shared/types'; diff --git a/libs/red-domain/src/lib/dossiers/dossier.interface.ts b/libs/red-domain/src/lib/dossiers/dossier.interface.ts new file mode 100644 index 000000000..36092cd41 --- /dev/null +++ b/libs/red-domain/src/lib/dossiers/dossier.interface.ts @@ -0,0 +1,22 @@ +import { DossierStatus } from './types'; +import { DownloadFileType } from '../shared/types'; +import { List } from '@iqser/common-ui'; + +export interface IDossier { + readonly approverIds: List; + readonly date: string; + readonly description?: string; + readonly dossierId: string; + readonly dossierName: string; + readonly dossierTemplateId: string; + readonly downloadFileTypes?: List; + readonly dueDate?: string; + readonly hardDeletedTime?: string; + readonly memberIds: List; + readonly ownerId: string; + readonly reportTemplateIds: List; + readonly softDeletedTime?: string; + readonly startDate?: string; + readonly status: DossierStatus; + readonly watermarkEnabled: boolean; +} diff --git a/apps/red-ui/src/app/state/model/dossier.ts b/libs/red-domain/src/lib/dossiers/dossier.model.ts similarity index 86% rename from apps/red-ui/src/app/state/model/dossier.ts rename to libs/red-domain/src/lib/dossiers/dossier.model.ts index 82e45aa2a..a730affb7 100644 --- a/apps/red-ui/src/app/state/model/dossier.ts +++ b/libs/red-domain/src/lib/dossiers/dossier.model.ts @@ -1,23 +1,26 @@ import { File } from '@models/file/file'; -import { DossierStatus, DownloadFileType, IDictionary, IDossier } from '@redaction/red-ui-http'; +import { IDictionary } from '@redaction/red-ui-http'; import { IListable, List } from '@iqser/common-ui'; +import { IDossier } from './dossier.interface'; +import { DossierStatus } from './types'; +import { DownloadFileType } from '../shared/types'; export class Dossier implements IDossier, IListable { readonly dossierId: string; readonly dossierTemplateId: string; readonly ownerId: string; - readonly memberIds?: List; - readonly approverIds?: List; - readonly reportTemplateIds?: List; + readonly memberIds: List; + readonly approverIds: List; + readonly reportTemplateIds: List; readonly dossierName: string; - readonly date?: string; + readonly date: string; readonly dueDate?: string; readonly description?: string; readonly downloadFileTypes?: List; readonly hardDeletedTime?: string; - readonly reportTypes?: List; readonly softDeletedTime?: string; - readonly status?: DossierStatus; + readonly startDate?: string; + readonly status: DossierStatus; readonly watermarkEnabled: boolean; readonly hasReviewers: boolean; @@ -45,10 +48,10 @@ export class Dossier implements IDossier, IListable { this.memberIds = dossier.memberIds; this.ownerId = dossier.ownerId; this.reportTemplateIds = dossier.reportTemplateIds; - this.reportTypes = dossier.reportTypes; this.softDeletedTime = dossier.softDeletedTime; + this.startDate = dossier.startDate; this.status = dossier.status; - this.watermarkEnabled = !!dossier.watermarkEnabled; + this.watermarkEnabled = dossier.watermarkEnabled; this.hasReviewers = !!this.memberIds && this.memberIds.length > 1; let hintsOnly = false; diff --git a/libs/red-ui-http/src/lib/model/dossierRequest.ts b/libs/red-domain/src/lib/dossiers/dossier.request.ts similarity index 76% rename from libs/red-ui-http/src/lib/model/dossierRequest.ts rename to libs/red-domain/src/lib/dossiers/dossier.request.ts index 4af90f1a9..3c62c1a45 100644 --- a/libs/red-ui-http/src/lib/model/dossierRequest.ts +++ b/libs/red-domain/src/lib/dossiers/dossier.request.ts @@ -1,22 +1,10 @@ -/** - * API Documentation for Redaction Gateway - * Description for redaction - * - * OpenAPI spec version: 1.0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - -import { List } from '../red-types'; -import { DownloadFileType } from './dossier'; +import { List } from '@iqser/common-ui'; +import { DownloadFileType } from '../shared/types'; /** * Object containing information about a dossier. */ -export interface DossierRequest { +export interface IDossierRequest { /** * The id(s) of approvers associated to this dossier. */ diff --git a/libs/red-domain/src/lib/dossiers/index.ts b/libs/red-domain/src/lib/dossiers/index.ts new file mode 100644 index 000000000..315c41b16 --- /dev/null +++ b/libs/red-domain/src/lib/dossiers/index.ts @@ -0,0 +1,4 @@ +export * from './dossier.interface'; +export * from './dossier.model'; +export * from './types'; +export { IDossierRequest } from './dossier.request'; diff --git a/libs/red-domain/src/lib/dossiers/types.ts b/libs/red-domain/src/lib/dossiers/types.ts new file mode 100644 index 000000000..34a2be57c --- /dev/null +++ b/libs/red-domain/src/lib/dossiers/types.ts @@ -0,0 +1,6 @@ +export const DossierStatuses = { + ACTIVE: 'ACTIVE', + DELETED: 'DELETED', +} as const; + +export type DossierStatus = keyof typeof DossierStatuses; diff --git a/libs/red-domain/src/lib/shared/types.ts b/libs/red-domain/src/lib/shared/types.ts new file mode 100644 index 000000000..10374a89c --- /dev/null +++ b/libs/red-domain/src/lib/shared/types.ts @@ -0,0 +1,8 @@ +export const DownloadFileTypes = { + ANNOTATED: 'ANNOTATED', + FLATTEN: 'FLATTEN', + ORIGINAL: 'ORIGINAL', + PREVIEW: 'PREVIEW', + REDACTED: 'REDACTED', +} as const; +export type DownloadFileType = keyof typeof DownloadFileTypes; diff --git a/libs/red-domain/src/test-setup.ts b/libs/red-domain/src/test-setup.ts new file mode 100644 index 000000000..fb9e8ea78 --- /dev/null +++ b/libs/red-domain/src/test-setup.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import 'jest-preset-angular/setup-jest'; diff --git a/libs/red-domain/tsconfig.json b/libs/red-domain/tsconfig.json new file mode 100644 index 000000000..d7a0c7629 --- /dev/null +++ b/libs/red-domain/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "compilerOptions": { + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "angularCompilerOptions": { + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/red-domain/tsconfig.lib.json b/libs/red-domain/tsconfig.lib.json new file mode 100644 index 000000000..7136ec9d4 --- /dev/null +++ b/libs/red-domain/tsconfig.lib.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "target": "es2015", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "strict": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "exclude": ["src/test-setup.ts", "**/*.spec.ts"], + "include": ["**/*.ts"] +} diff --git a/libs/red-domain/tsconfig.spec.json b/libs/red-domain/tsconfig.spec.json new file mode 100644 index 000000000..cfff29a54 --- /dev/null +++ b/libs/red-domain/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/libs/red-ui-http/src/lib/model/dossier.ts b/libs/red-ui-http/src/lib/model/dossier.ts deleted file mode 100644 index 74fdafcb4..000000000 --- a/libs/red-ui-http/src/lib/model/dossier.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * API Documentation for Redaction Gateway - * Description for redaction - * - * OpenAPI spec version: 1.0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { List } from '../red-types'; - -export interface IDossier { - readonly dossierId: string; - readonly dossierName: string; - readonly dossierTemplateId: string; - readonly approverIds?: List; - readonly date?: string; - readonly description?: string; - readonly downloadFileTypes?: List; - readonly dueDate?: string; - readonly hardDeletedTime?: string; - readonly memberIds?: List; - readonly ownerId: string; - readonly reportTemplateIds?: List; - readonly reportTypes?: List; - readonly softDeletedTime?: string; - readonly status?: DossierStatus; - readonly watermarkEnabled?: boolean; -} - -export const DownloadFileTypes = { - ANNOTATED: 'ANNOTATED', - FLATTEN: 'FLATTEN', - ORIGINAL: 'ORIGINAL', - PREVIEW: 'PREVIEW', - REDACTED: 'REDACTED', -} as const; -export type DownloadFileType = keyof typeof DownloadFileTypes; - -export const DossierStatuses = { - ACTIVE: 'ACTIVE', - DELETED: 'DELETED', -} as const; -export type DossierStatus = keyof typeof DossierStatuses; diff --git a/libs/red-ui-http/src/lib/model/dossierTemplate.ts b/libs/red-ui-http/src/lib/model/dossierTemplate.ts index 911014429..0adf54ab0 100644 --- a/libs/red-ui-http/src/lib/model/dossierTemplate.ts +++ b/libs/red-ui-http/src/lib/model/dossierTemplate.ts @@ -9,8 +9,8 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ -import { DownloadFileType } from './dossier'; import { List } from '../red-types'; +import { DownloadFileType } from '@red/domain'; export interface IDossierTemplate { /** diff --git a/libs/red-ui-http/src/lib/model/downloadStatus.ts b/libs/red-ui-http/src/lib/model/downloadStatus.ts index 583eaf860..9622665de 100644 --- a/libs/red-ui-http/src/lib/model/downloadStatus.ts +++ b/libs/red-ui-http/src/lib/model/downloadStatus.ts @@ -9,8 +9,8 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ -import { DownloadFileType } from './dossier'; import { List } from '../red-types'; +import { DownloadFileType } from '@red/domain'; export interface IDownloadStatus { readonly creationDate?: string; diff --git a/libs/red-ui-http/src/lib/model/models.ts b/libs/red-ui-http/src/lib/model/models.ts index 8c96b9aeb..e118c67c6 100644 --- a/libs/red-ui-http/src/lib/model/models.ts +++ b/libs/red-ui-http/src/lib/model/models.ts @@ -13,12 +13,10 @@ export * from './createUserRequest'; export * from './dictionary'; export * from './digitalSignature'; export * from './digitalSignatureViewModel'; -export * from './dossier'; export * from './dossierAttributeConfig'; export * from './dossierAttribute'; export * from './dossierAttributesConfig'; export * from './dossierAttributes'; -export * from './dossierRequest'; export * from './dossierTemplate'; export * from './downloadResponse'; export * from './downloadStatus'; diff --git a/package.json b/package.json index f4b338877..caa88c6bc 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build-paligo-styles": "mkdir -p dist/paligo-styles && sass --load-path=. paligo-styles/style.scss > dist/paligo-styles/redacto-theme.css && cp -r libs/common-ui/src/assets/font dist/paligo-styles/fonts", "i18n:extract": "ngx-translate-extract --input ./apps/red-ui/src ./libs/common-ui/src --output apps/red-ui/src/assets/i18n/en.json --clean --sort --format namespaced-json && prettier apps/red-ui/src/assets/i18n/*.json --write", "postinstall": "ngcc --properties es2015 browser module main", - "lint": "ng lint --project=red-ui-http --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix", + "lint": "ng lint --project=red-domain --fix && ng lint --project=red-ui-http --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix", "nx": "nx", "start": "nx serve", "test": "nx test", @@ -19,7 +19,7 @@ }, "husky": { "hooks": { - "pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix" + "pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-domain --fix && ng lint --project=red-ui --fix && ng lint --project=common-ui --fix" } }, "dependencies": { diff --git a/tsconfig.base.json b/tsconfig.base.json index d30dac2bd..1c98f9731 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -29,7 +29,8 @@ "@shared/*": ["apps/red-ui/src/app/modules/shared/*"], "@state/*": ["apps/red-ui/src/app/state/*"], "@upload-download/*": ["apps/red-ui/src/app/modules/upload-download/*"], - "@utils/*": ["apps/red-ui/src/app/utils/*"] + "@utils/*": ["apps/red-ui/src/app/utils/*"], + "@red/domain": ["libs/red-domain/src/index.ts"] } }, "exclude": ["node_modules", "tmp"],