Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,15 @@ public static SavingsAccountTransactionEnumData transactionType(final SavingsAcc
return optionData;
}

public static EnumOptionData status(final SavingsAccountStatusEnumData status) {

Long id = status.getId();
String code = status.getCode();
String value = status.getValue();

return new EnumOptionData(id, code, value);
}

public static SavingsAccountStatusEnumData status(final Integer statusEnum) {
return status(SavingsAccountStatusType.fromInt(statusEnum));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,15 @@
import org.apache.fineract.portfolio.loanproduct.data.LoanProductData;
import org.apache.fineract.portfolio.loanproduct.service.LoanEnumerations;
import org.apache.fineract.portfolio.loanproduct.service.LoanProductReadPlatformService;
import org.apache.fineract.portfolio.savings.data.SavingsAccountStatusEnumData;
import org.apache.fineract.portfolio.savings.service.SavingsEnumerations;
import org.apache.fineract.portfolio.search.SearchConstants;
import org.apache.fineract.portfolio.search.data.AdHocQuerySearchConditions;
import org.apache.fineract.portfolio.search.data.AdHocSearchQueryData;
import org.apache.fineract.portfolio.search.data.SearchConditions;
import org.apache.fineract.portfolio.search.data.SearchData;
import org.apache.fineract.portfolio.shareaccounts.data.ShareAccountStatusEnumData;
import org.apache.fineract.portfolio.shareaccounts.service.SharesEnumerations;
import org.apache.fineract.useradministration.domain.AppUser;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
Expand Down Expand Up @@ -165,16 +168,20 @@ public SearchData mapRow(final ResultSet rs, @SuppressWarnings("unused") final i

if (entityType.equalsIgnoreCase("client") || entityType.equalsIgnoreCase("clientidentifier")) {
entityStatus = ClientEnumerations.status(entityStatusEnum);
}

else if (entityType.equalsIgnoreCase("group") || entityType.equalsIgnoreCase("center")) {
} else if (entityType.equalsIgnoreCase("group") || entityType.equalsIgnoreCase("center")) {
entityStatus = GroupingTypeEnumerations.status(entityStatusEnum);
}

else if (entityType.equalsIgnoreCase("loan")) {
} else if (entityType.equalsIgnoreCase("loan")) {
LoanStatusEnumData loanStatusEnumData = LoanEnumerations.status(entityStatusEnum);

entityStatus = LoanEnumerations.status(loanStatusEnumData);
} else if (entityType.equalsIgnoreCase("saving")) {
SavingsAccountStatusEnumData savingsAccountStatusEnumData = SavingsEnumerations.status(entityStatusEnum);

entityStatus = SavingsEnumerations.status(savingsAccountStatusEnumData);
} else if (entityType.equalsIgnoreCase("share")) {
ShareAccountStatusEnumData shareAccountStatusEnumData = SharesEnumerations.status(entityStatusEnum);

entityStatus = SharesEnumerations.status(shareAccountStatusEnumData);
}

return new SearchData(entityId, entityAccountNo, entityExternalId, entityName, entityType, parentId, parentName, parentType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ private SharesEnumerations() {

}

public static EnumOptionData status(final ShareAccountStatusEnumData status) {

Long id = status.getId();
String code = status.getCode();
String value = status.getValue();

return new EnumOptionData(id, code, value);
}

public static ShareAccountStatusEnumData status(final Integer statusEnum) {
return status(ShareAccountStatusType.fromInt(statusEnum));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,18 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.fineract.client.models.GetClientsClientIdResponse;
import org.apache.fineract.client.models.GetSearchResponse;
import org.apache.fineract.client.models.PostClientsResponse;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.SearchHelper;
import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.integrationtests.common.savings.SavingsAccountHelper;
import org.apache.fineract.integrationtests.common.shares.ShareAccountHelper;
import org.apache.fineract.integrationtests.common.shares.ShareAccountTransactionHelper;
import org.apache.fineract.integrationtests.common.shares.ShareProductHelper;
import org.apache.fineract.integrationtests.common.shares.ShareProductTransactionHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -102,6 +108,83 @@ public void searchAnyValueOverLoanResources() {
assertEquals(0, searchResponse.size());
}

@Test
public void searchOverSavingsResources() {
final List<String> resources = Arrays.asList("savings");

String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null);
final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload);
final Long clientId = clientResponse.getClientId();

final Integer savingsId = SavingsAccountHelper.openSavingsAccount(requestSpec, responseSpec, clientId.intValue(), "1000");
final SavingsAccountHelper savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);
final String query = (String) savingsAccountHelper.getSavingsAccountDetail(savingsId, "accountNo");

final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.FALSE,
getResources(resources));

assertNotNull(searchResponse);
assertEquals(1, searchResponse.size());

final GetSearchResponse result = searchResponse.getFirst();

assertEquals("SAVING", result.getEntityType());
assertNotNull(result.getEntityStatus());
assertNotNull(result.getEntityStatus().getId());
assertNotNull(result.getEntityStatus().getCode());
assertNotNull(result.getEntityStatus().getValue());
}

@Test
public void searchOverSharesResources() {
final List<String> resources = Arrays.asList("shares");

String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null);
final PostClientsResponse clientsResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload);
final Long clientId = clientsResponse.getClientId();

final ShareProductHelper shareProductHelper = new ShareProductHelper();
final Integer productId = ShareProductTransactionHelper.createShareProduct(shareProductHelper.build(), requestSpec, responseSpec);

final Integer savingsId = SavingsAccountHelper.openSavingsAccount(requestSpec, responseSpec, clientId.intValue(), "1000");

final String shareJson = new ShareAccountHelper().withClientId(String.valueOf(clientId)).withProductId(String.valueOf(productId))
.withSavingsAccountId(String.valueOf(savingsId)).withSubmittedDate("01 January 2026").withApplicationDate("01 January 2026")
.withRequestedShares("10").build();

final Integer shareAccountId = ShareAccountTransactionHelper.createShareAccount(shareJson, requestSpec, responseSpec);

final String approveJson = "{}";
ShareAccountTransactionHelper.postCommand("approve", shareAccountId, approveJson, requestSpec, responseSpec);

final String activateJson = """
{
"activatedDate": "01 January 2026",
"dateFormat": "dd MMMM yyyy",
"locale": "en"
}
""";
ShareAccountTransactionHelper.postCommand("activate", shareAccountId, activateJson, requestSpec, responseSpec);

final Map<String, Object> shareAccountData = ShareAccountTransactionHelper.retrieveShareAccount(shareAccountId, requestSpec,
responseSpec);
final String query = (String) shareAccountData.get("accountNo");

final ArrayList<GetSearchResponse> searchResponse = SearchHelper.getSearch(requestSpec, responseSpec, query, Boolean.FALSE,
getResources(resources));

assertNotNull(searchResponse);
assertEquals(1, searchResponse.size());

final GetSearchResponse result = searchResponse.getFirst();

assertEquals("SHARE", result.getEntityType());
assertNotNull(result.getEntityStatus());
assertNotNull(result.getEntityStatus().getId());
assertNotNull(result.getEntityStatus().getCode());
assertNotNull(result.getEntityStatus().getValue());
}

private String getResources(final List<String> resources) {
return String.join(",", resources);
}
Expand Down
Loading