diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResource.java b/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResource.java index 9febbfd9c..9fa37171b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResource.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.cob.api; +import com.google.gson.Gson; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.ArraySchema; @@ -29,6 +30,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -69,6 +71,20 @@ public class ConfigureBusinessStepResource { private final ConfigJobParameterService configJobParameterService; private final PortfolioCommandSourceWritePlatformService commandWritePlatformService; + @GET + @Path("/names") + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Business Jobs", description = "Returns the configured Business Jobs") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ConfigureBusinessStepResourceSwagger.GetBusinessJobConfigResponse.class)))) }) + public String retrieveAllConfiguredBusinessJobs(@Context final UriInfo uriInfo) { + + List businessJobNames = configJobParameterService.getAllConfiguredJobNames(); + final Gson gson = new Gson(); + + return gson.toJson(businessJobNames); + } + @GET @Path("{jobName}/steps") @Consumes({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResourceSwagger.java b/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResourceSwagger.java index e01a0884e..a8eaa97a6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResourceSwagger.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/api/ConfigureBusinessStepResourceSwagger.java @@ -27,6 +27,15 @@ final class ConfigureBusinessStepResourceSwagger { } + @Schema(description = "GetBusinessJobConfigResponse") + public static final class GetBusinessJobConfigResponse { + + private GetBusinessJobConfigResponse() {} + + public List businessJobs; + + } + @Schema(description = "GetBusinessStepConfigResponse") public static final class GetBusinessStepConfigResponse { diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStepRepository.java b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStepRepository.java index 76475e2a3..d68deb463 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStepRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/domain/BatchBusinessStepRepository.java @@ -21,8 +21,13 @@ package org.apache.fineract.cob.domain; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; public interface BatchBusinessStepRepository extends JpaRepository, JpaSpecificationExecutor { List findAllByJobName(String jobName); + + @Query("SELECT DISTINCT bbs.jobName FROM BatchBusinessStep bbs") + List findConfiguredJobNames(); + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterService.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterService.java index 25e082a34..b40c16e1f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterService.java @@ -18,6 +18,7 @@ */ package org.apache.fineract.cob.service; +import java.util.List; import org.apache.fineract.cob.data.JobBusinessStepConfigData; import org.apache.fineract.cob.data.JobBusinessStepDetail; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -30,4 +31,7 @@ public interface ConfigJobParameterService { CommandProcessingResult updateStepConfigByJobName(JsonCommand command, String jobName); JobBusinessStepDetail getAvailableBusinessStepsByJobName(String jobName); + + List getAllConfiguredJobNames(); + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterServiceImpl.java index 71c87911b..71405a472 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/ConfigJobParameterServiceImpl.java @@ -91,4 +91,10 @@ public class ConfigJobParameterServiceImpl implements ConfigJobParameterService jobBusinessStepDetail.setAvailableBusinessSteps(availableBusinessSteps); return jobBusinessStepDetail; } + + @Override + public List getAllConfiguredJobNames() { + return batchBusinessStepRepository.findConfiguredJobNames(); + } + }