From 02188d73825faa8f7f566b55c31894bb0d7cfb09 Mon Sep 17 00:00:00 2001 From: Monica Date: Mon, 19 Jan 2026 11:49:13 +0530 Subject: [PATCH] FINERACT-2623: Add permission handling for center notes - Add CENTER enum value to NoteType - Add centerId field and withCenterId() method to CommandWrapperBuilder - Add CENTER case in NotesApiResource.getResourceDetails() - Enable separate permissions for Read, Create, Update, Delete center notes - Follows same permission pattern as existing GROUP notes --- .../fineract/commands/service/CommandWrapperBuilder.java | 6 ++++++ .../apache/fineract/portfolio/note/domain/NoteType.java | 1 + .../fineract/portfolio/note/api/NotesApiResource.java | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java index d2453dd9c57..ed8d59b349e 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java @@ -41,6 +41,7 @@ public class CommandWrapperBuilder { private Long clientId; private Long loanId; private Long savingsId; + private Long centerId; private String actionName; private String entityName; private Long entityId; @@ -203,6 +204,11 @@ public CommandWrapperBuilder withClientId(final Long withClientId) { return this; } + public CommandWrapperBuilder withCenterId(final Long centerId) { + this.centerId = centerId; + return this; + } + public CommandWrapperBuilder withGroupId(final Long withGroupId) { this.groupId = withGroupId; return this; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java index 19710b3bbca..082541c6fb8 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/note/domain/NoteType.java @@ -28,6 +28,7 @@ public enum NoteType { CLIENT(100, "noteType.client", "clients", "Client note"), // LOAN(200, "noteType.loan", "loans", "Loan note"), // LOAN_TRANSACTION(300, "noteType.loan.transaction", "loanTransactions", "Loan transaction note"), // + CENTER(400, "noteType.center", "centers", "Center note"), // SAVING_ACCOUNT(500, "noteType.saving", "savings", " account note"), // GROUP(600, "noteType.group", "groups", "Group note"), // SHARE_ACCOUNT(700, "noteType.shares", "accounts/share", "Share account note"), // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/api/NotesApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/api/NotesApiResource.java index 849997c0c9e..225a3727dac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/api/NotesApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/api/NotesApiResource.java @@ -65,6 +65,7 @@ public class NotesApiResource { public static final String LOANTRANSACTIONNOTE = "LOANTRANSACTIONNOTE"; public static final String SAVINGNOTE = "SAVINGNOTE"; public static final String GROUPNOTE = "GROUPNOTE"; + public static final String CENTERNOTE = "CENTERNOTE"; public static final String INVALIDNOTE = "INVALIDNOTE"; private static final Set NOTE_DATA_PARAMETERS = new HashSet<>( Arrays.asList("id", "resourceId", "clientId", "groupId", "loanId", "loanTransactionId", "depositAccountId", "savingAccountId", @@ -228,7 +229,11 @@ private CommandWrapper getResourceDetails(final NoteType type, final Long resour resourceNameForPermissions = GROUPNOTE; resourceDetails.withGroupId(resourceId); } - default -> resourceNameForPermissions = INVALIDNOTE; + case CENTER -> { + resourceNameForPermissions = CENTERNOTE; + resourceDetails.withCenterId(resourceId); + } + default -> throw new NoteResourceNotSupportedException(type.name()); } return resourceDetails.withEntityName(resourceNameForPermissions).build(); }