update dossier attributes service
This commit is contained in:
parent
f598bad151
commit
0ca1c3b536
@ -65,7 +65,7 @@ export class AddEditDossierAttributeDialogComponent extends AutoUnsubscribe impl
|
||||
...this.dossierAttributeForm.getRawValue(),
|
||||
};
|
||||
|
||||
this._dossierAttributesService.addOrUpdateConfig(attribute).subscribe(
|
||||
this._dossierAttributesService.createOrUpdate(attribute).subscribe(
|
||||
() => {
|
||||
this.dialogRef.close(true);
|
||||
},
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import { Component, forwardRef, Injector, OnInit } from '@angular/core';
|
||||
import {
|
||||
CircleButtonTypes,
|
||||
DefaultListingServices,
|
||||
DefaultListingServicesTmp,
|
||||
EntitiesService,
|
||||
IconButtonTypes,
|
||||
ListingComponent,
|
||||
LoadingService,
|
||||
@ -22,7 +23,8 @@ import { DossierTemplatesService } from '../../../dossier/services/dossier-templ
|
||||
templateUrl: './dossier-attributes-listing-screen.component.html',
|
||||
styleUrls: ['./dossier-attributes-listing-screen.component.scss'],
|
||||
providers: [
|
||||
...DefaultListingServices,
|
||||
...DefaultListingServicesTmp,
|
||||
{ provide: EntitiesService, useExisting: DossierAttributesService },
|
||||
{ provide: ListingComponent, useExisting: forwardRef(() => DossierAttributesListingScreenComponent) },
|
||||
],
|
||||
})
|
||||
@ -59,7 +61,7 @@ export class DossierAttributesListingScreenComponent extends ListingComponent<Do
|
||||
this._dialogService.openDialog('confirm', $event, null, async () => {
|
||||
this._loadingService.start();
|
||||
const ids = dossierAttribute ? [dossierAttribute.id] : this.listingService.selected.map(item => item.id);
|
||||
await this._dossierAttributesService.deleteConfigs(ids);
|
||||
await this._dossierAttributesService.delete(ids).toPromise();
|
||||
this.listingService.setSelected([]);
|
||||
await this._loadData();
|
||||
});
|
||||
@ -68,18 +70,14 @@ export class DossierAttributesListingScreenComponent extends ListingComponent<Do
|
||||
openAddEditAttributeDialog($event: MouseEvent, dossierAttribute?: IDossierAttributeConfig) {
|
||||
const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId;
|
||||
|
||||
this._dialogService.openDialog(
|
||||
'addEditDossierAttribute',
|
||||
$event,
|
||||
{ dossierAttribute, dossierTemplateId },
|
||||
async () => this._loadData(),
|
||||
this._dialogService.openDialog('addEditDossierAttribute', $event, { dossierAttribute, dossierTemplateId }, async () =>
|
||||
this._loadData(),
|
||||
);
|
||||
}
|
||||
|
||||
private async _loadData() {
|
||||
this._loadingService.start();
|
||||
const attributes = await this._dossierAttributesService.getConfig();
|
||||
this.entitiesService.setEntities(attributes);
|
||||
await this._dossierAttributesService.loadAll().toPromise();
|
||||
this._loadingService.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
|
||||
dossierAttributeId: attr.id,
|
||||
value: this.currentAttrValue(attr),
|
||||
}));
|
||||
await this._dossierAttributesService.setValues(this.dossier, dossierAttributeList);
|
||||
await this._dossierAttributesService.setAttributes(this.dossier, dossierAttributeList).toPromise();
|
||||
await this._loadAttributes();
|
||||
this.updateDossier.emit();
|
||||
this._loadingService.stop();
|
||||
@ -134,7 +134,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa
|
||||
}
|
||||
|
||||
private async _loadAttributes() {
|
||||
this.attributes = await this._dossierAttributesService.getValues(this.dossier);
|
||||
this.attributes = await this._dossierAttributesService.getWithValues(this.dossier);
|
||||
this.customAttributes = this.attributes.filter(attr => !this.isImage(attr));
|
||||
this.imageAttributes = this.attributes.filter(attr => this.isImage(attr));
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ export class DossierOverviewScreenComponent extends ListingComponent<File> imple
|
||||
.pipe(tap(index => (this._lastScrolledIndex = index)))
|
||||
.subscribe();
|
||||
|
||||
this.dossierAttributes = await this._dossierAttributesService.getValues(this.currentDossier);
|
||||
this.dossierAttributes = await this._dossierAttributesService.getWithValues(this.currentDossier);
|
||||
} catch (e) {
|
||||
console.log('Error from dossier overview screen: ', e);
|
||||
} finally {
|
||||
|
||||
@ -1,50 +1,67 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { DossierAttribute, DossierAttributes, DossierAttributesControllerService, IDossierAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { Injectable, Injector } from '@angular/core';
|
||||
import { DossierAttribute, DossierAttributes, DossierAttributesConfig, IDossierAttributeConfig } from '@redaction/red-ui-http';
|
||||
import { Dossier } from '@state/model/dossier';
|
||||
import { DossierAttributeWithValue } from '@models/dossier-attributes.model';
|
||||
import { Observable } from 'rxjs';
|
||||
import { DossierAttributeConfig } from '@state/model/dossier-attribute-config';
|
||||
import { DossierTemplatesService } from '../../../dossier/services/dossier-templates.service';
|
||||
import { EntitiesService, List, mapEach, RequiredParam, Validate } from '@iqser/common-ui';
|
||||
import { map, tap } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class DossierAttributesService {
|
||||
constructor(
|
||||
private readonly _dossierAttributesControllerService: DossierAttributesControllerService,
|
||||
private readonly _dossierTemplatesService: DossierTemplatesService,
|
||||
) {}
|
||||
export class DossierAttributesService extends EntitiesService<DossierAttributeConfig, IDossierAttributeConfig> {
|
||||
constructor(private readonly _dossierTemplatesService: DossierTemplatesService, protected readonly _injector: Injector) {
|
||||
super(_injector, DossierAttributeConfig, 'dossier-attributes');
|
||||
}
|
||||
|
||||
async getValues(dossier: Dossier): Promise<DossierAttributeWithValue[]> {
|
||||
const attributes = await this._dossierAttributesControllerService.getDossierAttributes(dossier.id).toPromise();
|
||||
const attributesConfig = await this._dossierAttributesControllerService
|
||||
.getDossierAttributesConfig(dossier.dossierTemplateId)
|
||||
.toPromise();
|
||||
async getWithValues(dossier: Dossier): Promise<DossierAttributeWithValue[]> {
|
||||
const attributes = await this.getAttributes(dossier.id).toPromise();
|
||||
const attributesConfig = await this.getConfig(dossier.dossierTemplateId).toPromise();
|
||||
|
||||
return attributesConfig.dossierAttributeConfigs.map(config => ({
|
||||
return attributesConfig.map(config => ({
|
||||
...config,
|
||||
value: attributes.dossierAttributeList.find(attr => attr.dossierAttributeConfigId === config.id)?.value,
|
||||
value: attributes.find(attr => attr.dossierAttributeConfigId === config.id)?.value,
|
||||
}));
|
||||
}
|
||||
|
||||
setValues(dossier: Dossier, dossierAttributeList: DossierAttribute[]): Promise<DossierAttributes> {
|
||||
return this._dossierAttributesControllerService.setDossierAttributes({ dossierAttributeList }, dossier.id).toPromise();
|
||||
@Validate()
|
||||
setAttributes(
|
||||
@RequiredParam() dossier: Dossier,
|
||||
@RequiredParam() dossierAttributeList: List<DossierAttribute>,
|
||||
): Observable<DossierAttributes> {
|
||||
return this._post({ dossierAttributeList }, `${this._defaultModelPath}/set/${dossier.id}`);
|
||||
}
|
||||
|
||||
deleteConfigs(ids: string[], dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId): Promise<void> {
|
||||
return this._dossierAttributesControllerService.deleteDossierAttributesConfig(ids, dossierTemplateId).toPromise();
|
||||
@Validate()
|
||||
delete(@RequiredParam() ids: List, dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId): Observable<unknown> {
|
||||
return this._post(ids, `${this._defaultModelPath}/config/delete/${dossierTemplateId}`);
|
||||
}
|
||||
|
||||
async getConfig(dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId): Promise<DossierAttributeConfig[]> {
|
||||
const config$ = this._dossierAttributesControllerService.getDossierAttributesConfig(dossierTemplateId);
|
||||
const result = (await config$.toPromise())?.dossierAttributeConfigs || [];
|
||||
return result.map(item => new DossierAttributeConfig(item));
|
||||
loadAll(dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId): Observable<DossierAttributeConfig[]> {
|
||||
return this.getConfig(dossierTemplateId).pipe(
|
||||
map(entities => entities ?? []),
|
||||
mapEach(entity => new DossierAttributeConfig(entity)),
|
||||
tap(entities => this.setEntities(entities)),
|
||||
);
|
||||
}
|
||||
|
||||
addOrUpdateConfig(
|
||||
attribute: IDossierAttributeConfig,
|
||||
@Validate()
|
||||
createOrUpdate(
|
||||
@RequiredParam() attributeConfig: IDossierAttributeConfig,
|
||||
dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId,
|
||||
): Observable<IDossierAttributeConfig> {
|
||||
return this._dossierAttributesControllerService.addOrUpdateDossierAttributesConfig(attribute, dossierTemplateId);
|
||||
return this._post(attributeConfig, `${this._defaultModelPath}/config/${dossierTemplateId}`);
|
||||
}
|
||||
|
||||
@Validate()
|
||||
getConfig(@RequiredParam() dossierTemplateId: string): Observable<List<IDossierAttributeConfig>> {
|
||||
return this._getOne<DossierAttributesConfig>(['config', dossierTemplateId]).pipe(map(res => res.dossierAttributeConfigs));
|
||||
}
|
||||
|
||||
@Validate()
|
||||
getAttributes(@RequiredParam() dossierId: string): Observable<List<DossierAttribute>> {
|
||||
return this._getOne<DossierAttributes>([dossierId]).pipe(map(res => res.dossierAttributeList));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 5f13775ec92d519bc2d27d16bb1c156987c96c87
|
||||
Subproject commit 7ab565de6c1bf458c2399e945180e175dbeb5d6e
|
||||
@ -1,7 +1,6 @@
|
||||
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
|
||||
import { Configuration } from './configuration';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { DossierAttributesControllerService } from './api/dossierAttributesController.service';
|
||||
import { DownloadControllerService } from './api/downloadController.service';
|
||||
import { FileManagementControllerService } from './api/fileManagementController.service';
|
||||
import { GeneralSettingsControllerService } from './api/generalSettingsController.service';
|
||||
@ -27,7 +26,6 @@ import { StatusReportControllerService } from './api/statusReportController.serv
|
||||
declarations: [],
|
||||
exports: [],
|
||||
providers: [
|
||||
DossierAttributesControllerService,
|
||||
DownloadControllerService,
|
||||
FileManagementControllerService,
|
||||
GeneralSettingsControllerService,
|
||||
|
||||
@ -10,7 +10,8 @@
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
import { IDossierAttributeConfig } from './dossierAttributeConfig';
|
||||
import { List } from '../red-types';
|
||||
|
||||
export interface DossierAttributesConfig {
|
||||
dossierAttributeConfigs?: Array<IDossierAttributeConfig>;
|
||||
dossierAttributeConfigs: List<IDossierAttributeConfig>;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user