avivijay19 commented on code in PR #5821:
URL: https://github.com/apache/fineract/pull/5821#discussion_r3249726892


##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/api/ClientCollateralManagementApiResource.java:
##########
@@ -34,113 +34,96 @@
 import jakarta.ws.rs.PathParam;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.QueryParam;
-import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.UriInfo;
 import java.util.List;
 import lombok.RequiredArgsConstructor;
-import org.apache.fineract.commands.domain.CommandWrapper;
-import org.apache.fineract.commands.service.CommandWrapperBuilder;
-import 
org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
-import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
-import 
org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
-import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.command.core.CommandDispatcher;
+import 
org.apache.fineract.portfolio.collateralmanagement.command.ClientCollateralCreateCommand;
+import 
org.apache.fineract.portfolio.collateralmanagement.command.ClientCollateralDeleteCommand;
+import 
org.apache.fineract.portfolio.collateralmanagement.command.ClientCollateralUpdateCommand;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralCreateRequest;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralCreateResponse;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralDeleteRequest;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralDeleteResponse;
 import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralManagementData;
-import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralRequest;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralUpdateRequest;
+import 
org.apache.fineract.portfolio.collateralmanagement.data.ClientCollateralUpdateResponse;
 import 
org.apache.fineract.portfolio.collateralmanagement.data.LoanCollateralTemplateData;
-import 
org.apache.fineract.portfolio.collateralmanagement.data.UpdateClientCollateralRequest;
-import 
org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementReadPlatformService;
+import 
org.apache.fineract.portfolio.collateralmanagement.service.ClientCollateralManagementReadService;
 import org.springframework.stereotype.Component;
 
 @Path("/v1/clients/{clientId}/collaterals")
 @Component
 @Tag(name = "Client Collateral Management", description = "Client Collateral 
Management is for managing collateral operations")
 @RequiredArgsConstructor
+@Consumes({ MediaType.APPLICATION_JSON })
+@Produces({ MediaType.APPLICATION_JSON })
 public class ClientCollateralManagementApiResource {
 
-    private final DefaultToApiJsonSerializer<ClientCollateralManagementData> 
apiJsonSerializerDataService;
-    private final DefaultToApiJsonSerializer<LoanCollateralTemplateData> 
apiJsonSerializerForLoanCollateralTemplateService;
-    private final PortfolioCommandSourceWritePlatformService 
commandsSourceWritePlatformService;
-    private final PlatformSecurityContext context;
-    private final ClientCollateralManagementReadPlatformService 
clientCollateralManagementReadPlatformService;
+    private final CommandDispatcher dispatcher;
+    private final ClientCollateralManagementReadService 
clientCollateralManagementReadService;
 
     @GET
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Get Clients Collateral Products", operationId = 
"getClientCollateralProducts", description = "Get Collateral Product of a 
Client")
     public List<ClientCollateralManagementData> getClientCollateral(
-            @PathParam("clientId") @Parameter(description = "clientId") final 
Long clientId, @Context final UriInfo uriInfo,
+            @PathParam("clientId") @Parameter(description = "clientId") final 
Long clientId,
             @QueryParam("prodId") @Parameter(description = "prodId") final 
Long prodId) {
-
-        this.context.authenticatedUser()
-                
.validateHasReadPermission(CollateralManagementJsonInputParams.CLIENT_COLLATERAL_PRODUCT_READ_PERMISSION.getValue());
-
-        return 
this.clientCollateralManagementReadPlatformService.getClientCollaterals(clientId,
 prodId);
+        return 
this.clientCollateralManagementReadService.getClientCollaterals(clientId, 
prodId);
     }
 
     @GET
     @Path("{clientCollateralId}")
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Get Client Collateral Data", operationId = 
"getClientCollateralData", description = "Get Client Collateral Data")
     public ClientCollateralManagementData getClientCollateralData(
             @PathParam("clientId") @Parameter(description = "clientId") final 
Long clientId,
             @PathParam("clientCollateralId") @Parameter(description = 
"clientCollateralId") final Long collateralId) {
-
-        this.context.authenticatedUser()
-                
.validateHasReadPermission(CollateralManagementJsonInputParams.CLIENT_COLLATERAL_PRODUCT_READ_PERMISSION.getValue());
-
-        return 
this.clientCollateralManagementReadPlatformService.getClientCollateralManagementData(collateralId);
+        return 
this.clientCollateralManagementReadService.getClientCollateralManagementData(collateralId);
     }
 
     @GET
     @Path("template")
-    @Produces({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Get Client Collateral Template", operationId = 
"getClientCollateralTemplate", description = "Get Client Collateral Template")
     public List<LoanCollateralTemplateData> getClientCollateralTemplate(
             @PathParam("clientId") @Parameter(description = "clientId") final 
Long clientId) {
-        return 
this.clientCollateralManagementReadPlatformService.getLoanCollateralTemplate(clientId);
+        return 
this.clientCollateralManagementReadService.getLoanCollateralTemplate(clientId);
     }
 
     @POST
-    @Produces({ MediaType.APPLICATION_JSON })
-    @Consumes({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Add New Collateral For a Client", operationId = 
"addClientCollateral", description = "Add New Collateral For a Client")
-    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = ClientCollateralRequest.class)))
-    @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
ClientCollateralManagementApiResourceSwagger.PostClientCollateralResponse.class)))
-    public CommandProcessingResult addCollateral(@PathParam("clientId") 
@Parameter(description = "clientId") final Long clientId,
-            @Parameter(hidden = true) ClientCollateralRequest 
clientCollateralRequest) {
-        final CommandWrapper commandWrapper = new 
CommandWrapperBuilder().addClientCollateralProduct(clientId)
-                
.withJson(apiJsonSerializerDataService.serialize(clientCollateralRequest)).build();
-
-        return 
this.commandsSourceWritePlatformService.logCommandSource(commandWrapper);
+    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = ClientCollateralCreateRequest.class)))
+    @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
ClientCollateralCreateResponse.class)))
+    public ClientCollateralCreateResponse addCollateral(@PathParam("clientId") 
@Parameter(description = "clientId") final Long clientId,
+            @Parameter(hidden = true) ClientCollateralCreateRequest request) {
+        request.setClientId(clientId);
+        final var command = new ClientCollateralCreateCommand();
+        command.setPayload(request);
+        return dispatcher.<ClientCollateralCreateRequest, 
ClientCollateralCreateResponse>dispatch(command).get();
     }
 
     @PUT
     @Path("{collateralId}")
-    @Produces({ MediaType.APPLICATION_JSON })
-    @Consumes({ MediaType.APPLICATION_JSON })
     @Operation(summary = "Update New Collateral of a Client", operationId = 
"updateClientCollateral", description = "Update New Collateral of a Client")
-    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = UpdateClientCollateralRequest.class)))
-    @ApiResponse(responseCode = "200", description = "OK", content = 
@Content(schema = @Schema(implementation = 
ClientCollateralManagementApiResourceSwagger.PutClientCollateralResponse.class)))
-    public CommandProcessingResult updateCollateral(@PathParam("clientId") 
@Parameter(description = "clientId") final Long clientId,
+    @RequestBody(required = true, content = @Content(schema = 
@Schema(implementation = ClientCollateralUpdateRequest.class)))

Review Comment:
   updated



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to