rename DossierTemplateModelWrapper, rename dossierWrapper

This commit is contained in:
Dan Percic 2021-09-25 22:42:03 +03:00
parent 07123ef70b
commit 38d406ec85
25 changed files with 178 additions and 217 deletions

View File

@ -1,57 +0,0 @@
import { DossierTemplateModel, FileAttributesConfig } from '@redaction/red-ui-http';
import { IListable } from '@iqser/common-ui';
export class DossierTemplateModelWrapper implements IListable {
dictionariesCount = 0;
totalDictionaryEntries = 0;
constructor(public dossierTemplateModel: DossierTemplateModel, public fileAttributesConfig: FileAttributesConfig) {}
get id() {
return this.dossierTemplateModel.dossierTemplateId;
}
get createdBy() {
return this.dossierTemplateModel.createdBy;
}
get dateAdded() {
return this.dossierTemplateModel.dateAdded;
}
get dateModified() {
return this.dossierTemplateModel.dateModified;
}
get description() {
return this.dossierTemplateModel.description;
}
get dossierTemplateId() {
return this.dossierTemplateModel.dossierTemplateId;
}
get downloadFileTypes() {
return this.dossierTemplateModel.downloadFileTypes;
}
get modifiedBy() {
return this.dossierTemplateModel.modifiedBy;
}
get name() {
return this.dossierTemplateModel.name;
}
get reportTemplateIds() {
return this.dossierTemplateModel.reportTemplateIds;
}
get validFrom() {
return this.dossierTemplateModel.validFrom;
}
get validTo() {
return this.dossierTemplateModel.validTo;
}
}

View File

@ -0,0 +1,36 @@
import { DownloadFileType, FileAttributesConfig, IDossierTemplate, List } from '@redaction/red-ui-http';
import { IListable } from '@iqser/common-ui';
export class DossierTemplate implements IDossierTemplate, IListable {
readonly createdBy?: string;
readonly dateAdded?: string;
readonly dateModified?: string;
readonly description?: string;
readonly dossierTemplateId?: string;
readonly downloadFileTypes?: List<DownloadFileType>;
readonly modifiedBy?: string;
readonly name?: string;
readonly reportTemplateIds?: List;
readonly validFrom?: string;
readonly validTo?: string;
dictionariesCount = 0;
totalDictionaryEntries = 0;
constructor(dossierTemplateModel: IDossierTemplate, public fileAttributesConfig: FileAttributesConfig) {
this.createdBy = dossierTemplateModel.createdBy;
this.dateAdded = dossierTemplateModel.dateAdded;
this.dateModified = dossierTemplateModel.dateModified;
this.description = dossierTemplateModel.description;
this.dossierTemplateId = dossierTemplateModel.dossierTemplateId;
this.downloadFileTypes = dossierTemplateModel.downloadFileTypes;
this.modifiedBy = dossierTemplateModel.modifiedBy;
this.name = dossierTemplateModel.name;
this.reportTemplateIds = dossierTemplateModel.reportTemplateIds;
this.validFrom = dossierTemplateModel.validFrom;
this.validTo = dossierTemplateModel.validTo;
}
get id(): string {
return this.dossierTemplateId;
}
}

View File

