move delete dossier to dossiers service
This commit is contained in:
parent
8bf1843675
commit
b73145acfc
@ -122,7 +122,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
||||
}
|
||||
});
|
||||
this._dialogService.openDialog('confirm', null, data, async () => {
|
||||
await this._appStateService.deleteDossier(this.dossier);
|
||||
await this._dossiersService.delete(this.dossier).toPromise();
|
||||
this._editDossierDialogRef.componentInstance.afterSave();
|
||||
this._editDossierDialogRef.close();
|
||||
this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted());
|
||||
|
||||
@ -129,6 +129,18 @@ export class DossiersService extends EntitiesService<Dossier, IDossier> {
|
||||
return this.getAll('deleted-dossiers').toPromise();
|
||||
}
|
||||
|
||||
delete(dossier: Dossier): Observable<unknown> {
|
||||
const updateDossiers = () => {
|
||||
console.log(this.all.filter(d => d.dossierId !== dossier.dossierId));
|
||||
this.setEntities(this.all.filter(d => d.dossierId !== dossier.dossierId));
|
||||
};
|
||||
const showToast = () => {
|
||||
this._toaster.error(_('dossier-listing.delete.delete-failed'), { params: dossier });
|
||||
return of({});
|
||||
};
|
||||
return super.delete(dossier.dossierId).pipe(tap(updateDossiers), catchError(showToast));
|
||||
}
|
||||
|
||||
@Validate()
|
||||
restore(@RequiredParam() dossierIds: List): Promise<unknown> {
|
||||
return this._post(dossierIds, 'deleted-dossiers/restore').toPromise();
|
||||
@ -137,7 +149,7 @@ export class DossiersService extends EntitiesService<Dossier, IDossier> {
|
||||
@Validate()
|
||||
hardDelete(@RequiredParam() dossierIds: List): Promise<unknown> {
|
||||
const body = dossierIds.map<QueryParam>(id => ({ key: 'dossierId', value: id }));
|
||||
return this.delete(body, 'deleted-dossiers/hard-delete', body).toPromise();
|
||||
return super.delete(body, 'deleted-dossiers/hard-delete', body).toPromise();
|
||||
}
|
||||
|
||||
private _computeStats(entities: List<Dossier>): IDossiersStats {
|
||||
|
||||
@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
||||
import { Colors, IFile, ReanalysisControllerService } from '@redaction/red-ui-http';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { Event, NavigationEnd, ResolveStart, Router } from '@angular/router';
|
||||
import { Event, ResolveStart, 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';
|
||||
@ -12,7 +12,6 @@ import { Dossier } from './model/dossier';
|
||||
import { TypeValue } from '@models/file/type-value';
|
||||
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';
|
||||
import { FilesService } from '../modules/dossier/services/files.service';
|
||||
import { DictionaryService } from '@shared/services/dictionary.service';
|
||||
@ -65,9 +64,8 @@ export class AppStateService {
|
||||
.toPromise();
|
||||
return await this.activateFile(dossierId, fileId);
|
||||
}
|
||||
if (AppStateService._isRandomRoute(event)) {
|
||||
this._appState.activeFileId = undefined;
|
||||
}
|
||||
|
||||
this._appState.activeFileId = undefined;
|
||||
});
|
||||
}
|
||||
|
||||
@ -114,10 +112,6 @@ export class AppStateService {
|
||||
return event instanceof ResolveStart && event.url.includes('/main/dossiers/') && event.url.includes('/file/');
|
||||
}
|
||||
|
||||
private static _isRandomRoute(event: Event) {
|
||||
return event instanceof NavigationEnd && !event.url.includes('/main/dossiers/') && !event.url.includes('/file/');
|
||||
}
|
||||
|
||||
async reloadActiveDossierFilesIfNecessary() {
|
||||
if (this._dossiersService.activeDossier?.hasPendingOrProcessing) {
|
||||
await this.reloadActiveDossierFiles();
|
||||
@ -253,21 +247,6 @@ export class AppStateService {
|
||||
this._appState.activeDictionaryType = null;
|
||||
}
|
||||
|
||||
deleteDossier(dossier: Dossier) {
|
||||
return this._dossiersService
|
||||
.delete(dossier.id)
|
||||
.toPromise()
|
||||
.then(
|
||||
() => {
|
||||
const dossiers = this._dossiersService.all;
|
||||
const index = dossiers.findIndex(p => p.id === dossier.id);
|
||||
dossiers.splice(index, 1);
|
||||
this._dossiersService.setEntities([...dossiers]);
|
||||
},
|
||||
() => this._toaster.error(_('dossier-listing.delete.delete-failed'), { params: dossier })
|
||||
);
|
||||
}
|
||||
|
||||
async reloadActiveDossierFiles() {
|
||||
if (this._dossiersService.activeDossierId) {
|
||||
await this.getFiles();
|
||||
@ -576,62 +555,37 @@ export class AppStateService {
|
||||
|
||||
private _processFiles(dossier: Dossier, iFiles: IFile[], emitEvents = true) {
|
||||
const oldFiles = [...dossier.files];
|
||||
const fileAttributes = this._fileAttributesService.getFileAttributeConfig(dossier.dossierTemplateId);
|
||||
const newFiles = iFiles.map(iFile => new File(iFile, this._userService.getNameForId(iFile.currentReviewer), fileAttributes));
|
||||
|
||||
const fileChangedEvent: File[] = [];
|
||||
const fileReanalysedEvent: File[] = [];
|
||||
const lastOpenedFileId = this._userPreferenceService.getLastOpenedFileForDossier(dossier.id);
|
||||
newFiles.forEach(file => (file.lastOpened = file.fileId === lastOpenedFileId));
|
||||
|
||||
for (const iFile of iFiles) {
|
||||
for (const newFile of newFiles) {
|
||||
let found = false;
|
||||
|
||||
for (const oldFile of oldFiles) {
|
||||
if (oldFile.fileId === iFile.fileId) {
|
||||
if (oldFile.fileId === newFile.fileId) {
|
||||
// emit when analysis count changed
|
||||
const file = new File(
|
||||
iFile,
|
||||
this._userService.getNameForId(iFile.currentReviewer),
|
||||
this._fileAttributesService.getFileAttributeConfig(dossier.dossierTemplateId)
|
||||
);
|
||||
file.lastOpened = file.fileId === this._userPreferenceService.getLastOpenedFileForDossier(dossier.id);
|
||||
if (JSON.stringify(oldFile) !== JSON.stringify(file)) {
|
||||
fileChangedEvent.push(file);
|
||||
if (JSON.stringify(oldFile) !== JSON.stringify(newFile) && emitEvents) {
|
||||
this.fileChanged$.next(newFile);
|
||||
}
|
||||
if (oldFile.lastProcessed !== iFile.lastProcessed) {
|
||||
fileReanalysedEvent.push(file);
|
||||
if (oldFile.lastProcessed !== newFile.lastProcessed && emitEvents) {
|
||||
this.fileReanalysed$.next(newFile);
|
||||
}
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// emit for new file
|
||||
if (!found) {
|
||||
const file = new File(
|
||||
iFile,
|
||||
this._userService.getNameForId(iFile.currentReviewer),
|
||||
this._fileAttributesService.getFileAttributeConfig(dossier.dossierTemplateId)
|
||||
);
|
||||
fileChangedEvent.push(file);
|
||||
if (!found && emitEvents) {
|
||||
this.fileChanged$.next(newFile);
|
||||
}
|
||||
}
|
||||
|
||||
const files = iFiles.map(
|
||||
iFile =>
|
||||
new File(
|
||||
iFile,
|
||||
this._userService.getNameForId(iFile.currentReviewer),
|
||||
this._fileAttributesService.getFileAttributeConfig(dossier.dossierTemplateId)
|
||||
)
|
||||
);
|
||||
|
||||
const lastOpenedFileId = this._userPreferenceService.getLastOpenedFileForDossier(dossier.id);
|
||||
files.forEach(file => (file.lastOpened = file.fileId === lastOpenedFileId));
|
||||
const newDossier = new Dossier(dossier, files);
|
||||
const newDossier = new Dossier(dossier, newFiles);
|
||||
this._dossiersService.replace(newDossier);
|
||||
|
||||
if (emitEvents) {
|
||||
fileReanalysedEvent.forEach(file => this.fileReanalysed$.next(file));
|
||||
fileChangedEvent.forEach(file => this.fileChanged$.next(file));
|
||||
}
|
||||
|
||||
return files;
|
||||
return newFiles;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user