vidakovic commented on code in PR #5821:
URL: https://github.com/apache/fineract/pull/5821#discussion_r3235319523
##########
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:
The schema references won't be necessary if you remove the "hidden"
annotation... that was just in place before because of the string body variable
and to prevent it from show up in the API specification. Same for responses.
Please check the other REST endpoints for similar situations and fix were
needed.
--
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]