Skip to content

Commit d8f4498

Browse files
Re-added getScreenerFormPaths function
1 parent 992ec8b commit d8f4498

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

builder-api/src/main/java/org/acme/controller/ScreenerResource.java

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,8 @@
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.Optional;
31-
import org.acme.auth.AuthUtils;
32-
import org.acme.model.domain.*;
33-
import org.acme.model.dto.PublishScreenerRequest;
34-
import org.acme.model.dto.SaveSchemaRequest;
3531
import org.acme.model.dto.Screener.CreateScreenerRequest;
3632
import org.acme.model.dto.Screener.EditScreenerRequest;
37-
import org.acme.persistence.EligibilityCheckRepository;
38-
import org.acme.persistence.PublishedScreenerRepository;
39-
import org.acme.persistence.ScreenerRepository;
40-
import org.acme.persistence.StorageService;
41-
import org.acme.service.DmnService;
4233

4334
@Path("/api")
4435
public class ScreenerResource {
@@ -270,6 +261,40 @@ public Response deleteScreener(
270261
}
271262
}
272263

264+
/**
265+
* Returns the list of unique input paths required by all checks in a screener.
266+
* This endpoint transforms inputDefinition schemas and extracts paths,
267+
* replacing the frontend's transformInputDefinitionSchema and extractJsonSchemaPaths logic.
268+
*/
269+
@GET
270+
@Path("/screener/{screenerId}/form-paths")
271+
public Response getScreenerFormPaths(@Context SecurityIdentity identity,
272+
@PathParam("screenerId") String screenerId) {
273+
String userId = AuthUtils.getUserId(identity);
274+
275+
Optional<Screener> screenerOpt = screenerRepository.getWorkingScreener(screenerId);
276+
if (screenerOpt.isEmpty()) {
277+
throw new NotFoundException();
278+
}
279+
Screener screener = screenerOpt.get();
280+
281+
if (!isUserAuthorizedToAccessScreenerByScreener(userId, screener)) {
282+
return Response.status(Response.Status.UNAUTHORIZED).build();
283+
}
284+
285+
try {
286+
List<Benefit> benefits = screenerRepository.getBenefitsInScreener(screener);
287+
List<String> paths = new ArrayList<>(inputSchemaService.extractAllInputPaths(benefits));
288+
Collections.sort(paths);
289+
return Response.ok().entity(new FormPathsResponse(paths)).build();
290+
} catch (Exception e) {
291+
Log.error(e);
292+
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
293+
.entity(Map.of("error", "Could not extract form paths"))
294+
.build();
295+
}
296+
}
297+
273298
private boolean isUserAuthorizedToAccessScreener(String userId, String screenerId) {
274299
Optional<Screener> screenerOptional =
275300
screenerRepository.getWorkingScreenerMetaDataOnly(screenerId);

0 commit comments

Comments
 (0)