You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by GitBox <gi...@apache.org> on 2018/11/05 10:57:21 UTC

[GitHub] ShruthiRajaram closed pull request #480: FINERACT-628 guarantor api for self service user

ShruthiRajaram closed pull request #480: FINERACT-628 guarantor api for self service user
URL: https://github.com/apache/fineract/pull/480
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm
index c6f966ff7..84c0e0bb7 100644
--- a/api-docs/apiLive.htm
+++ b/api-docs/apiLive.htm
@@ -3769,6 +3769,22 @@ <h2 class="flybar-button">Self Service</h2>
 								<td></td>
 								<td></td>
 							</tr>
+							<tr>
+								<td><a href="#self_guarantors_list">Guarantor and Obligee details</a></td>
+								<td>self/loans/{loanId}/guarantors</td>
+								<td></td>
+								<td><a href="#self_guarantors_list">Guarantors list</a></td>
+								<td></td>
+								<td></td>
+							</tr>
+							<tr>
+								<td></td>
+								<td>self/clients/{clientId}/obligeedetails</td>
+								<td></td>
+								<td><a href="#self_obligee_list">Obligee list</a></td>
+								<td></td>
+								<td></td>
+							</tr>
 						</table>
 					</div>
 				</div>
@@ -48394,6 +48410,238 @@ <h2>Retrieve a share application/account:</h2>
 	    </div>
 </div>
 
