FINERACT-2169: Refactor WorkingDaysApiResource - apply dto

This commit is contained in:
oleksandr.masliuk
2025-04-24 14:31:23 +02:00
committed by Adam Saghy
parent c069a6bf3c
commit 8eca8cbc8c
2 changed files with 20 additions and 26 deletions
@@ -20,7 +20,6 @@ package org.apache.fineract.organisation.workingdays.api;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.parameters.RequestBody;
@@ -32,16 +31,12 @@ import jakarta.ws.rs.GET;
import jakarta.ws.rs.PUT; import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path; import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces; import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.domain.CommandWrapper;
import org.apache.fineract.commands.service.CommandWrapperBuilder; import org.apache.fineract.commands.service.CommandWrapperBuilder;
import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService;
import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper;
import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.apache.fineract.organisation.workingdays.data.WorkingDaysData; import org.apache.fineract.organisation.workingdays.data.WorkingDaysData;
@@ -61,20 +56,14 @@ public class WorkingDaysApiResource {
private final WorkingDaysReadPlatformService workingDaysReadPlatformService; private final WorkingDaysReadPlatformService workingDaysReadPlatformService;
private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService;
private final PlatformSecurityContext context; private final PlatformSecurityContext context;
private final ApiRequestParameterHelper apiRequestParameterHelper;
@GET @GET
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
@Operation(summary = "List Working days", description = "Example Requests:\n" + "\n" + "workingdays") @Operation(summary = "List Working days", description = "Example Requests:\n" + "\n" + "workingdays")
@ApiResponses({ public WorkingDaysData retrieveAll() {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = WorkingDaysApiResourceSwagger.GetWorkingDaysResponse.class)))) })
public String retrieveAll(@Context final UriInfo uriInfo) {
this.context.authenticatedUser().validateHasReadPermission(WorkingDaysApiConstants.WORKING_DAYS_RESOURCE_NAME); this.context.authenticatedUser().validateHasReadPermission(WorkingDaysApiConstants.WORKING_DAYS_RESOURCE_NAME);
final WorkingDaysData workingDaysData = this.workingDaysReadPlatformService.retrieve(); return this.workingDaysReadPlatformService.retrieve();
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, workingDaysData);
} }
@PUT @PUT
@@ -102,14 +91,10 @@ public class WorkingDaysApiResource {
+ "\n" + "Example Request:\n" + "\n" + "workingdays/template") + "\n" + "Example Request:\n" + "\n" + "workingdays/template")
@ApiResponses({ @ApiResponses({
@ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = WorkingDaysApiResourceSwagger.GetWorkingDaysTemplateResponse.class))) }) @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = WorkingDaysApiResourceSwagger.GetWorkingDaysTemplateResponse.class))) })
public String template(@Context final UriInfo uriInfo) { public WorkingDaysData template() {
this.context.authenticatedUser().validateHasReadPermission(WorkingDaysApiConstants.WORKING_DAYS_RESOURCE_NAME); this.context.authenticatedUser().validateHasReadPermission(WorkingDaysApiConstants.WORKING_DAYS_RESOURCE_NAME);
final WorkingDaysData repaymentRescheduleOptions = this.workingDaysReadPlatformService.repaymentRescheduleType(); return this.workingDaysReadPlatformService.repaymentRescheduleType();
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, repaymentRescheduleOptions,
WorkingDaysApiConstants.WORKING_DAYS_TEMPLATE_PARAMETERS);
} }
} }
@@ -18,24 +18,33 @@
*/ */
package org.apache.fineract.organisation.workingdays.data; package org.apache.fineract.organisation.workingdays.data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.data.EnumOptionData;
public class WorkingDaysData { @Data
@NoArgsConstructor
public class WorkingDaysData implements Serializable {
private final Long id; @Serial
private static final long serialVersionUID = 1L;
private final String recurrence; private Long id;
private final EnumOptionData repaymentRescheduleType; private String recurrence;
private final Boolean extendTermForDailyRepayments; private EnumOptionData repaymentRescheduleType;
private final Boolean extendTermForRepaymentsOnHolidays; private Boolean extendTermForDailyRepayments;
private Boolean extendTermForRepaymentsOnHolidays;
// template date // template date
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Collection<EnumOptionData> repaymentRescheduleOptions; private Collection<EnumOptionData> repaymentRescheduleOptions;
public WorkingDaysData(Long id, String recurrence, EnumOptionData repaymentRescheduleType, Boolean extendTermForDailyRepayments, public WorkingDaysData(Long id, String recurrence, EnumOptionData repaymentRescheduleType, Boolean extendTermForDailyRepayments,
Boolean extendTermForRepaymentsOnHolidays) { Boolean extendTermForRepaymentsOnHolidays) {