From e4fa4a7b208dc04224aa21d5ac5abbed72ad6ea6 Mon Sep 17 00:00:00 2001 From: Britta Stallknecht Date: Thu, 5 Dec 2024 11:56:42 +0100 Subject: [PATCH] refactor: prepare reusability of code --- .../incoming/IncomingRequestsController.ts | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/consumption/src/modules/requests/incoming/IncomingRequestsController.ts b/packages/consumption/src/modules/requests/incoming/IncomingRequestsController.ts index 9a9e75718..3fe866045 100644 --- a/packages/consumption/src/modules/requests/incoming/IncomingRequestsController.ts +++ b/packages/consumption/src/modules/requests/incoming/IncomingRequestsController.ts @@ -292,18 +292,36 @@ export class IncomingRequestsController extends ConsumptionBaseController { params: (DecideRequestItemParametersJSON | DecideRequestItemGroupParametersJSON)[] ) { const fragmentsOfMustBeAcceptedItemsOfRequest: RelationshipAttributeFragment[] = []; - const fragmentsOfAcceptedItemsOfRequest: RelationshipAttributeFragment[] = []; for (let i = 0; i < params.length; i++) { const item = items[i]; - const decideItemParams = params[i]; if (item instanceof RequestItemGroup) { const fragmentsOfMustBeAcceptedItemsOfGroup = this.extractRelationshipAttributeFragmentsFromMustBeAcceptedItemsOfGroup(item); if (fragmentsOfMustBeAcceptedItemsOfGroup) { fragmentsOfMustBeAcceptedItemsOfRequest.push(...fragmentsOfMustBeAcceptedItemsOfGroup); } + } else { + const fragmentOfMustBeAcceptedRequestItem = this.extractRelationshipAttributeFragmentFromMustBeAcceptedRequestItem(item); + if (fragmentOfMustBeAcceptedRequestItem) { + fragmentsOfMustBeAcceptedItemsOfRequest.push(fragmentOfMustBeAcceptedRequestItem); + } + } + } + + if (IncomingRequestsController.containsDuplicateRelationshipAttributeFragments(fragmentsOfMustBeAcceptedItemsOfRequest)) { + throw ConsumptionCoreErrors.requests.violatedKeyUniquenessOfRelationshipAttributes( + "The Request can never be accepted because it would lead to the creation of more than one RelationshipAttribute in the context of this Relationship with the same key, owner and value type." + ); + } + const fragmentsOfAcceptedItemsOfRequest: RelationshipAttributeFragment[] = []; + + for (let i = 0; i < params.length; i++) { + const item = items[i]; + const decideItemParams = params[i]; + + if (item instanceof RequestItemGroup) { const fragmentsOfAcceptedItemsOfGroup = this.extractRelationshipAttributeFragmentsFromAcceptedItemsOfGroup( item, decideItemParams as DecideRequestItemGroupParametersJSON @@ -312,11 +330,6 @@ export class IncomingRequestsController extends ConsumptionBaseController { fragmentsOfAcceptedItemsOfRequest.push(...fragmentsOfAcceptedItemsOfGroup); } } else { - const fragmentOfMustBeAcceptedRequestItem = this.extractRelationshipAttributeFragmentFromMustBeAcceptedRequestItem(item); - if (fragmentOfMustBeAcceptedRequestItem) { - fragmentsOfMustBeAcceptedItemsOfRequest.push(fragmentOfMustBeAcceptedRequestItem); - } - const fragmentOfAcceptedRequestItem = this.extractRelationshipAttributeFragmentFromAcceptedRequestItem(item, decideItemParams as DecideRequestItemParametersJSON); if (fragmentOfAcceptedRequestItem) { fragmentsOfAcceptedItemsOfRequest.push(fragmentOfAcceptedRequestItem); @@ -324,11 +337,7 @@ export class IncomingRequestsController extends ConsumptionBaseController { } } - if (IncomingRequestsController.containsDuplicateRelationshipAttributeFragments(fragmentsOfMustBeAcceptedItemsOfRequest)) { - throw ConsumptionCoreErrors.requests.violatedKeyUniquenessOfRelationshipAttributes( - "The Request can never be accepted because it would lead to the creation of more than one RelationshipAttribute in the context of this Relationship with the same key, owner and value type." - ); - } else if (IncomingRequestsController.containsDuplicateRelationshipAttributeFragments(fragmentsOfAcceptedItemsOfRequest)) { + if (IncomingRequestsController.containsDuplicateRelationshipAttributeFragments(fragmentsOfAcceptedItemsOfRequest)) { return ValidationResult.error( ConsumptionCoreErrors.requests.invalidAcceptParameters( "The Request cannot be accepted with this parameters because it would lead to the creation of more than one RelationshipAttribute in the context of this Relationship with the same key, owner and value type."