vidakovic commented on code in PR #6013:
URL: https://github.com/apache/fineract/pull/6013#discussion_r3538144636
##########
fineract-rates/src/main/java/org/apache/fineract/portfolio/floatingrates/api/FloatingRatesApiResource.java:
##########
@@ -35,75 +35,75 @@
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import java.util.List;
+import java.util.function.Supplier;
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.floatingrates.command.FloatingRateCreateCommand;
+import
org.apache.fineract.portfolio.floatingrates.command.FloatingRateUpdateCommand;
+import
org.apache.fineract.portfolio.floatingrates.data.FloatingRateCreateResponse;
import org.apache.fineract.portfolio.floatingrates.data.FloatingRateData;
import org.apache.fineract.portfolio.floatingrates.data.FloatingRateRequest;
-import
org.apache.fineract.portfolio.floatingrates.service.FloatingRatesReadPlatformService;
+import
org.apache.fineract.portfolio.floatingrates.data.FloatingRateUpdateRequest;
+import
org.apache.fineract.portfolio.floatingrates.data.FloatingRateUpdateResponse;
+import
org.apache.fineract.portfolio.floatingrates.service.FloatingRatesReadService;
import org.springframework.stereotype.Component;
@Path("/v1/floatingrates")
+@Produces({ MediaType.APPLICATION_JSON })
@Component
@Tag(name = "Floating Rates", description = "It lets you create, list,
retrieve and upload the floating rates")
@RequiredArgsConstructor
public class FloatingRatesApiResource {
- private static final String RESOURCE_NAME = "FLOATINGRATE";
- private final PlatformSecurityContext context;
- private final PortfolioCommandSourceWritePlatformService
commandsSourceWritePlatformService;
- private final DefaultToApiJsonSerializer<FloatingRateData>
toApiJsonSerializer;
- private final FloatingRatesReadPlatformService
floatingRatesReadPlatformService;
+ private final CommandDispatcher dispatcher;
+ private final FloatingRatesReadService floatingRatesReadService;
@POST
@Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Create a new Floating Rate", operationId =
"createFloatingRate", description = "Creates a new Floating Rate\n"
+ "Mandatory Fields: name\n" + "Optional Fields:
isBaseLendingRate, isActive, ratePeriods")
@RequestBody(required = true, content = @Content(schema =
@Schema(implementation = FloatingRateRequest.class)))
@ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
FloatingRatesApiResourceSwagger.PostFloatingRatesResponse.class)))
- public CommandProcessingResult createFloatingRate(@Parameter(hidden =
true) final FloatingRateRequest floatingRateRequest) {
- final CommandWrapper commandRequest = new
CommandWrapperBuilder().createFloatingRate()
-
.withJson(toApiJsonSerializer.serialize(floatingRateRequest)).build();
- return
commandsSourceWritePlatformService.logCommandSource(commandRequest);
+ public FloatingRateCreateResponse createFloatingRate(@Parameter(hidden =
true) final FloatingRateRequest floatingRateRequest) {
+ final FloatingRateCreateCommand command = new
FloatingRateCreateCommand();
+ command.setPayload(floatingRateRequest);
+
+ final Supplier<FloatingRateCreateResponse> response =
dispatcher.dispatch(command);
+
+ return response.get();
}
@GET
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "List Floating Rates", operationId =
"retrieveAllFloatingRates", description = "Lists Floating Rates")
@ApiResponse(responseCode = "200", description = "OK", content =
@Content(array = @ArraySchema(schema = @Schema(implementation =
FloatingRatesApiResourceSwagger.GetFloatingRatesResponse.class))))
public List<FloatingRateData> retrieveAll() {
-
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME);
- return floatingRatesReadPlatformService.retrieveAll();
+ return floatingRatesReadService.retrieveAll();
}
@GET
@Path("{floatingRateId}")
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Retrieve Floating Rate", operationId =
"retrieveOneFloatingRate", description = "Retrieves Floating Rate")
public FloatingRateData retrieveOne(@PathParam("floatingRateId")
@Parameter(description = "floatingRateId") final Long floatingRateId) {
-
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME);
- return floatingRatesReadPlatformService.retrieveOne(floatingRateId);
+ return floatingRatesReadService.retrieveOne(floatingRateId);
}
@PUT
@Path("{floatingRateId}")
@Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "Update Floating Rate", operationId =
"updateFloatingRate", description = "Updates new Floating Rate. Rate Periods in
the past cannot be modified. All the future rateperiods would be replaced with
the new ratePeriods data sent.")
- @RequestBody(required = true, content = @Content(schema =
@Schema(implementation = FloatingRateRequest.class)))
+ @RequestBody(required = true, content = @Content(schema =
@Schema(implementation = FloatingRateUpdateRequest.class)))
@ApiResponse(responseCode = "200", description = "OK", content =
@Content(schema = @Schema(implementation =
FloatingRatesApiResourceSwagger.PutFloatingRatesFloatingRateIdResponse.class)))
Review Comment:
See previous comment about dummy classes.
--
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]