From d4c75a76677a4a757a325a4e0d84cf7eb12bcde4 Mon Sep 17 00:00:00 2001 From: mifoscontributer Date: Mon, 24 Jun 2013 18:48:17 +0530 Subject: [PATCH] Allow assign parent office staff to group Fixing missed fun --- .../mifosplatform/organisation/staff/domain/Staff.java | 4 ++++ .../organisation/staff/domain/StaffRepository.java | 2 -- .../staff/domain/StaffRepositoryWrapper.java | 10 ++++++++++ ...pingTypesWritePlatformServiceJpaRepositoryImpl.java | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) 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 69d4c2df4..22f7b2879 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 @@ -162,4 +162,8 @@ public class Staff extends AbstractPersistable { public String displayName() { return this.displayName; } + + public Office office() { + return this.office; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepository.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepository.java index 2294d04b8..39fbbc5b6 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepository.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepository.java @@ -20,7 +20,5 @@ public interface StaffRepository extends JpaRepository, */ @Query(FIND_BY_OFFICE_QUERY) public Staff findByOffice(@Param("id") Long id, @Param("officeId") Long officeId); - - } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepositoryWrapper.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepositoryWrapper.java index 536bab369..acc3ff8f1 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepositoryWrapper.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/domain/StaffRepositoryWrapper.java @@ -36,4 +36,14 @@ public class StaffRepositoryWrapper { if (staff == null) { throw new StaffNotFoundException(staffId); } return staff; } + + public Staff findByOfficeHierarchyWithNotFoundDetection(final Long staffId, final String hierarchy) { + final Staff staff = this.repository.findOne(staffId); + if (staff == null) { throw new StaffNotFoundException(staffId); } + final String staffhierarchy = staff.office().getHierarchy(); + if (!hierarchy.startsWith(staffhierarchy)) { + throw new StaffNotFoundException(staffId); + } + return staff; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java index 0da4d9133..4b0e16425 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java @@ -107,7 +107,7 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group Staff staff = null; final Long staffId = command.longValueOfParameterNamed(GroupingTypesApiConstants.staffIdParamName); if (staffId != null) { - staff = this.staffRepository.findByOfficeWithNotFoundDetection(staffId, officeId); + staff = this.staffRepository.findByOfficeHierarchyWithNotFoundDetection(staffId, groupOffice.getHierarchy()); } final Set clientMembers = assembleSetOfClients(officeId, command); @@ -228,7 +228,7 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group Staff newStaff = null; if (newValue != null) { - newStaff = this.staffRepository.findByOfficeWithNotFoundDetection(newValue, officeId); + newStaff = this.staffRepository.findByOfficeHierarchyWithNotFoundDetection(newValue, groupHierarchy); } groupForUpdate.updateStaff(newStaff); }