@@ -39,19 +39,25 @@ import { LinkService } from '../../../core/cache/builders/link.service';
3939import { EntityTypeDataService } from '../../../core/data/entity-type-data.service' ;
4040import { ItemDataService } from '../../../core/data/item-data.service' ;
4141import { ObjectUpdatesService } from '../../../core/data/object-updates/object-updates.service' ;
42+ import {
43+ DSPACE_OBJECT_DELETION_SCRIPT_NAME ,
44+ ScriptDataService ,
45+ } from '../../../core/data/processes/script-data.service' ;
4246import { RelationshipDataService } from '../../../core/data/relationship-data.service' ;
4347import { RemoteData } from '../../../core/data/remote-data' ;
4448import { Item } from '../../../core/shared/item.model' ;
4549import { Relationship } from '../../../core/shared/item-relationships/relationship.model' ;
4650import { RelationshipType } from '../../../core/shared/item-relationships/relationship-type.model' ;
4751import { MetadataValue } from '../../../core/shared/metadata.models' ;
48- import { NoContent } from '../../../core/shared/NoContent.model' ;
4952import {
5053 getFirstCompletedRemoteData ,
5154 getFirstSucceededRemoteData ,
5255 getRemoteDataPayload ,
5356} from '../../../core/shared/operators' ;
5457import { ViewMode } from '../../../core/shared/view-mode.model' ;
58+ import { getProcessDetailRoute } from '../../../process-page/process-page-routing.paths' ;
59+ import { Process } from '../../../process-page/processes/process.model' ;
60+ import { ProcessParameter } from '../../../process-page/processes/process-parameter.model' ;
5561import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive' ;
5662import {
5763 hasValue ,
@@ -172,6 +178,7 @@ export class ItemDeleteComponent
172178 protected relationshipService : RelationshipDataService ,
173179 protected entityTypeService : EntityTypeDataService ,
174180 protected linkService : LinkService ,
181+ protected scriptDataService : ScriptDataService , // AGGIUNTO
175182 ) {
176183 super (
177184 route ,
@@ -416,23 +423,18 @@ export class ItemDeleteComponent
416423 */
417424 performAction ( ) : void {
418425 this . isDeleting$ . next ( true ) ;
419- this . subs . push ( this . typeDTOs$ . pipe (
420- switchMap ( ( types : RelationshipTypeDTO [ ] ) =>
421- combineLatest (
422- types . map ( ( type : RelationshipTypeDTO ) => type . isSelected$ ) ,
423- ) . pipe (
424- defaultIfEmpty ( [ ] ) ,
425- map ( ( selection : boolean [ ] ) => types . filter (
426- ( type : RelationshipTypeDTO , index : number ) => selection [ index ] ,
427- ) ) ,
428- map ( ( selectedDtoTypes : RelationshipTypeDTO [ ] ) => selectedDtoTypes . map ( ( typeDto : RelationshipTypeDTO ) => typeDto . relationshipType . id ) ) ,
429- ) ,
430- ) ,
431- switchMap ( ( types : string [ ] ) => this . itemDataService . delete ( this . item . id , types ) ) ,
432- getFirstCompletedRemoteData ( ) ,
433- ) . subscribe ( ( rd : RemoteData < NoContent > ) => {
434- this . notify ( rd . hasSucceeded ) ;
435- } ) ) ;
426+ const parameterValues = [ Object . assign ( new ProcessParameter ( ) , { name : '-i' , value : this . item . uuid } ) ] ;
427+ this . scriptDataService . invoke ( DSPACE_OBJECT_DELETION_SCRIPT_NAME , parameterValues , [ ] )
428+ . pipe ( getFirstCompletedRemoteData ( ) )
429+ . subscribe ( ( rd : RemoteData < Process > ) => {
430+ if ( rd . hasSucceeded && rd . payload ) {
431+ this . notificationsService . success ( this . translateService . get ( 'item.edit.delete.success' ) ) ;
432+ this . router . navigateByUrl ( getProcessDetailRoute ( rd . payload . processId ) ) ;
433+ } else {
434+ this . notificationsService . error ( this . translateService . get ( 'item.edit.delete.error' ) ) ;
435+ this . router . navigate ( [ getItemEditRoute ( this . item ) ] ) ;
436+ }
437+ } ) ;
436438 }
437439
438440 /**
0 commit comments