From 4db64351b75b850a42f1f20c7c52b186d163aad2 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 24 Oct 2025 15:50:09 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20autoriser=20la=20suppression=20quand=20?= =?UTF-8?q?seuls=20les=20champs=20personnalis=C3=A9s=20restent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/composants/composants.service.ts | 31 ++++++++++++++++++++-------- src/pieces/pieces.service.ts | 31 ++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/composants/composants.service.ts b/src/composants/composants.service.ts index bbb4090..24f73ae 100644 --- a/src/composants/composants.service.ts +++ b/src/composants/composants.service.ts @@ -138,18 +138,31 @@ export class ComposantsService { `${documentsCount} document${documentsCount > 1 ? 's' : ''}`, ); } - if (customFieldValuesCount > 0) { - blockingReasons.push( - `${customFieldValuesCount} valeur${customFieldValuesCount > 1 ? 's' : ''} de champ personnalisé`, + + if (blockingReasons.length > 0) { + const messageParts = [ + `Impossible de supprimer ce composant car il possède encore: ${blockingReasons.join( + ', ', + )}.`, + ]; + + if (customFieldValuesCount > 0) { + messageParts.push( + `Les ${customFieldValuesCount} valeur${ + customFieldValuesCount > 1 ? 's' : '' + } de champ personnalisé seront supprimées automatiquement une fois ces éléments détachés.`, + ); + } + + throw new ConflictException( + `${messageParts.join(' ')} Supprimez ou détachez les éléments indiqués avant de réessayer.`, ); } - if (blockingReasons.length > 0) { - throw new ConflictException( - `Impossible de supprimer ce composant car il possède encore: ${blockingReasons.join( - ', ', - )}. Supprimez ou détachez ces éléments avant de réessayer.`, - ); + if (customFieldValuesCount > 0) { + await this.prisma.customFieldValue.deleteMany({ + where: { composantId: id }, + }); } return this.prisma.composant.delete({ diff --git a/src/pieces/pieces.service.ts b/src/pieces/pieces.service.ts index 4a6838e..8bcfbed 100644 --- a/src/pieces/pieces.service.ts +++ b/src/pieces/pieces.service.ts @@ -162,18 +162,31 @@ export class PiecesService { `${documentsCount} document${documentsCount > 1 ? 's' : ''}`, ); } - if (customFieldValuesCount > 0) { - blockingReasons.push( - `${customFieldValuesCount} valeur${customFieldValuesCount > 1 ? 's' : ''} de champ personnalisé`, + + if (blockingReasons.length > 0) { + const messageParts = [ + `Impossible de supprimer cette pièce car elle possède encore: ${blockingReasons.join( + ', ', + )}.`, + ]; + + if (customFieldValuesCount > 0) { + messageParts.push( + `Les ${customFieldValuesCount} valeur${ + customFieldValuesCount > 1 ? 's' : '' + } de champ personnalisé seront supprimées automatiquement une fois ces éléments détachés.`, + ); + } + + throw new ConflictException( + `${messageParts.join(' ')} Supprimez ou détachez les éléments indiqués avant de réessayer.`, ); } - if (blockingReasons.length > 0) { - throw new ConflictException( - `Impossible de supprimer cette pièce car elle possède encore: ${blockingReasons.join( - ', ', - )}. Supprimez ou détachez ces éléments avant de réessayer.`, - ); + if (customFieldValuesCount > 0) { + await this.prisma.customFieldValue.deleteMany({ + where: { pieceId: id }, + }); } return this.prisma.piece.delete({