+<a id="self_guarantors_list" name="self_guarantors_list"
+				class="old-syle-anchor">&nbsp;</a>
+	<div class="method-section">
+		<div class="method-description">
+			<h4>List Guarantors</h4>
+			<p>Example Requests:</p>
+			<div class=apiClick>self/loans/33/guarantors</div>
+				<br>
+			</div>
+			<div class="method-example">
+				<code class="method-declaration">
+GET https://DomainName/api/v1/self/loans/{loanId}/guarantors
+				</code>
+			<code class="method-response">
+[  
+   {  
+      "id":6,
+      "loanId":33,
+      "guarantorType":{  
+         "id":1,
+         "code":"guarantor.existing.customer",
+         "value":"CUSTOMER"
+      },
+      "firstname":"Abhishek v",
+      "lastname":"M",
+      "entityId":12,
+      "officeName":"Head Office",
+      "joinedDate":[  
+         2014,
+         7,
+         5
+      ],
+      "guarantorFundingDetails":[  
+         {  
+            "id":7,
+            "status":{  
+               "id":100,
+               "code":"guarantorFundStatusType.active",
+               "value":"ACTIVE"
+            },
+            "savingsAccount":{  
+               "id":28,
+               "accountNo":"000000028"
+            },
+            "amount":2000,
+            "amountReleased":0,
+            "amountRemaining":2000,
+            "amountTransfered":0,
+            "guarantorTransactions":[  
+               {  
+                  "id":6,
+                  "onHoldTransactionData":{  
+                     "id":6,
+                     "amount":2000,
+                     "transactionType":{  
+                        "id":1,
+                        "code":"deposutAccountOnHoldTransactionType.hold",
+                        "value":"hold"
+                     },
+                     "transactionDate":[  
+                        2018,
+                        10,
+                        10
+                     ],
+                     "reversed":false,
+                     "savingsId":0,
+                     "loanId":0
+                  },
+                  "reversed":false
+               }
+            ]
+         }
+      ],
+      "status":true
+   },
+   {  
+      "id":7,
+      "loanId":33,
+      "clientRelationshipType":{  
+         "id":6,
+         "name":"Parent",
+         "active":false,
+         "mandatory":false
+      },
+      "guarantorType":{  
+         "id":1,
+         "code":"guarantor.existing.customer",
+         "value":"CUSTOMER"
+      },
+      "firstname":"Bheem",
+      "lastname":"Test",
+      "entityId":14,
+      "officeName":"Head Office",
+      "joinedDate":[  
+         2013,
+         7,
+         3
+      ],
+      "guarantorFundingDetails":[  
+         {  
+            "id":8,
+            "status":{  
+               "id":100,
+               "code":"guarantorFundStatusType.active",
+               "value":"ACTIVE"
+            },
+            "savingsAccount":{  
+               "id":37,
+               "accountNo":"000000037"
+            },
+            "amount":1000,
+            "amountReleased":0,
+            "amountRemaining":1000,
+            "amountTransfered":0,
+            "guarantorTransactions":[  
+               {  
+                  "id":7,
+                  "onHoldTransactionData":{  
+                     "id":7,
+                     "amount":1000,
+                     "transactionType":{  
+                        "id":1,
+                        "code":"deposutAccountOnHoldTransactionType.hold",
+                        "value":"hold"
+                     },
+                     "transactionDate":[  
+                        2018,
+                        10,
+                        10
+                     ],
+                     "reversed":false,
+                     "savingsId":0,
+                     "loanId":0
+                  },
+                  "reversed":false
+               }
+            ]
+         }
+      ],
+      "status":true
+   }
+]
+			</code>
+		</div>
+	</div>
+	<a id="self_obligee_list" name="self_obligee_list"
+				class="old-syle-anchor">&nbsp;</a>
+	<div class="method-section">
+		<div class="method-description">
+			<h4>Obligee List</h4>
+			<p>Obligee list provides list of clients and other details, to whom the user has agreed to be a guarantor.</p>
+			
+			<table class=matrixHeading>
+	            <tr class="matrixHeadingBG"><td><div class="fineractHeading2">Field Descriptions</div></td></tr>
+
+				<tr class=alt><td>clientId</td></tr>
+				<tr><td class=fielddesc>The client id of the self service user.</td></tr>
+
+				<tr class=alt><td>firstName, lastName, displayName</td></tr>
+				<tr><td class=fielddesc>The first name, last name and display name of the obligee</td></tr>
+				
+				<tr class=alt><td>accountNumber, loanAmount</td></tr>
+				<tr><td class=fielddesc>The loan account number and principal amount of the obligee </td></tr>
+				
+				<tr class=alt><td>guaranteeAmount, amountReleased, amountTransferred</td></tr>
+				<tr><td class=fielddesc>Guranteed amount, released and transferred amount of the client</td></tr>
+			</table>
+					
+			<p>Example Requests:</p>
+			<div class=apiClick>self/clients/14/obligeedetails</div>
+				<br>
+			</div>
+			<div class="method-example">
+				<code class="method-declaration">
+GET https://DomainName/api/v1/self/clients/{clientId}/obligeedetails
+				</code>
+			<code class="method-response">		
+			[  
+   {  
+      "firstName":"App",
+      "lastName":"Test",
+      "displayName":"App Test",
+      "accountNumber":"000000005",
+      "loanAmount":50000,
+      "guaranteeAmount":10000,
+      "amountReleased":0,
+      "amountTransferred":0
+   },
+   {  
+      "firstName":"App",
+      "lastName":"Test",
+      "displayName":"App Test",
+      "accountNumber":"000000005",
+      "loanAmount":50000,
+      "guaranteeAmount":5000,
+      "amountReleased":0,
+      "amountTransferred":0
+   },
+   {  
+      "firstName":"App",
+      "lastName":"Test",
+      "displayName":"App Test",
+      "accountNumber":"000000006",
+      "loanAmount":50000,
+      "guaranteeAmount":10000,
+      "amountReleased":0,
+      "amountTransferred":0
+   },
+   {  
+      "firstName":"Abhishek v",
+      "lastName":"M",
+      "displayName":"Abhishek v M",
+      "accountNumber":"000000032",
+      "loanAmount":10000,
+      "guaranteeAmount":1000,
+      "amountReleased":1000,
+      "amountTransferred":0
+   },
+   {  
+      "firstName":"Abhishek v",
+      "lastName":"M",
+      "displayName":"Abhishek v M",
+      "accountNumber":"000000033",
+      "loanAmount":10000,
+      "guaranteeAmount":1000,
+      "amountReleased":0,
+      "amountTransferred":0
+   }
+]
+			</code>
+		</div>
+	</div>
 			<!-- end of Customer Self Service APIs-->
         </div>
 		<!-- main-content-wrapper -->
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
index 08590dc68..6d6738153 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientApiConstants.java
@@ -186,6 +186,7 @@
     public static final String staffOptionsParamName = "staffOptions";
 
     public static final String datatables = "datatables";
