From 29349403e6e02a905ab76b00d522b114ab9d767a Mon Sep 17 00:00:00 2001 From: Danish Jamal Date: Mon, 2 Aug 2021 17:32:42 +0530 Subject: [PATCH] staff, search integration and major bugs fixes in client integration --- .../api/datamanager/DataManagerClient.java | 2 ++ .../api/datamanager/DataManagerNote.java | 14 ++++++-- .../api/datamanager/DataManagerSearch.java | 12 ++++++- .../api/datamanager/DataManagerStaff.java | 23 +++++++----- .../accounts/GetClientsClientIdAccsMapper.kt | 2 ++ .../client/ClientsClientIdResponseMapper.kt | 2 +- .../mappers/client/template/TemplateMapper.kt | 8 ++--- .../com/mifos/api/mappers/note/NoteMapper.kt | 36 +++++++++++++++++++ .../mifos/api/mappers/staff/StaffMapper.kt | 33 +++++++++++++++++ 9 files changed, 116 insertions(+), 16 deletions(-) create mode 100644 mifosng-android/src/main/java/com/mifos/api/mappers/note/NoteMapper.kt create mode 100644 mifosng-android/src/main/java/com/mifos/api/mappers/staff/StaffMapper.kt diff --git a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerClient.java b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerClient.java index c3d676bb99c..377b0bc3244 100644 --- a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerClient.java +++ b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerClient.java @@ -446,6 +446,8 @@ public Observable activateClient(int clientId, response.setResponseFields(map); return response; });*/ + // todo: this is work around to make older request work, changing YYYY to yyyy + clientActivate.setDateFormat("dd MMMM yyyy"); return mBaseApiManager.getClientsApi().activateClient(clientId, clientActivate); } } diff --git a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerNote.java b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerNote.java index 8f3807005da..ddabe00dba5 100644 --- a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerNote.java +++ b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerNote.java @@ -2,8 +2,11 @@ import com.mifos.api.BaseApiManager; import com.mifos.api.local.databasehelper.DatabaseHelperNote; +import com.mifos.api.mappers.note.NoteMapper; import com.mifos.objects.noncore.Note; +import org.apache.fineract.client.services.NotesApi; + import java.util.List; import javax.inject.Inject; @@ -21,19 +24,26 @@ public class DataManagerNote { public final BaseApiManager mBaseApiManager; public final DatabaseHelperNote mDatabaseHelperNote; + public final org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager; @Inject public DataManagerNote(BaseApiManager baseApiManager, - DatabaseHelperNote databaseHelperNote) { + DatabaseHelperNote databaseHelperNote, + org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager) { mBaseApiManager = baseApiManager; mDatabaseHelperNote = databaseHelperNote; + this.sdkBaseApiManager = sdkBaseApiManager; } + private NotesApi getNotesApi() { + return sdkBaseApiManager.getNoteApi(); + } /** * This Method Request the REST API of Note and In response give the List of Notes */ public Observable> getNotes(String entityType, int entityId) { - return mBaseApiManager.getNoteApi().getNotes(entityType, entityId); + return getNotesApi().retrieveNotesByResource(entityType, (long) entityId) + .map(NoteMapper.INSTANCE::mapFromEntityList); } } diff --git a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerSearch.java b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerSearch.java index d5871b1a221..67f79b7b11a 100644 --- a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerSearch.java +++ b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerSearch.java @@ -3,6 +3,8 @@ import com.mifos.api.BaseApiManager; import com.mifos.objects.SearchedEntity; +import org.apache.fineract.client.services.SearchApiApi; + import java.util.List; import javax.inject.Inject; @@ -17,14 +19,22 @@ public class DataManagerSearch { public final BaseApiManager baseApiManager; + public final org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager; @Inject - public DataManagerSearch(BaseApiManager baseApiManager) { + public DataManagerSearch(BaseApiManager baseApiManager, + org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager) { this.baseApiManager = baseApiManager; + this.sdkBaseApiManager = sdkBaseApiManager; + } + + private SearchApiApi getSearchApi() { + return sdkBaseApiManager.getSearchApi(); } public Observable> searchResources(String query, String resources, Boolean exactMatch) { + // todo: invalid return type of method 'searchData'. It should be 'List' return baseApiManager.getSearchApi().searchResources(query, resources, exactMatch); } } diff --git a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerStaff.java b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerStaff.java index b46a898f99a..dcae8a4981e 100644 --- a/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerStaff.java +++ b/mifosng-android/src/main/java/com/mifos/api/datamanager/DataManagerStaff.java @@ -2,9 +2,12 @@ import com.mifos.api.BaseApiManager; import com.mifos.api.local.databasehelper.DatabaseHelperStaff; +import com.mifos.api.mappers.staff.StaffMapper; import com.mifos.objects.organisation.Staff; import com.mifos.utils.PrefManager; +import org.apache.fineract.client.services.StaffApi; + import java.util.ArrayList; import java.util.List; @@ -12,7 +15,6 @@ import javax.inject.Singleton; import rx.Observable; -import rx.functions.Func1; /** * Created by Rajan Maurya on 7/7/16. @@ -22,14 +24,20 @@ public class DataManagerStaff { public final BaseApiManager mBaseApiManager; public final DatabaseHelperStaff mDatabaseHelperStaff; + public final org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager; @Inject public DataManagerStaff(BaseApiManager baseApiManager, - DatabaseHelperStaff databaseHelperStaff) { + DatabaseHelperStaff databaseHelperStaff, + org.mifos.core.apimanager.BaseApiManager sdkBaseApiManager) { mBaseApiManager = baseApiManager; mDatabaseHelperStaff = databaseHelperStaff; + this.sdkBaseApiManager = sdkBaseApiManager; } + private StaffApi getStaffApi() { + return sdkBaseApiManager.getStaffApi(); + } /** * @param officeId @@ -38,14 +46,13 @@ public DataManagerStaff(BaseApiManager baseApiManager, public Observable> getStaffInOffice(int officeId) { switch (PrefManager.INSTANCE.getUserStatus()) { case 0: - return mBaseApiManager.getStaffApi().getStaffForOffice(officeId) - .concatMap(new Func1, Observable>>() { - @Override - public Observable> call(List staffs) { + getStaffApi().retrieveAll16((long) officeId, null, + null, "all") + .map(StaffMapper.INSTANCE::mapFromEntityList) + .concatMap(staffs -> { mDatabaseHelperStaff.saveAllStaffOfOffices(staffs); return Observable.just(staffs); - } - }); + }); case 1: /** * return all List of Staffs of Office from DatabaseHelperOffices diff --git a/mifosng-android/src/main/java/com/mifos/api/mappers/accounts/GetClientsClientIdAccsMapper.kt b/mifosng-android/src/main/java/com/mifos/api/mappers/accounts/GetClientsClientIdAccsMapper.kt index 16721191b03..c5ab8499aa2 100644 --- a/mifosng-android/src/main/java/com/mifos/api/mappers/accounts/GetClientsClientIdAccsMapper.kt +++ b/mifosng-android/src/main/java/com/mifos/api/mappers/accounts/GetClientsClientIdAccsMapper.kt @@ -10,7 +10,9 @@ object GetClientsClientIdAccsMapper: AbstractMapper() { + override fun mapFromEntity(entity: GetResourceTypeResourceIdNotesResponse): Note { + return Note().apply { + id = entity.id!! + clientId = entity.clientId!! + noteContent = entity.note + createdById = entity.createdById!! + createdByUsername = entity.createdByUsername + createdOn = entity.createdOn!!.time + updatedById = entity.updatedById!! + updatedByUsername = entity.updatedByUsername + updatedOn = entity.updatedOn!!.time + } + } + + override fun mapToEntity(domainModel: Note): GetResourceTypeResourceIdNotesResponse { + return GetResourceTypeResourceIdNotesResponse().apply { + id = domainModel.id + clientId = domainModel.clientId + note = domainModel.noteContent + createdById = domainModel.createdById + createdByUsername = domainModel.createdByUsername + createdOn = Date(domainModel.createdOn) + updatedById = domainModel.updatedById + updatedByUsername = domainModel.updatedByUsername + updatedOn = Date(domainModel.updatedOn) + } + } +} \ No newline at end of file diff --git a/mifosng-android/src/main/java/com/mifos/api/mappers/staff/StaffMapper.kt b/mifosng-android/src/main/java/com/mifos/api/mappers/staff/StaffMapper.kt new file mode 100644 index 00000000000..5a8da0bbcfd --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/api/mappers/staff/StaffMapper.kt @@ -0,0 +1,33 @@ +package com.mifos.api.mappers.staff + +import com.mifos.objects.organisation.Staff +import org.apache.fineract.client.models.RetrieveOneResponse +import org.mifos.core.data.AbstractMapper + +object StaffMapper: AbstractMapper() { + override fun mapFromEntity(entity: RetrieveOneResponse): Staff { + return Staff().apply { + id = entity.id!!.toInt() + firstname = entity.firstname + lastname = entity.lastname + displayName = entity.displayName + officeId = entity.officeId!!.toInt() + officeName = entity.officeName + isLoanOfficer = entity.isLoanOfficer + isActive = entity.isActive + } + } + + override fun mapToEntity(domainModel: Staff): RetrieveOneResponse { + return RetrieveOneResponse().apply { + id = domainModel.id.toLong() + firstname = domainModel.firstname + lastname = domainModel.lastname + displayName = domainModel.displayName + officeId = domainModel.officeId.toLong() + officeName = domainModel.officeName + isLoanOfficer = domainModel.isLoanOfficer + isActive = domainModel.isActive + } + } +} \ No newline at end of file