diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm
index f0af78943..1d7e01c61 100644
--- a/api-docs/apiLive.htm
+++ b/api-docs/apiLive.htm
@@ -11909,7 +11909,8 @@ GET https://DomainName/api/v1/staff
"officeId": 1,
"officeName": "Head Office",
"isLoanOfficer": true,
- "externalId": "17H"
+ "externalId": "17H",
+ "isActive": "true"
}
]
@@ -11935,7 +11936,37 @@ GET https://DomainName/api/v1/staff
"officeId": 1,
"officeName": "Head Office",
"isLoanOfficer": true,
- "externalId": "17H"
+ "externalId": "17H",
+ "isActive": "true"
+}
+
+
+
+
+
+
+
+
Retrieve a Staff by status
+
Returns the details of a Staff based on status.
+
By default it Returns all the ACTIVE Staff.
+
If status=INACTIVE, then it returns all INACTIVE Staff.
+
and for status=ALL, it Returns both ACTIVE and INACTIVE Staff.
+
Example Requests:
+
staff?status=active
+
+
+ GET https://DomainName/api/v1/staff?status={ACTIVE|INACTIVE|ALL}
+
+{
+ "id": 1,
+ "firstname": "John",
+ "lastname": "Doe",
+ "displayName": "Doe, John",
+ "officeId": 1,
+ "officeName": "Head Office",
+ "isLoanOfficer": true,
+ "externalId": "17H",
+ "isActive": "true"
}
diff --git a/mifosng-db/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql b/mifosng-db/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql
new file mode 100644
index 000000000..fdbc7dfb1
--- /dev/null
+++ b/mifosng-db/migrations/core_db/V139__default_value_for_is_active_updated_to_true_in_m_staff.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `m_staff`
+ CHANGE COLUMN `is_active` `is_active` TINYINT(1) NOT NULL DEFAULT '1' AFTER `organisational_role_parent_staff_id`;
+UPDATE `m_staff` SET `is_active`=1;
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java
index a4ad12215..aa61b384d 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java
@@ -79,7 +79,8 @@ public class StaffApiResource {
public String retrieveStaff(@Context final UriInfo uriInfo, @QueryParam("sqlSearch") final String sqlSearch,
@QueryParam("officeId") final Long officeId,
@DefaultValue("false") @QueryParam("staffInOfficeHierarchy") final boolean staffInOfficeHierarchy,
- @DefaultValue("false") @QueryParam("loanOfficersOnly") final boolean loanOfficersOnly) {
+ @DefaultValue("false") @QueryParam("loanOfficersOnly") final boolean loanOfficersOnly,
+ @DefaultValue("active") @QueryParam("status") final String status) {
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
@@ -87,7 +88,7 @@ public class StaffApiResource {
if (staffInOfficeHierarchy) {
staff = this.readPlatformService.retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(officeId, loanOfficersOnly);
} else {
- staff = this.readPlatformService.retrieveAllStaff(sqlSearch, officeId, loanOfficersOnly);
+ staff = this.readPlatformService.retrieveAllStaff(sqlSearch, officeId, loanOfficersOnly, status);
}
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/Staff.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/Staff.java
index 9085df388..777a0c09d 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/Staff.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/Staff.java
@@ -77,7 +77,7 @@ public class Staff extends AbstractPersistable
{
final boolean isLoanOfficer = command.booleanPrimitiveValueOfParameterNamed(isLoanOfficerParamName);
final String isActiveParamName = "isActive";
- final boolean isActive = command.booleanPrimitiveValueOfParameterNamed(isActiveParamName);
+ final Boolean isActive = command.booleanObjectValueOfParameterNamed(isActiveParamName);
return new Staff(staffOffice, firstname, lastname, externalId, mobileNo, isLoanOfficer, isActive);
}
@@ -94,7 +94,7 @@ public class Staff extends AbstractPersistable {
this.externalId = StringUtils.defaultIfEmpty(externalId, null);
this.mobileNo = StringUtils.defaultIfEmpty(mobileNo, null);
this.loanOfficer = isLoanOfficer;
- this.active = (isActive == null) ? false : isActive;
+ this.active = (isActive == null) ? true : isActive;
deriveDisplayName(firstname);
}
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformService.java
index d628c3e08..75c8bc028 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformService.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformService.java
@@ -23,5 +23,5 @@ public interface StaffReadPlatformService {
*/
Collection retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(Long officeId, boolean loanOfficersOnly);
- Collection retrieveAllStaff(String sqlSearch, Long officeId, boolean loanOfficersOnly);
+ Collection retrieveAllStaff(String sqlSearch, Long officeId, boolean loanOfficersOnly, String status);
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformServiceImpl.java
index 5ef684cc6..1f80c112c 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformServiceImpl.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/service/StaffReadPlatformServiceImpl.java
@@ -10,10 +10,12 @@ import java.sql.SQLException;
import java.util.Collection;
import org.apache.commons.lang.StringUtils;
+import org.mifosplatform.infrastructure.core.exception.UnrecognizedQueryParamException;
import org.mifosplatform.infrastructure.core.service.RoutingDataSource;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.organisation.staff.data.StaffData;
import org.mifosplatform.organisation.staff.exception.StaffNotFoundException;
+import org.omg.PortableInterceptor.ACTIVE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -68,7 +70,8 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService {
sqlBuilder.append("s.id as id, s.office_id as officeId, ohierarchy.name as officeName,");
sqlBuilder.append("s.firstname as firstname, s.lastname as lastname,");
- sqlBuilder.append("s.display_name as displayName, s.is_loan_officer as isLoanOfficer, s.external_id as externalId, s.mobile_no as mobileNo ");
+ sqlBuilder.append("s.display_name as displayName, s.is_loan_officer as isLoanOfficer, s.external_id as externalId, ");
+ sqlBuilder.append("s.mobile_no as mobileNo, s.is_active as isActive ");
sqlBuilder.append("from m_office o ");
sqlBuilder.append("join m_office ohierarchy on o.hierarchy like concat(ohierarchy.hierarchy, '%') ");
sqlBuilder.append("join m_staff s on s.office_id = ohierarchy.id ");
@@ -163,8 +166,8 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService {
}
@Override
- public Collection retrieveAllStaff(final String sqlSearch, final Long officeId, final boolean loanOfficersOnly) {
- final String extraCriteria = getStaffCriteria(sqlSearch, officeId, loanOfficersOnly);
+ public Collection retrieveAllStaff(final String sqlSearch, final Long officeId, final boolean loanOfficersOnly, final String status) {
+ final String extraCriteria = getStaffCriteria(sqlSearch, officeId, loanOfficersOnly, status);
return retrieveAllStaff(extraCriteria);
}
@@ -179,7 +182,7 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService {
return this.jdbcTemplate.query(sql, rm, new Object[] {});
}
- private String getStaffCriteria(final String sqlSearch, final Long officeId, final boolean loanOfficersOnly) {
+ private String getStaffCriteria(final String sqlSearch, final Long officeId, final boolean loanOfficersOnly, final String status) {
final StringBuffer extraCriteria = new StringBuffer(200);
@@ -192,7 +195,16 @@ public class StaffReadPlatformServiceImpl implements StaffReadPlatformService {
if (loanOfficersOnly) {
extraCriteria.append(" and s.is_loan_officer is true ");
}
-
+ // Passing status parameter to get ACTIVE (By Default), INACTIVE or ALL (Both active and Inactive) employees
+ if (status.equalsIgnoreCase("active")) {
+ extraCriteria.append(" and is_active = 1 ");
+ } else if (status.equalsIgnoreCase("inActive")) {
+ extraCriteria.append(" and is_active = 0 ");
+ } else if (status.equalsIgnoreCase("all")) {}
+ else {
+ throw new UnrecognizedQueryParamException("status", status, new Object[] { "all", "active", "inactive" });
+ }
+
if (StringUtils.isNotBlank(extraCriteria.toString())) {
extraCriteria.delete(0, 4);
}