+    public static final String obligeeData = "ObligeeDetails";
 
 
     /**
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
index d0e0af329..fc8904907 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
@@ -22,6 +22,7 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.ws.rs.Consumes;
@@ -39,8 +40,6 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
-import com.sun.jersey.core.header.FormDataContentDisposition;
-import com.sun.jersey.multipart.FormDataParam;
 import org.apache.commons.lang.StringUtils;
 import org.apache.fineract.commands.domain.CommandWrapper;
 import org.apache.fineract.commands.service.CommandWrapperBuilder;
@@ -59,12 +58,17 @@
 import org.apache.fineract.portfolio.accountdetails.service.AccountDetailsReadPlatformService;
 import org.apache.fineract.portfolio.client.data.ClientData;
 import org.apache.fineract.portfolio.client.service.ClientReadPlatformService;
+import org.apache.fineract.portfolio.loanaccount.guarantor.data.ObligeeData;
+import org.apache.fineract.portfolio.loanaccount.guarantor.service.GuarantorReadPlatformService;
 import org.apache.fineract.portfolio.savings.data.SavingsAccountData;
 import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
+import com.sun.jersey.core.header.FormDataContentDisposition;
+import com.sun.jersey.multipart.FormDataParam;
+
 @Path("/clients")
 @Component
 @Scope("singleton")
@@ -80,6 +84,7 @@
     private final SavingsAccountReadPlatformService savingsAccountReadPlatformService;
     private final BulkImportWorkbookService bulkImportWorkbookService;
     private final BulkImportWorkbookPopulatorService bulkImportWorkbookPopulatorService;
+    private final GuarantorReadPlatformService guarantorReadPlatformService;
 
     @Autowired
     public ClientsApiResource(final PlatformSecurityContext context, final ClientReadPlatformService readPlatformService,
@@ -90,7 +95,7 @@ public ClientsApiResource(final PlatformSecurityContext context, final ClientRea
             final AccountDetailsReadPlatformService accountDetailsReadPlatformService,
             final SavingsAccountReadPlatformService savingsAccountReadPlatformService,
             final BulkImportWorkbookPopulatorService bulkImportWorkbookPopulatorService,
-            final BulkImportWorkbookService bulkImportWorkbookService) {
+            final BulkImportWorkbookService bulkImportWorkbookService, final GuarantorReadPlatformService guarantorReadPlatformService) {
         this.context = context;
         this.clientReadPlatformService = readPlatformService;
         this.toApiJsonSerializer = toApiJsonSerializer;
@@ -101,6 +106,7 @@ public ClientsApiResource(final PlatformSecurityContext context, final ClientRea
         this.savingsAccountReadPlatformService = savingsAccountReadPlatformService;
         this.bulkImportWorkbookPopulatorService=bulkImportWorkbookPopulatorService;
         this.bulkImportWorkbookService=bulkImportWorkbookService;
+        this.guarantorReadPlatformService = guarantorReadPlatformService;
     }
 
     @GET
@@ -341,4 +347,18 @@ public String postClientTemplate(@QueryParam("legalFormType")final String legalF
         final Long importDocumentId = bulkImportWorkbookService.importWorkbook(legalFormType, uploadedInputStream,fileDetail,locale,dateFormat);
         return this.toApiJsonSerializer.serialize(importDocumentId);
     }
+
+	@GET
+	@Path("{clientId}/obligeedetails")
+	@Consumes({ MediaType.APPLICATION_JSON })
+	@Produces({ MediaType.APPLICATION_JSON })
+	public String retrieveObligeeDetails(@PathParam("clientId") final Long clientId, @Context final UriInfo uriInfo) {
+
+		this.context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_RESOURCE_NAME);
+
+		final List<ObligeeData> ObligeeList = this.guarantorReadPlatformService.retrieveObligeeDetails(clientId);
+
+		return this.toApiJsonSerializer.serialize(ObligeeList);
+	}
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java
new file mode 100644
index 000000000..30f253b26
--- /dev/null
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.fineract.portfolio.loanaccount.guarantor.data;
+
+import java.math.BigDecimal;
+
+@SuppressWarnings("unused")
+public class ObligeeData {
+
+	private final String firstName;
+	private final String lastName;
+	private final String displayName;
+	private final String accountNumber;
+	private final BigDecimal loanAmount;
+	private final BigDecimal guaranteeAmount;
+	private final BigDecimal amountReleased;
+	private final BigDecimal amountTransferred;
+
+	private ObligeeData(String firstname, String lastname, String displayName, String accountNumber,
+			BigDecimal loanAmount, BigDecimal guaranteeAmount, BigDecimal amountReleased,
+			BigDecimal amountTransferred) {
+		this.firstName = firstname;
+		this.lastName = lastname;
+		this.displayName = displayName;
+		this.accountNumber = accountNumber;
+		this.loanAmount = loanAmount;
+		this.guaranteeAmount = guaranteeAmount;
+		this.amountReleased = amountReleased;
+		this.amountTransferred = amountTransferred;
+	}
+
+	public static ObligeeData instance(final String firstname, final String lastname, final String displayName,
+			final String accountNumber, final BigDecimal loanAmount, final BigDecimal guaranteeAmount,
+			final BigDecimal amountReleased, final BigDecimal amountTransferred) {
+		return new ObligeeData(firstname, lastname, displayName, accountNumber, loanAmount, guaranteeAmount,
+				amountReleased, amountTransferred);
+	}
+
+}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java
index 965213463..7beb348e2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformService.java
@@ -21,6 +21,7 @@
 import java.util.List;
 
 import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorData;
+import org.apache.fineract.portfolio.loanaccount.guarantor.data.ObligeeData;
 
 public interface GuarantorReadPlatformService {
 
@@ -41,6 +42,8 @@
      */
     List<GuarantorData> retrieveGuarantorsForLoan(Long loanId);
 
