FINERACT-2169: Refactor client family member api;

This commit is contained in:
viktorpavlenko
2025-04-23 10:57:50 +02:00
committed by Adam Saghy
parent c0c7b45700
commit 241906e042
5 changed files with 83 additions and 72 deletions
@@ -29,22 +29,16 @@ import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriInfo;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.apache.fineract.commands.domain.CommandWrapper;
import org.apache.fineract.commands.service.CommandWrapperBuilder;
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.serialization.ApiRequestJsonSerializationSettings;
import org.apache.fineract.infrastructure.core.serialization.ToApiJsonSerializer;
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
import org.apache.fineract.portfolio.client.data.ClientFamilyMemberRequest;
import org.apache.fineract.portfolio.client.data.ClientFamilyMembersData;
import org.apache.fineract.portfolio.client.service.ClientFamilyMembersReadPlatformService;
import org.springframework.stereotype.Component;
@@ -55,100 +49,74 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
public class ClientFamilyMembersApiResource {
private static final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<>(Arrays.asList("id", "clientId", "firstName", "middleName",
"lastName", "qualification", "relationship", "maritalStatus", "gender", "dateOfBirth", "profession", "clientFamilyMemberId"));
private static final String RESOURCE_NAME_FOR_PERMISSIONS = "FamilyMembers";
private final PlatformSecurityContext context;
private final ClientFamilyMembersReadPlatformService readPlatformService;
private final ToApiJsonSerializer<ClientFamilyMembersData> toApiJsonSerializer;
private final ApiRequestParameterHelper apiRequestParameterHelper;
private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService;
@GET
@Path("/{familyMemberId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String getFamilyMember(@Context final UriInfo uriInfo, @PathParam("familyMemberId") final Long familyMemberId,
public ClientFamilyMembersData getFamilyMember(@PathParam("familyMemberId") final Long familyMemberId,
@PathParam("clientId") @Parameter(description = "clientId") final Long clientId) {
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
final ClientFamilyMembersData familyMembers = this.readPlatformService.getClientFamilyMember(familyMemberId);
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, familyMembers, RESPONSE_DATA_PARAMETERS);
return this.readPlatformService.getClientFamilyMember(familyMemberId);
}
@GET
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String getFamilyMembers(@Context final UriInfo uriInfo, @PathParam("clientId") final long clientId) {
public List<ClientFamilyMembersData> getFamilyMembers(@PathParam("clientId") final long clientId) {
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
final Collection<ClientFamilyMembersData> familyMembers = this.readPlatformService.getClientFamilyMembers(clientId);
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, familyMembers, RESPONSE_DATA_PARAMETERS);
return this.readPlatformService.getClientFamilyMembers(clientId);
}
@GET
@Path("/template")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String getTemplate(@Context final UriInfo uriInfo, @PathParam("clientId") final long clientId) {
public ClientFamilyMembersData getTemplate(@PathParam("clientId") final long clientId) {
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
final ClientFamilyMembersData options = this.readPlatformService.retrieveTemplate();
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, options, RESPONSE_DATA_PARAMETERS);
return this.readPlatformService.retrieveTemplate();
}
@PUT
@Path("/{familyMemberId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String updateClientFamilyMembers(@PathParam("familyMemberId") final long familyMemberId, final String apiRequestBodyAsJson,
public CommandProcessingResult updateClientFamilyMembers(@PathParam("familyMemberId") final long familyMemberId,
ClientFamilyMemberRequest clientFamilyMemberRequest,
@PathParam("clientId") @Parameter(description = "clientId") final Long clientId) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateFamilyMembers(familyMemberId)
.withJson(toApiJsonSerializer.serialize(clientFamilyMemberRequest)).build();
final CommandWrapper commandRequest = new CommandWrapperBuilder().updateFamilyMembers(familyMemberId).withJson(apiRequestBodyAsJson)
.build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
return this.toApiJsonSerializer.serialize(result);
return this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
}
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String addClientFamilyMembers(@PathParam("clientId") final long clientid, final String apiRequestBodyAsJson) {
public CommandProcessingResult addClientFamilyMembers(@PathParam("clientId") final long clientid,
ClientFamilyMemberRequest clientFamilyMemberRequest) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().addFamilyMembers(clientid)
.withJson(toApiJsonSerializer.serialize(clientFamilyMemberRequest)).build();
final CommandWrapper commandRequest = new CommandWrapperBuilder().addFamilyMembers(clientid).withJson(apiRequestBodyAsJson).build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
return this.toApiJsonSerializer.serialize(result);
return this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
}
@DELETE
@Path("/{familyMemberId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String deleteClientFamilyMembers(@PathParam("familyMemberId") final long familyMemberId, final String apiRequestBodyAsJson,
public CommandProcessingResult deleteClientFamilyMembers(@PathParam("familyMemberId") final long familyMemberId,
@PathParam("clientId") @Parameter(description = "clientId") final Long clientId) {
final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteFamilyMembers(familyMemberId).build();
final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteFamilyMembers(familyMemberId).withJson(apiRequestBodyAsJson)
.build();
final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
return this.toApiJsonSerializer.serialize(result);
return this.commandsSourceWritePlatformService.logCommandSource(commandRequest);
}
}
@@ -19,12 +19,12 @@
package org.apache.fineract.portfolio.client.service;
import java.util.Collection;
import java.util.List;
import org.apache.fineract.portfolio.client.data.ClientFamilyMembersData;
public interface ClientFamilyMembersReadPlatformService {
Collection<ClientFamilyMembersData> getClientFamilyMembers(long clientId);
List<ClientFamilyMembersData> getClientFamilyMembers(long clientId);
ClientFamilyMembersData getClientFamilyMember(long id);
@@ -22,7 +22,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.fineract.infrastructure.codes.data.CodeValueData;
import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService;
@@ -91,7 +90,7 @@ public class ClientFamilyMembersReadPlatformServiceImpl implements ClientFamilyM
}
@Override
public Collection<ClientFamilyMembersData> getClientFamilyMembers(long clientId) {
public List<ClientFamilyMembersData> getClientFamilyMembers(long clientId) {
this.context.authenticatedUser();
@@ -354,26 +354,14 @@ public class ClientFamilyMembersWritePlatformServiceImpl implements ClientFamily
@Override
public CommandProcessingResult deleteFamilyMember(Long clientFamilyMemberId, JsonCommand command) {
// TODO Auto-generated method stub
this.context.authenticatedUser();
apiJsonDeserializer.validateForDelete(clientFamilyMemberId);
ClientFamilyMembers clientFamilyMember = null;
ClientFamilyMembers clientFamilyMember = clientFamilyRepository.getReferenceById(clientFamilyMemberId);
clientFamilyRepository.delete(clientFamilyMember);
if (clientFamilyMemberId != null) {
clientFamilyMember = clientFamilyRepository.getReferenceById(clientFamilyMemberId);
clientFamilyRepository.delete(clientFamilyMember);
}
if (clientFamilyMember != null) {
return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(clientFamilyMember.getId()).build();
} else {
return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(Long.valueOf(clientFamilyMemberId))
.build();
}
return new CommandProcessingResultBuilder().withCommandId(command.commandId()).withEntityId(clientFamilyMember.getId()).build();
}