@ -6,8 +6,8 @@ import * as moment from 'moment';
import { Moment } from 'moment';
import {
DossierTemplateControllerService,
DossierTemplateModel,
DownloadFileType,
IDossierTemplate,
ReportTemplate,
ReportTemplateControllerService
} from '@redaction/red-ui-http';
@ -39,7 +39,7 @@ export class AddEditDossierTemplateDialogComponent implements OnInit {
private readonly _dossierTemplateController: DossierTemplateControllerService,
private readonly _reportTemplateController: ReportTemplateControllerService,
public dialogRef: MatDialogRef<AddEditDossierTemplateDialogComponent>,
@Inject(MAT_DIALOG_DATA) public dossierTemplate: DossierTemplateModel
@Inject(MAT_DIALOG_DATA) readonly dossierTemplate: IDossierTemplate
) {
this.dossierTemplateForm = this._formBuilder.group({
name: [this.dossierTemplate?.name, Validators.required],

View File

@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit, Templ
import { AppStateService } from '@state/app-state.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper';
import { DossierTemplate } from '@models/file/dossier-template';
import {
CircleButtonTypes,
DefaultListingServices,
@ -26,12 +26,12 @@ import { RouterHistoryService } from '@services/router-history.service';
{ provide: ListingComponent, useExisting: forwardRef(() => DossierTemplatesListingScreenComponent) }
]
})
export class DossierTemplatesListingScreenComponent extends ListingComponent<DossierTemplateModelWrapper> implements OnInit {
export class DossierTemplatesListingScreenComponent extends ListingComponent<DossierTemplate> implements OnInit {
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
readonly currentUser = this._userService.currentUser;
readonly tableHeaderLabel = _('dossier-templates-listing.table-header.title');
tableColumnConfigs: TableColumnConfig<DossierTemplateModelWrapper>[];
tableColumnConfigs: TableColumnConfig<DossierTemplate>[];
@ViewChild('nameTemplate', { static: true }) nameTemplate: TemplateRef<never>;
@ViewChild('userTemplate', { static: true }) userTemplate: TemplateRef<never>;
@ViewChild('dateAddedTemplate', { static: true }) dateAddedTemplate: TemplateRef<never>;
@ -52,7 +52,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent<Dos
super(_injector);
}
routerLinkFn = (dossierTemplate: DossierTemplateModelWrapper) => [dossierTemplate.dossierTemplateId, 'dictionaries'];
routerLinkFn = (dossierTemplate: DossierTemplate) => [dossierTemplate.dossierTemplateId, 'dictionaries'];
ngOnInit(): void {
this._configureTableColumns();

View File

@ -1,8 +1,8 @@
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 { DossierTemplateModel } from '@redaction/red-ui-http';
import { Dossier } from '@state/model/dossier';
import { IDossierTemplate } from '@redaction/red-ui-http';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
@Component({
@ -13,7 +13,7 @@ import { DossiersDialogService } from '../../services/dossiers-dialog.service';
export class DossierDetailsStatsComponent {
attributesExpanded = false;
@Input() dossierAttributes: DossierAttributeWithValue[];
@Output() openDossierDictionaryDialog = new EventEmitter();
@Output() readonly openDossierDictionaryDialog = new EventEmitter();
constructor(private readonly _appStateService: AppStateService, private readonly _dialogService: DossiersDialogService) {}
@ -21,13 +21,13 @@ export class DossierDetailsStatsComponent {
return this._appStateService.activeDossier;
}
get dossierTemplate(): DossierTemplateModel {
get dossierTemplate(): IDossierTemplate {
return this._appStateService.getDossierTemplateById(this.activeDossier.dossierTemplateId);
}
openEditDossierAttributesDialog() {
this._dialogService.openDialog('editDossier', null, {
dossierWrapper: this.activeDossier,
dossier: this.activeDossier,
section: 'dossierAttributes'
});
}

View File

@ -18,7 +18,7 @@ export class DossierListingActionsComponent {
readonly currentUser = this._userService.currentUser;
@Input() dossier: Dossier;
@Output() actionPerformed = new EventEmitter<Dossier | undefined>();
@Output() readonly actionPerformed = new EventEmitter<Dossier | undefined>();
constructor(
readonly permissionsService: PermissionsService,
@ -27,9 +27,9 @@ export class DossierListingActionsComponent {
private readonly _userService: UserService
) {}
openEditDossierDialog($event: MouseEvent, dossierWrapper: Dossier): void {
openEditDossierDialog($event: MouseEvent, dossier: Dossier): void {
this._dialogService.openDialog('editDossier', $event, {
dossierWrapper,
dossier,
afterSave: () => this.actionPerformed.emit()
});
}

View File

@ -16,9 +16,9 @@ export class TeamMembersManagerComponent implements OnInit {
teamForm: FormGroup;
searchQuery = '';
@Input() dossierWrapper: Dossier;
@Input() dossier: Dossier;
@Output() readonly save = new EventEmitter<IDossier>();
readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id);
selectedReviewersList: string[] = [];
membersSelectOptions: string[] = [];
@ -58,7 +58,7 @@ export class TeamMembersManagerComponent implements OnInit {
const memberIds = this.selectedMembersList;
const approverIds = this.selectedApproversList;
const dw = {
...this.dossierWrapper,
...this.dossier,
memberIds,
approverIds,
ownerId
@ -120,15 +120,15 @@ export class TeamMembersManagerComponent implements OnInit {
}
private _updateChanged() {
if (this.dossierWrapper.ownerId !== this.selectedOwnerId) {
if (this.dossier.ownerId !== this.selectedOwnerId) {
this.changed = true;
return;
}
const initialMembers = [...this.dossierWrapper.memberIds].sort();
const initialMembers = [...this.dossier.memberIds].sort();
const currentMembers = this.selectedMembersList.sort();
const initialApprovers = [...this.dossierWrapper.approverIds].sort();
const initialApprovers = [...this.dossier.approverIds].sort();
const currentApprovers = this.selectedApproversList.sort();
this.changed = this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers);
@ -147,9 +147,9 @@ export class TeamMembersManagerComponent implements OnInit {
private _loadData() {
this.teamForm = this._formBuilder.group({
owner: [this.dossierWrapper?.ownerId, Validators.required],
approvers: [[...this.dossierWrapper?.approverIds]],
members: [[...this.dossierWrapper?.memberIds]]
owner: [this.dossier?.ownerId, Validators.required],
approvers: [[...this.dossier?.approverIds]],
members: [[...this.dossier?.memberIds]]
});
this.teamForm.get('owner').valueChanges.subscribe(owner => {
if (!this.isApprover(owner)) {

View File

@ -1,6 +1,6 @@
import { Component } from '@angular/core';
import { MatDialogRef } from '@angular/material/dialog';
import { DossierTemplateModel, DownloadFileType, IDossier, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { DownloadFileType, IDossier, IDossierTemplate, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AppStateService } from '@state/app-state.service';
import * as moment from 'moment';
@ -16,12 +16,11 @@ export class AddDossierDialogComponent {
dossierForm: FormGroup;
hasDueDate = false;
downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({
downloadTypes: { key: DownloadFileType; label: string }[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'].map((type: DownloadFileType) => ({
key: type,
label: downloadTypesTranslations[type]
}));
dossierTemplates: DossierTemplateModel[];
dossierTemplates: IDossierTemplate[];
availableReportTypes = [];
reportTemplateValueMapper = (reportTemplate: ReportTemplate) => reportTemplate.templateId;
@ -29,7 +28,7 @@ export class AddDossierDialogComponent {
private readonly _appStateService: AppStateService,
private readonly _formBuilder: FormBuilder,
private readonly _reportTemplateController: ReportTemplateControllerService,
public dialogRef: MatDialogRef<AddDossierDialogComponent>
readonly dialogRef: MatDialogRef<AddDossierDialogComponent>
) {
this._filterInvalidDossierTemplates();
this.dossierForm = this._formBuilder.group(

View File

@ -1,7 +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 { AppStateService } from '@state/app-state.service';
import { PermissionsService } from '@services/permissions.service';
import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui';
import { FormBuilder, FormGroup } from '@angular/forms';
@ -18,8 +17,8 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
readonly iconButtonTypes = IconButtonTypes;
readonly circleButtonTypes = CircleButtonTypes;
@Input() dossierWrapper: Dossier;
@Output() updateDossier = new EventEmitter<any>();
@Input() dossier: Dossier;
@Output() readonly updateDossier = new EventEmitter();
customAttributes: DossierAttributeWithValue[] = [];
imageAttributes: DossierAttributeWithValue[] = [];
attributes: DossierAttributeWithValue[] = [];
@ -28,7 +27,6 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
@ViewChildren('fileInput') private _fileInputs: QueryList<ElementRef>;
constructor(
private readonly _appStateService: AppStateService,
private readonly _permissionsService: PermissionsService,
private readonly _dossierAttributesService: DossierAttributesService,
private readonly _loadingService: LoadingService,
@ -50,11 +48,11 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
}
get disabled() {
return !this._permissionsService.isOwner(this.dossierWrapper);
return !this._permissionsService.isOwner(this.dossier);
}
get canEdit(): boolean {
return this._permissionsService.isOwner(this.dossierWrapper);
return this._permissionsService.isOwner(this.dossier);
}
async ngOnInit() {
@ -70,7 +68,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
dossierAttributeId: attr.id,
value: this.currentAttrValue(attr)
}));
await this._dossierAttributesService.setValues(this.dossierWrapper, dossierAttributeList);
await this._dossierAttributesService.setValues(this.dossier, dossierAttributeList);
await this._loadAttributes();
this.updateDossier.emit();
this._loadingService.stop();
@ -136,7 +134,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
}
private async _loadAttributes() {
this.attributes = await this._dossierAttributesService.getValues(this.dossierWrapper);
this.attributes = await this._dossierAttributesService.getValues(this.dossier);
this.customAttributes = this.attributes.filter(attr => !this.isImage(attr));
this.imageAttributes = this.attributes.filter(attr => this.isImage(attr));
}

View File

@ -1,8 +1,8 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DossierTemplateModel, DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http';
import { FormBuilder, FormGroup } from '@angular/forms';
import { AppStateService } from '@state/app-state.service';
import { Dossier } from '../../../../../state/model/dossier';
import { Dossier } from '@state/model/dossier';
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { downloadTypesTranslations } from '../../../../../translations/download-types-translations';
@ -13,16 +13,14 @@ import { downloadTypesTranslations } from '../../../../../translations/download-
})
export class EditDossierDownloadPackageComponent implements OnInit, EditDossierSectionInterface {
dossierForm: FormGroup;
downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'];
downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({
downloadTypes: { key: DownloadFileType; label: string }[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'].map((type: DownloadFileType) => ({
key: type,
label: downloadTypesTranslations[type]
}));
dossierTemplates: DossierTemplateModel[];
availableReportTypes: ReportTemplate[] = [];
@Input() dossierWrapper: Dossier;
@Output() updateDossier = new EventEmitter<any>();
@Input() dossier: Dossier;
@Output() readonly updateDossier = new EventEmitter();
constructor(
private readonly _appStateService: AppStateService,
@ -41,11 +39,11 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
get changed() {
if (this.dossierForm) {
for (const key of Object.keys(this.dossierForm.getRawValue())) {
if (this.dossierWrapper[key].length !== this.dossierForm.get(key).value.length) {
if (this.dossier[key].length !== this.dossierForm.get(key).value.length) {
return true;
}
const originalItems = [...this.dossierWrapper[key]].sort();
const originalItems = [...this.dossier[key]].sort();
const newItems = [...this.dossierForm.get(key).value].sort();
for (let idx = 0; idx < originalItems.length; ++idx) {
@ -67,12 +65,12 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
async ngOnInit() {
this.availableReportTypes =
(await this._reportTemplateController.getAvailableReportTemplates(this.dossierWrapper.dossierTemplateId).toPromise()) || [];
(await this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId).toPromise()) || [];
this.dossierForm = this._formBuilder.group(
{
reportTemplateIds: [this.dossierWrapper.reportTemplateIds],
downloadFileTypes: [this.dossierWrapper.downloadFileTypes]
reportTemplateIds: [this.dossier.reportTemplateIds],
downloadFileTypes: [this.dossier.downloadFileTypes]
},
{
validators: control =>
@ -85,7 +83,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
async save() {
const dossier = {
...this.dossierWrapper,
...this.dossier,
downloadFileTypes: this.dossierForm.get('downloadFileTypes').value,
reportTemplateIds: this.dossierForm.get('reportTemplateIds').value
};
@ -95,8 +93,8 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
revert() {
this.dossierForm.reset({
downloadFileTypes: this.dossierWrapper.downloadFileTypes,
reportTemplateIds: this.dossierWrapper.reportTemplateIds
downloadFileTypes: this.dossier.downloadFileTypes,
reportTemplateIds: this.dossier.reportTemplateIds
});
}
}

View File

@ -22,13 +22,13 @@
<redaction-edit-dossier-general-info
(updateDossier)="updatedDossier()"
*ngIf="activeNav === 'dossierInfo'"
[dossierWrapper]="dossier"
[dossier]="dossier"
></redaction-edit-dossier-general-info>
<redaction-edit-dossier-download-package
(updateDossier)="updatedDossier()"
*ngIf="activeNav === 'downloadPackage'"
[dossierWrapper]="dossier"
[dossier]="dossier"
></redaction-edit-dossier-download-package>
<redaction-edit-dossier-dictionary
@ -40,13 +40,13 @@
<redaction-edit-dossier-team-members
(updateDossier)="updatedDossier()"
*ngIf="activeNav === 'members'"
[dossierWrapper]="dossier"
[dossier]="dossier"
></redaction-edit-dossier-team-members>
<redaction-edit-dossier-attributes
(updateDossier)="updatedDossier()"
*ngIf="activeNav === 'dossierAttributes'"
[dossierWrapper]="dossier"
[dossier]="dossier"
></redaction-edit-dossier-attributes>
<redaction-edit-dossier-deleted-documents

View File

@ -37,7 +37,7 @@ export class EditDossierDialogComponent {
private readonly _changeRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA)
private readonly _data: {
dossierWrapper: Dossier;
dossier: Dossier;
afterSave: Function;
section?: Section;
}
@ -73,7 +73,7 @@ export class EditDossierDialogComponent {
}
];
this.dossier = _data.dossierWrapper;
this.dossier = _data.dossier;
this.activeNav = _data.section || 'dossierInfo';
}

View File

@ -58,7 +58,7 @@
<div class="dialog-actions">
<iqser-icon-button
(action)="deleteDossier()"
*ngIf="permissionsService.canDeleteDossier(dossierWrapper)"
*ngIf="permissionsService.canDeleteDossier(dossier)"
[label]="'dossier-listing.delete.action' | translate"
[type]="iconButtonTypes.dark"
icon="red:trash"

View File

@ -1,19 +1,18 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { DossierTemplateModel } from '@redaction/red-ui-http';
import { IDossierTemplate } from '@redaction/red-ui-http';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { AppStateService } from '../../../../../state/app-state.service';
import { AppStateService } from '@state/app-state.service';
import * as moment from 'moment';
import { Dossier } from '../../../../../state/model/dossier';
import { Dossier } from '@state/model/dossier';
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
import { PermissionsService } from '@services/permissions.service';
import { Router } from '@angular/router';
import { MatDialogRef } from '@angular/material/dialog';
import { EditDossierDialogComponent } from '../edit-dossier-dialog.component';
import { Toaster } from '@iqser/common-ui';
import { IconButtonTypes, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IconButtonTypes } from '@iqser/common-ui';
import { ConfirmationDialogInput, TitleColors } from '../../../../shared/dialogs/confirmation-dialog/confirmation-dialog.component';
import { ConfirmationDialogInput, TitleColors } from '@shared/dialogs/confirmation-dialog/confirmation-dialog.component';
@Component({
selector: 'redaction-edit-dossier-general-info',
@ -25,10 +24,10 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
dossierForm: FormGroup;
hasDueDate: boolean;
dossierTemplates: DossierTemplateModel[];
dossierTemplates: IDossierTemplate[];
@Input() dossierWrapper: Dossier;
@Output() updateDossier = new EventEmitter<any>();
@Input() dossier: Dossier;
@Output() readonly updateDossier = new EventEmitter();
constructor(
readonly permissionsService: PermissionsService,
@ -43,13 +42,13 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
get changed() {
for (const key of Object.keys(this.dossierForm.getRawValue())) {
if (key === 'dueDate') {
if (this.hasDueDate !== !!this.dossierWrapper.dueDate) {
if (this.hasDueDate !== !!this.dossier.dueDate) {
return true;
}
if (this.hasDueDate && !moment(this.dossierWrapper.dueDate).isSame(moment(this.dossierForm.get(key).value))) {
if (this.hasDueDate && !moment(this.dossier.dueDate).isSame(moment(this.dossierForm.get(key).value))) {
return true;
}
} else if (this.dossierWrapper[key] !== this.dossierForm.get(key).value) {
} else if (this.dossier[key] !== this.dossierForm.get(key).value) {
return true;
}
}
@ -68,34 +67,34 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
ngOnInit() {
this._filterInvalidDossierTemplates();
this.dossierForm = this._formBuilder.group({
dossierName: [this.dossierWrapper.dossierName, Validators.required],
dossierName: [this.dossier.dossierName, Validators.required],
dossierTemplateId: [
{
value: this.dossierWrapper.dossierTemplateId,
disabled: this.dossierWrapper.hasFiles
value: this.dossier.dossierTemplateId,
disabled: this.dossier.hasFiles
},
Validators.required
],
description: [this.dossierWrapper.description],
dueDate: [this.dossierWrapper.dueDate],
watermarkEnabled: [this.dossierWrapper.watermarkEnabled]
description: [this.dossier.description],
dueDate: [this.dossier.dueDate],
watermarkEnabled: [this.dossier.watermarkEnabled]
});
this.hasDueDate = !!this.dossierWrapper.dueDate;
this.hasDueDate = !!this.dossier.dueDate;
}
revert() {
this.dossierForm.reset({
dossierName: this.dossierWrapper.dossierName,
dossierTemplateId: this.dossierWrapper.dossierTemplateId,
description: this.dossierWrapper.description,
watermarkEnabled: this.dossierWrapper.watermarkEnabled,
dueDate: this.dossierWrapper.dueDate
dossierName: this.dossier.dossierName,
dossierTemplateId: this.dossier.dossierTemplateId,
description: this.dossier.description,
watermarkEnabled: this.dossier.watermarkEnabled,
dueDate: this.dossier.dueDate
});
}
async save() {
const dossier = {
...this.dossierWrapper,
...this.dossier,
dossierName: this.dossierForm.get('dossierName').value,
description: this.dossierForm.get('description').value,
watermarkEnabled: this.dossierForm.get('watermarkEnabled').value,
@ -116,12 +115,12 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
requireInput: true,
denyText: _('confirmation-dialog.delete-dossier.deny-text'),
translateParams: {
dossierName: this.dossierWrapper.dossierName,
dossierName: this.dossier.dossierName,
dossiersCount: 1
}
});
this._dialogService.openDialog('confirm', null, data, async () => {
await this._appStateService.deleteDossier(this.dossierWrapper);
await this._appStateService.deleteDossier(this.dossier);
this._editDossierDialogRef.componentInstance.afterSave();
this._editDossierDialogRef.close();
this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted());
@ -129,12 +128,12 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
}
private _notifyDossierDeleted() {
this._toaster.success(_('edit-dossier-dialog.delete-successful'), { params: { dossierName: this.dossierWrapper.dossierName } });
this._toaster.success(_('edit-dossier-dialog.delete-successful'), { params: { dossierName: this.dossier.dossierName } });
}
private _filterInvalidDossierTemplates() {
this.dossierTemplates = this._appStateService.dossierTemplates.filter(r => {
if (this.dossierWrapper?.dossierTemplateId === r.dossierTemplateId) {
if (this.dossier?.dossierTemplateId === r.dossierTemplateId) {
return true;
}
const notYetValid = !!r.validFrom && moment(r.validFrom).isAfter(moment());

View File

@ -1 +1 @@
<redaction-team-members-manager (save)="updateDossier.emit()" [dossierWrapper]="dossierWrapper"></redaction-team-members-manager>
<redaction-team-members-manager (save)="updateDossier.emit()" [dossier]="dossier"></redaction-team-members-manager>

View File

@ -1,6 +1,5 @@
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
import { AppStateService } from '@state/app-state.service';
import { Dossier } from '../../../../../state/model/dossier';
import { Dossier } from '@state/model/dossier';
import { EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { TeamMembersManagerComponent } from '../../../components/team-members-manager/team-members-manager.component';
import { UserService } from '@services/user.service';
@ -13,12 +12,12 @@ import { UserService } from '@services/user.service';
export class EditDossierTeamMembersComponent implements EditDossierSectionInterface {
readonly currentUser = this._userService.currentUser;
@Input() dossierWrapper: Dossier;
@Output() updateDossier = new EventEmitter<any>();
@Input() dossier: Dossier;
@Output() readonly updateDossier = new EventEmitter();
@ViewChild(TeamMembersManagerComponent) managerComponent: TeamMembersManagerComponent;
constructor(private readonly _appStateService: AppStateService, private readonly _userService: UserService) {}
constructor(private readonly _userService: UserService) {}
get changed() {
return this.managerComponent.changed;

View File

@ -134,7 +134,7 @@ export class DossierListingScreenComponent
await this._router.navigate([`/main/dossiers/${addResponse.dossier.id}`]);
if (addResponse.addMembers) {
this._dialogService.openDialog('editDossier', null, {
dossierWrapper: addResponse.dossier,
dossier: addResponse.dossier,
section: 'members'
});
}

View File

@ -314,17 +314,17 @@ export class DossierOverviewScreenComponent extends ListingComponent<FileStatusW
openEditDossierDialog($event: MouseEvent) {
this._dialogService.openDialog('editDossier', $event, {
dossierWrapper: this.currentDossier
dossier: this.currentDossier
});
}
openAssignDossierMembersDialog(): void {
const data = { dossierWrapper: this.currentDossier, section: 'members' };
const data = { dossier: this.currentDossier, section: 'members' };
this._dialogService.openDialog('editDossier', null, data, async () => await this.reloadDossiers());
}
openDossierDictionaryDialog() {
const data = { dossierWrapper: this.currentDossier, section: 'dossierDictionary' };
const data = { dossier: this.currentDossier, section: 'dossierDictionary' };
this._dialogService.openDialog('editDossier', null, data, async () => {
await this.reloadDossiers();
});

View File

@ -19,14 +19,14 @@ import { FALLBACK_COLOR, hexToRgb } from '@utils/functions';
import { FileStatusWrapper } from '@models/file/file-status.wrapper';
import { Dossier } from './model/dossier';
import { TypeValue } from '@models/file/type-value';
import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper';
import { DossierTemplate } from '@models/file/dossier-template';
import { DossiersService } from '../modules/dossier/services/dossiers.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserPreferenceService } from '@services/user-preference.service';
export interface AppState {
dossiers: Dossier[];
dossierTemplates: DossierTemplateModelWrapper[];
dossierTemplates: DossierTemplate[];
activeDossierId: string;
activeFileId: string;
activeDossierTemplateId: string;
@ -43,7 +43,7 @@ export class AppStateService {
readonly fileChanged$ = new Subject<FileStatusWrapper>();
readonly fileReanalysed$ = new Subject<FileStatusWrapper>();
readonly dossierChanged$ = new Subject<Dossier>();
readonly dossierTemplateChanged$ = new Subject<DossierTemplateModelWrapper>();
readonly dossierTemplateChanged$ = new Subject<DossierTemplate>();
private _appState: AppState;
@ -99,11 +99,11 @@ export class AppStateService {
return this._appState.activeDossierTemplateId;
}
get activeDossierTemplate(): DossierTemplateModelWrapper {
get activeDossierTemplate(): DossierTemplate {
return this.getDossierTemplateById(this.activeDossierTemplateId);
}
get dossierTemplates(): DossierTemplateModelWrapper[] {
get dossierTemplates(): DossierTemplate[] {
return this._appState.dossierTemplates;
}
@ -187,7 +187,7 @@ export class AppStateService {
return color ?? this._dictionaryData[dossierTemplateId]['default'].hexColor;
}
getDossierTemplateById(id: string): DossierTemplateModelWrapper {
getDossierTemplateById(id: string): DossierTemplate {
return this.dossierTemplates.find(rs => rs.dossierTemplateId === id);
}
@ -374,7 +374,7 @@ export class AppStateService {
async loadAllDossierTemplates() {
const dossierTemplates = await this._dossierTemplateControllerService.getAllDossierTemplates().toPromise();
this._appState.dossierTemplates = dossierTemplates.map(dossierTemplate => new DossierTemplateModelWrapper(dossierTemplate, null));
this._appState.dossierTemplates = dossierTemplates.map(dossierTemplate => new DossierTemplate(dossierTemplate, null));
for (const dossierTemplate of this._appState.dossierTemplates) {
dossierTemplate.fileAttributesConfig = await this._fileAttributesService
.getFileAttributesConfiguration(dossierTemplate.dossierTemplateId)
@ -393,7 +393,7 @@ export class AppStateService {
Object.assign(
this._appState.dossierTemplates.find(d => d.dossierTemplateId === dossierTemplateId),
new DossierTemplateModelWrapper(dossierTemplate, fileAttributesConfigs)
new DossierTemplate(dossierTemplate, fileAttributesConfigs)
);
await this.refreshDossierTemplateDictionaryData(dossierTemplateId);

View File

@ -4,6 +4,7 @@ import { IListable } from '@iqser/common-ui';
export class Dossier implements IDossier, IListable {
readonly id: string;
readonly dossierId: string;
readonly ownerId: string;
readonly memberIds: List;
readonly approverIds: List;
@ -37,6 +38,7 @@ export class Dossier implements IDossier, IListable {
constructor(dossier: IDossier, private _files: FileStatusWrapper[] = []) {
this.id = dossier.dossierId;
this.dossierId = dossier.dossierId;
this.approverIds = dossier.approverIds;
this.date = dossier.date;
this.description = dossier.description;

View File

@ -1,7 +1,7 @@
{
"ADMIN_CONTACT_NAME": null,
"ADMIN_CONTACT_URL": null,
"API_URL": "https://demo.redactmanager.com/redaction-gateway-v1",
"API_URL": "https://red-staging.iqser.cloud/redaction-gateway-v1",
"APP_NAME": "RedactManager",
"AUTO_READ_TIME": 1.5,
"BACKEND_APP_VERSION": "4.4.40",
@ -17,7 +17,7 @@
"MAX_RETRIES_ON_SERVER_ERROR": 3,
"OAUTH_CLIENT_ID": "redaction",
"OAUTH_IDP_HINT": null,
"OAUTH_URL": "https://demo.redactmanager.com/auth/realms/redaction",
"OAUTH_URL": "https://red-staging.iqser.cloud/auth/realms/redaction",
"RECENT_PERIOD_IN_HOURS": 24,
"SELECTION_MODE": "structural"
}

View File

@ -10,15 +10,15 @@
* Do not edit the class manually.
*/ /* tslint:disable:no-unused-variable member-ordering */
import { Inject, Injectable, Optional } from '@angular/core';
import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';
import { Inject, Injectable, Optional } from "@angular/core";
import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from "@angular/common/http";
import { Observable } from 'rxjs';
import { Observable } from "rxjs";
import { DossierTemplateModel } from '../model/dossierTemplateModel';
import { IDossierTemplate } from "../model/dossierTemplate";
import { BASE_PATH } from '../variables';
import { Configuration } from '../configuration';
import { BASE_PATH } from "../variables";
import { Configuration } from "../configuration";
@Injectable()
export class DossierTemplateControllerService {
@ -47,29 +47,21 @@ export class DossierTemplateControllerService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public createOrUpdateDossierTemplate(
body: DossierTemplateModel,
observe?: 'body',
reportProgress?: boolean
): Observable<DossierTemplateModel>;
public createOrUpdateDossierTemplate(body: IDossierTemplate, observe?: 'body', reportProgress?: boolean): Observable<IDossierTemplate>;
public createOrUpdateDossierTemplate(
body: DossierTemplateModel,
body: IDossierTemplate,
observe?: 'response',
reportProgress?: boolean
): Observable<HttpResponse<DossierTemplateModel>>;
): Observable<HttpResponse<IDossierTemplate>>;
public createOrUpdateDossierTemplate(
body: DossierTemplateModel,
body: IDossierTemplate,
observe?: 'events',
reportProgress?: boolean
): Observable<HttpEvent<DossierTemplateModel>>;
): Observable<HttpEvent<IDossierTemplate>>;
public createOrUpdateDossierTemplate(
body: DossierTemplateModel,
observe: any = 'body',
reportProgress: boolean = false
): Observable<any> {
public createOrUpdateDossierTemplate(body: IDossierTemplate, observe: any = 'body', reportProgress: boolean = false): Observable<any> {
if (body === null || body === undefined) {
throw new Error('Required parameter body was null or undefined when calling createOrUpdateDossierTemplate.');
}
@ -97,7 +89,7 @@ export class DossierTemplateControllerService {
headers = headers.set('Content-Type', httpContentTypeSelected);
}
return this.httpClient.request<DossierTemplateModel>('post', `${this.basePath}/dossier-template`, {
return this.httpClient.request<IDossierTemplate>('post', `${this.basePath}/dossier-template`, {
body: body,
withCredentials: this.configuration.withCredentials,
headers: headers,
@ -205,11 +197,11 @@ export class DossierTemplateControllerService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getAllDossierTemplates(observe?: 'body', reportProgress?: boolean): Observable<Array<DossierTemplateModel>>;
public getAllDossierTemplates(observe?: 'body', reportProgress?: boolean): Observable<Array<IDossierTemplate>>;
public getAllDossierTemplates(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<DossierTemplateModel>>>;
public getAllDossierTemplates(observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<IDossierTemplate>>>;
public getAllDossierTemplates(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<DossierTemplateModel>>>;
public getAllDossierTemplates(observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<IDossierTemplate>>>;
public getAllDossierTemplates(observe: any = 'body', reportProgress: boolean = false): Observable<any> {
let headers = this.defaultHeaders;
@ -228,7 +220,7 @@ export class DossierTemplateControllerService {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
return this.httpClient.request<Array<DossierTemplateModel>>('get', `${this.basePath}/dossier-template`, {
return this.httpClient.request<Array<IDossierTemplate>>('get', `${this.basePath}/dossier-template`, {
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
@ -243,19 +235,19 @@ export class DossierTemplateControllerService {
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public getDossierTemplate(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable<DossierTemplateModel>;
public getDossierTemplate(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable<IDossierTemplate>;
public getDossierTemplate(
dossierTemplateId: string,
observe?: 'response',
reportProgress?: boolean
): Observable<HttpResponse<DossierTemplateModel>>;
): Observable<HttpResponse<IDossierTemplate>>;
public getDossierTemplate(
dossierTemplateId: string,
observe?: 'events',
reportProgress?: boolean
): Observable<HttpEvent<DossierTemplateModel>>;
): Observable<HttpEvent<IDossierTemplate>>;
public getDossierTemplate(dossierTemplateId: string, observe: any = 'body', reportProgress: boolean = false): Observable<any> {
if (dossierTemplateId === null || dossierTemplateId === undefined) {
@ -278,7 +270,7 @@ export class DossierTemplateControllerService {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
return this.httpClient.request<DossierTemplateModel>(
return this.httpClient.request<IDossierTemplate>(
'get',
`${this.basePath}/dossier-template/${encodeURIComponent(String(dossierTemplateId))}`,
{

View File

@ -9,61 +9,52 @@
* https://github.com/swagger-api/swagger-codegen.git
* Do not edit the class manually.
*/
import { DownloadFileType } from './dossier';
import { List } from '../red-types';
export interface DossierTemplateModel {
export interface IDossierTemplate {
/**
* The userId of the user who created this DossierTemplate. Set by the system.
*/
createdBy?: string;
readonly createdBy?: string;
/**
* The date when this dossierTemplate was created. Set by System on create.
*/
dateAdded?: string;
readonly dateAdded?: string;
/**
* The date when this dossierTemplate was last modified. Set by System on create.
*/
dateModified?: string;
readonly dateModified?: string;
/**
* The description of this dossierTemplate
*/
description?: string;
readonly description?: string;
/**
* The Rule Set Id. Generated by the system on create.
*/
dossierTemplateId?: string;
readonly dossierTemplateId?: string;
/**
* Download File Types for this dossierTemplate's dossiers submission package.
*/
downloadFileTypes?: Array<DossierTemplateModel.DownloadFileTypesEnum>;
readonly downloadFileTypes?: List<DownloadFileType>;
/**
* The userId of the user who last modified this DossierTemplate. Set by the system.
*/
modifiedBy?: string;
readonly modifiedBy?: string;
/**
* The name of this dossierTemplate. Must be set on create / update requests
*/
name?: string;
readonly name?: string;
/**
* Report File Types for this dossierTemplate's dossiers submission package.
*/
reportTemplateIds?: string[];
readonly reportTemplateIds?: List;
/**
* Validity of start this dossierTemplate.
*/
validFrom?: string;
readonly validFrom?: string;
/**
* Validity of end this dossierTemplate.
*/
validTo?: string;
}
export namespace DossierTemplateModel {
export type DownloadFileTypesEnum = 'ANNOTATED' | 'FLATTEN' | 'ORIGINAL' | 'PREVIEW' | 'REDACTED';
export const DownloadFileTypesEnum = {
ANNOTATED: 'ANNOTATED' as DownloadFileTypesEnum,
FLATTEN: 'FLATTEN' as DownloadFileTypesEnum,
ORIGINAL: 'ORIGINAL' as DownloadFileTypesEnum,
PREVIEW: 'PREVIEW' as DownloadFileTypesEnum,
REDACTED: 'REDACTED' as DownloadFileTypesEnum
};
readonly validTo?: string;
}

View File

@ -23,7 +23,7 @@ export * from './dossierAttributesConfig';
export * from './dossierAttributesReq';
export * from './dossierAttributesRes';
export * from './dossierRequest';
export * from './dossierTemplateModel';
export * from './dossierTemplate';
export * from './downloadDetails';
export * from './downloadResponse';
export * from './downloadStatus';

View File

@ -1 +1,5 @@
/**
* Custom list type to hold readonly arrays.
* Defaults to readonly string list
*/
export type List<T = string> = readonly T[];