-    GuarantorData retrieveGuarantor(Long loanId, Long guarantorId);
+	GuarantorData retrieveGuarantor(Long loanId, Long guarantorId);
+
+	List<ObligeeData> retrieveObligeeDetails(Long clientId);
 
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
index 3962252ae..6489153b9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
@@ -39,10 +39,12 @@
 import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorData;
 import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorFundingData;
 import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorTransactionData;
+import org.apache.fineract.portfolio.loanaccount.guarantor.data.ObligeeData;
 import org.apache.fineract.portfolio.savings.data.DepositAccountOnHoldTransactionData;
 import org.apache.fineract.portfolio.savings.service.SavingsEnumerations;
 import org.joda.time.LocalDate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Service;
@@ -254,7 +256,7 @@ public String schema() {
         }
 
         @Override
-        public GuarantorTransactionData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
+        public GuarantorTransactionData mapRow(final ResultSet rs, final int rowNum) throws SQLException {
             GuarantorTransactionData guarantorTransactionData = null;
             final Long id = rs.getLong("gtId");
             final Long transactionId = rs.getLong("ohtId");
@@ -288,4 +290,56 @@ private GuarantorData mergeDetailsForClientOrStaffGuarantor(final GuarantorData
         return guarantorData;
     }
 
+	@Override
+	public List<ObligeeData> retrieveObligeeDetails(final Long clientId) {
+		final ObligeeMapper rm = new ObligeeMapper();
+		String sql = rm.schema();
+		try {
+			return this.jdbcTemplate.query(sql, rm, new Object[] { clientId });
+		} catch (final EmptyResultDataAccessException e) {
+			return null;
+		}
+
+	}
+
+	private static final class ObligeeMapper implements RowMapper<ObligeeData> {
+
+		private final String sql;
+
+		public ObligeeMapper() {
+			StringBuilder sb = new StringBuilder(
+					"SELECT cl.firstname, cl.lastname,cl.display_name as displayName, loan.account_no as loanAccountNumber, loan.principal_amount as loanAmount, gfd.amount as guaranteedAmount, ");
+			sb.append(
+					"gfd.amount_released_derived as amountReleased, gfd.amount_transfered_derived as amountTransferred FROM m_guarantor mg");
+			sb.append(" JOIN m_guarantor_funding_details gfd on mg.id = gfd.guarantor_id ");
+			sb.append(
+					" JOIN m_client mc ON mg.entity_id = mc.id AND mc.id = ? JOIN m_loan loan ON mg.loan_id = loan.id ");
+			sb.append(" JOIN m_client cl ON loan.client_id = cl.id ");
+			sql = sb.toString();
+		}
+
+		public String schema() {
+			return this.sql;
+		}
+
+		@Override
+		public ObligeeData mapRow(final ResultSet rs, final int rowNum)
+				throws SQLException {
+			final String firstName = rs.getString("firstname");
+			final String lastName = rs.getString("lastname");
+			final String displayName = rs.getString("displayName");
+			final String loanAccountNumber = rs.getString("loanAccountNumber");
+
+			final BigDecimal loanAmount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "loanAmount");
+			final BigDecimal guaranteeAmount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "guaranteedAmount");
+			final BigDecimal amountReleased = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amountReleased");
+			final BigDecimal amountTransferred = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "amountTransferred");
+
+			return ObligeeData.instance(firstName, lastName, displayName, loanAccountNumber, loanAmount,
+					guaranteeAmount, amountReleased, amountTransferred);
+
+		}
+
+	}
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java
index b50c33ed4..d9f1a06a6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/client/api/SelfClientsApiResource.java
@@ -218,4 +218,15 @@ private void validateAppuserClientsMapping(final Long clientId) {
 		}
 	}
 
