mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-17 15:03:07 +00:00
[CST-9636] Added state transformer to file model, added tests for bulk access control service
This commit is contained in:
@@ -2,15 +2,16 @@ import { Injectable } from '@angular/core';
|
||||
|
||||
import { ScriptDataService } from '../../core/data/processes/script-data.service';
|
||||
import { ProcessParameter } from '../../process-page/processes/process-parameter.model';
|
||||
import { AccessControlFormState } from './access-control-form-container.component';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class BulkAccessControlService {
|
||||
constructor(private scriptService: ScriptDataService) {}
|
||||
|
||||
createPayloadFile(payload: any) {
|
||||
console.log('execute', payload);
|
||||
createPayloadFile(payload: { state: AccessControlFormState, bitstreamAccess, itemAccess }) {
|
||||
const content = convertToBulkAccessControlFileModel(payload);
|
||||
|
||||
const blob = new Blob([JSON.stringify(payload, null, 2)], {
|
||||
const blob = new Blob([JSON.stringify(content, null, 2)], {
|
||||
type: 'application/json',
|
||||
});
|
||||
|
||||
@@ -34,3 +35,43 @@ export class BulkAccessControlService {
|
||||
return this.scriptService.invoke('bulk-access-control', params, [file]);
|
||||
}
|
||||
}
|
||||
|
||||
export const convertToBulkAccessControlFileModel = (payload: { state: AccessControlFormState, bitstreamAccess: AccessCondition[], itemAccess: AccessCondition[] }): BulkAccessControlFileModel => {
|
||||
const constraints = { uuid: [] };
|
||||
|
||||
if (payload.state.bitstream.changesLimit === 'selected') {
|
||||
// @ts-ignore
|
||||
constraints.uuid = payload.state.bitstream.selectedBitstreams.map((x) => x.id);
|
||||
}
|
||||
|
||||
return {
|
||||
item: {
|
||||
mode: payload.state.item.accessMode,
|
||||
accessConditions: payload.itemAccess
|
||||
},
|
||||
bitstream: {
|
||||
constraints,
|
||||
mode: payload.state.bitstream.accessMode,
|
||||
accessConditions: payload.bitstreamAccess
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
export interface BulkAccessControlFileModel {
|
||||
item: {
|
||||
mode: string;
|
||||
accessConditions: AccessCondition[];
|
||||
},
|
||||
bitstream: {
|
||||
constraints: { uuid: string[] };
|
||||
mode: string;
|
||||
accessConditions: AccessCondition[];
|
||||
}
|
||||
}
|
||||
|
||||
interface AccessCondition {
|
||||
name: string;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
}
|
||||
|
Reference in New Issue
Block a user