Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Improvements:
to ensure notifications are returned in the correct language.
* [ODRC-101](https://openlmis.atlassian.net/browse/ODRC-101): Panel 'Number of Requisitions to be
created this month' on home page should not count emergency requisitions
* [OLMIS-7779](https://openlmis.atlassian.net/browse/OLMIS-7779): Add supplyingFacility query parameter to /api/requisitions/search.

Bug fixes:
* [MALAWISUP-7022](https://openlmis.atlassian.net/browse/MALAWISUP-7022): Fix /api/requisitions/search failing for users with many permissions (Postgres bind-parameter limit).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1016,6 +1016,7 @@ public void searchShouldUseSortProperties() {
RequisitionSearchParams searchParams = new DefaultRequisitionSearchParams(
requisitionToCopy.getFacilityId(), requisitionToCopy.getProgramId(),
requisitionToCopy.getProcessingPeriodId(), requisitionToCopy.getSupervisoryNodeId(),
null,
requisitionToCopy.getEmergency(), null, null, null, null,
EnumSet.of(requisitionToCopy.getStatus()));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public final class DefaultRequisitionSearchParams implements RequisitionSearchPa
private UUID program;
private UUID processingPeriod;
private UUID supervisoryNode;
private UUID supplyingFacility;

private Boolean emergency;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public interface RequisitionSearchParams {

UUID getSupervisoryNode();

UUID getSupplyingFacility();

Boolean getEmergency();

LocalDate getInitiatedDateFrom();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public class RequisitionRepositoryImpl
private static final String CREATED_DATE = "createdDate";
private static final String PROCESSING_PERIOD_ID = "processingPeriodId";
private static final String SUPERVISORY_NODE_ID = "supervisoryNodeId";
private static final String SUPPLYING_FACILITY_ID = "supplyingFacilityId";
private static final String AUTHORIZED_DATE = "authorizedDate";
private static final String MODIFIED_DATE = "modifiedDate";

Expand Down Expand Up @@ -476,6 +477,8 @@ private <T> CriteriaQuery<T> prepareQuery(CriteriaBuilder builder, CriteriaQuery
PROCESSING_PERIOD_ID, params.getProcessingPeriod());
predicate = addEqualFilter(predicate, builder, root,
SUPERVISORY_NODE_ID, params.getSupervisoryNode());
predicate = addEqualFilter(predicate, builder, root,
SUPPLYING_FACILITY_ID, params.getSupplyingFacility());
predicate = addInFilter(predicate, builder, root, STATUS, params.getRequisitionStatuses());
predicate = addEqualFilter(predicate, builder, root, EMERGENCY, params.getEmergency());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ private List<FacilityDto> getFacilitiesForTimelinessReport(
if (facility.getActive()) {
RequisitionSearchParams params = new DefaultRequisitionSearchParams(
facility.getId(), program.getId(), processingPeriod.getId(),
null, null, null, null, null, null, validStatuses);
null, null, null, null, null, null, null, validStatuses);

PageRequest pageRequest = PageRequest.of(Pagination.DEFAULT_PAGE_NUMBER,
Pagination.NO_PAGINATION);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,15 @@ final class QueryRequisitionSearchParams implements RequisitionSearchParams {
private static final String INITIATED_DATE_TO = "initiatedDateTo";
private static final String PROCESSING_PERIOD = "processingPeriod";
private static final String SUPERVISORY_NODE = "supervisoryNode";
private static final String SUPPLYING_FACILITY = "supplyingFacility";
private static final String REQUISITION_STATUS = "requisitionStatus";
private static final String EMERGENCY = "emergency";
private static final String MODIFIED_DATE_FROM = "modifiedDateFrom";
private static final String MODIFIED_DATE_TO = "modifiedDateTo";

private static final List<String> ALL_PARAMETERS = asList(FACILITY, PROGRAM, INITIATED_DATE_FROM,
INITIATED_DATE_TO, MODIFIED_DATE_FROM, MODIFIED_DATE_TO, PROCESSING_PERIOD,
SUPERVISORY_NODE, REQUISITION_STATUS, EMERGENCY);
SUPERVISORY_NODE, SUPPLYING_FACILITY, REQUISITION_STATUS, EMERGENCY);

private SearchParams queryParams;

Expand Down Expand Up @@ -146,6 +147,20 @@ public UUID getSupervisoryNode() {
return queryParams.getUuid(SUPERVISORY_NODE);
}

/**
* Gets {@link UUID} for "supplyingFacility" key from params.
*
* @return UUID value of supplyingFacility id
* or null if params doesn't contain "supplyingFacility" key.
*/
@Override
public UUID getSupplyingFacility() {
if (!queryParams.containsKey(SUPPLYING_FACILITY)) {
return null;
}
return queryParams.getUuid(SUPPLYING_FACILITY);
}

/**
* Gets {@link RequisitionStatus} for "requisitionStatus" key from params.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ public Page<RequisitionDto> getSubmittedRequisitions(Pageable pageable) {

profiler.start("SEARCH_REQUISITIONS");
RequisitionSearchParams params = new DefaultRequisitionSearchParams(
null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null,
EnumSet.of(RequisitionStatus.SUBMITTED));

Page<Requisition> submittedRequisitions = requisitionService
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/api-definition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,11 @@ resourceTypes:
type: string
required: false
repeat: false
supplyingFacility:
displayName: supplyingFacility
type: string
required: false
repeat: false
requisitionStatus:
displayName: supervisoryNode
type: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ private GeographicZoneDto mockGeographicZone(UUID districtId, String districtNam
(isMissingRnR) ? Collections.emptyList() : singletonList(mockRequisition));

RequisitionSearchParams params = new DefaultRequisitionSearchParams(
facilityId, program.getId(), period.getId(), null, null, null, null,
facilityId, program.getId(), period.getId(), null, null, null, null, null,
null, null, EnumSet.of(APPROVED, RELEASED, RELEASED_WITHOUT_ORDER));

when(requisitionService.searchRequisitions(eq(params), any()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1297,6 +1297,7 @@ public void shouldFindRequisitionIfItExists() {
RequisitionSearchParams params = new DefaultRequisitionSearchParams(
requisition.getFacilityId(), requisition.getProgramId(),
requisition.getProcessingPeriodId(), requisition.getSupervisoryNodeId(),
null,
requisition.getEmergency(), requisition.getCreatedDate().minusDays(2).toLocalDate(),
requisition.getCreatedDate().plusDays(2).toLocalDate(),
requisition.getModifiedDate().minusDays(2), requisition.getModifiedDate().plusDays(2),
Expand Down Expand Up @@ -1359,6 +1360,7 @@ public void searchShouldReturnEmptyListIfPermissionStringsIsEmptyAndUserHasNoRol
final RequisitionSearchParams params = new DefaultRequisitionSearchParams(
requisition.getFacilityId(), requisition.getProgramId(),
requisition.getProcessingPeriodId(), requisition.getSupervisoryNodeId(),
null,
requisition.getEmergency(), requisition.getCreatedDate().minusDays(2).toLocalDate(),
requisition.getCreatedDate().plusDays(2).toLocalDate(),
requisition.getModifiedDate().minusDays(2), requisition.getModifiedDate().plusDays(2),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class DefaultRequisitionSearchParamsDataBuilder implements
private UUID program;
private UUID processingPeriod;
private UUID supervisoryNode;
private UUID supplyingFacility;

private Boolean emergency;

Expand All @@ -52,6 +53,7 @@ public DefaultRequisitionSearchParams build() {
program,
processingPeriod,
supervisoryNode,
supplyingFacility,
emergency,
initiatedDateFrom,
initiatedDateTo,
Expand Down Expand Up @@ -81,6 +83,11 @@ public DefaultRequisitionSearchParamsDataBuilder withSupervisoryNode(UUID superv
return this;
}

public DefaultRequisitionSearchParamsDataBuilder withSupplyingFacility(UUID supplyingFacility) {
this.supplyingFacility = supplyingFacility;
return this;
}

public DefaultRequisitionSearchParamsDataBuilder withEmergency(Boolean emergency) {
this.emergency = emergency;
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public class QueryRequisitionSearchParamsTest
private static final String INITIATED_DATE_TO = "initiatedDateTo";
private static final String PROCESSING_PERIOD = "processingPeriod";
private static final String SUPERVISORY_NODE = "supervisoryNode";
private static final String SUPPLYING_FACILITY = "supplyingFacility";
private static final String REQUISITION_STATUS = "requisitionStatus";
private static final String EMERGENCY = "emergency";
private static final String MODIFIED_DATE_FROM = "modifiedDateFrom";
Expand Down Expand Up @@ -160,6 +161,21 @@ public void shouldGetNullIfMapHasNoSupervisoryNodeProperty() {
assertNull(params.getSupervisoryNode());
}

@Test
public void shouldGetSupplyingFacilityValueFromParameters() {
queryMap.add(SUPPLYING_FACILITY, id.toString());
QueryRequisitionSearchParams params = new QueryRequisitionSearchParams(queryMap);

assertEquals(id, params.getSupplyingFacility());
}

@Test
public void shouldGetNullIfMapHasNoSupplyingFacilityProperty() {
QueryRequisitionSearchParams params = new QueryRequisitionSearchParams(queryMap);

assertNull(params.getSupplyingFacility());
}

@Test
public void shouldGetRequisitionStatusValueFromParameters() {
queryMap.add(REQUISITION_STATUS, RequisitionStatus.APPROVED.toString());
Expand Down Expand Up @@ -262,6 +278,7 @@ protected Optional<QueryRequisitionSearchParams> getInstance() {
protected void prepare(ToStringVerifier<QueryRequisitionSearchParams> verifier) {
verifier.ignore("FACILITY", "PROGRAM", "INITIATED_DATE_FROM", "INITIATED_DATE_TO",
"MODIFIED_DATE_FROM", "MODIFIED_DATE_TO", "PROCESSING_PERIOD",
"SUPERVISORY_NODE", "REQUISITION_STATUS", "EMERGENCY", "ALL_PARAMETERS");
"SUPERVISORY_NODE", "SUPPLYING_FACILITY", "REQUISITION_STATUS", "EMERGENCY",
"ALL_PARAMETERS");
}
}
Loading