+	@GET
+	@Path("{clientId}/obligeedetails")
+	@Consumes({ MediaType.APPLICATION_JSON })
+	@Produces({ MediaType.APPLICATION_JSON })
+	public String retrieveObligeeDetails(@PathParam("clientId") final Long clientId, @Context final UriInfo uriInfo) {
+
+		validateAppuserClientsMapping(clientId);
+
+		return this.clientApiResource.retrieveObligeeDetails(clientId, uriInfo);
+	}
+
 }
\ No newline at end of file
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java
index 728175288..02a1ac002 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java
@@ -42,6 +42,7 @@
 import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException;
 import org.apache.fineract.portfolio.loanaccount.exception.LoanTemplateTypeRequiredException;
 import org.apache.fineract.portfolio.loanaccount.exception.NotSupportedLoanTemplateTypeException;
+import org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource;
 import org.apache.fineract.portfolio.self.client.service.AppuserClientMapperReadService;
 import org.apache.fineract.portfolio.self.loanaccount.data.SelfLoansDataValidator;
 import org.apache.fineract.portfolio.self.loanaccount.service.AppuserLoansMapperReadService;
@@ -62,6 +63,7 @@
 	private final AppuserLoansMapperReadService appuserLoansMapperReadService;
 	private final AppuserClientMapperReadService appUserClientMapperReadService;
 	private final SelfLoansDataValidator dataValidator;
+	private final GuarantorsApiResource guarantorsApiResource;
 
 	@Autowired
 	public SelfLoansApiResource(final PlatformSecurityContext context,
@@ -70,7 +72,7 @@ public SelfLoansApiResource(final PlatformSecurityContext context,
 			final LoanChargesApiResource loanChargesApiResource,
 			final AppuserLoansMapperReadService appuserLoansMapperReadService,
 			final AppuserClientMapperReadService appUserClientMapperReadService,
-			final SelfLoansDataValidator dataValidator) {
+			final SelfLoansDataValidator dataValidator, final GuarantorsApiResource guarantorsApiResource) {
 		this.context = context;
 		this.loansApiResource = loansApiResource;
 		this.loanTransactionsApiResource = loanTransactionsApiResource;
@@ -78,6 +80,7 @@ public SelfLoansApiResource(final PlatformSecurityContext context,
 		this.appuserLoansMapperReadService = appuserLoansMapperReadService;
 		this.appUserClientMapperReadService = appUserClientMapperReadService;
 		this.dataValidator = dataValidator;
+		this.guarantorsApiResource = guarantorsApiResource;
 	}
 
 	@GET
@@ -232,5 +235,15 @@ private void validateAppuserClientsMapping(final Long clientId) {
     private boolean is(final String commandParam, final String commandValue) {
         return StringUtils.isNotBlank(commandParam) && commandParam.trim().equalsIgnoreCase(commandValue);
     }
+    
+	@GET
+	@Path("{loanId}/guarantors")
+	@Consumes({ MediaType.APPLICATION_JSON })
+	@Produces({ MediaType.APPLICATION_JSON })
+	public String retrieveGuarantorDetails(@PathParam("loanId") final Long loanId, @Context final UriInfo uriInfo) {
+
+		validateAppuserLoanMapping(loanId);
+		return this.guarantorsApiResource.retrieveGuarantorDetails(uriInfo, loanId);
+	}
 
 }
\ No newline at end of file


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services