therajanmaurya closed pull request #13: feat: search identification
URL: https://github.com/apache/fineract-cn-mobile/pull/13
 
 
   

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/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
 
b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
index c2357a2..9b9665a 100644
--- 
a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
+++ 
b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerCustomer.java
@@ -101,8 +101,7 @@ public Completable customerCommand(String identifier, 
Command command) {
         return authenticatedObservableApi(baseApiManager.getCustomerApi()
                 .fetchIdentification(customerIdentifier))
                 .onErrorResumeNext(
-                        new Function<Throwable, 
ObservableSource<List<Identification>>>
-                                () {
+                        new Function<Throwable, 
ObservableSource<List<Identification>>> () {
                             @Override
                             public ObservableSource<List<Identification>> 
apply(
                                     Throwable throwable)
@@ -112,6 +111,20 @@ public Completable customerCommand(String identifier, 
Command command) {
                         });
     }
 
+    public Observable<Identification> searchIdentifications(String identifier, 
String number) {
+        return authenticatedObservableApi(baseApiManager.getCustomerApi()
+                    .searchIdentification(identifier, number))
+                    .onErrorResumeNext(
+                            new Function<Throwable, 
ObservableSource<Identification>>() {
+                                @Override
+                                public ObservableSource<Identification> apply(
+                                        Throwable throwable) throws Exception {
+                                    return Observable.just(FakeRemoteDataSource
+                                            .getIdentifications().get(0));
+                                }
+                            });
+    }
+
     public Completable createIdentificationCard(String identifier, 
Identification identification) {
         return authenticatedCompletableApi(baseApiManager.getCustomerApi()
                 .createIdentificationCard(identifier, identification));
diff --git 
a/app/src/main/java/org/apache/fineract/data/services/CustomerService.java 
b/app/src/main/java/org/apache/fineract/data/services/CustomerService.java
index c548f62..493e38c 100644
--- a/app/src/main/java/org/apache/fineract/data/services/CustomerService.java
+++ b/app/src/main/java/org/apache/fineract/data/services/CustomerService.java
@@ -62,6 +62,10 @@ Completable updateCustomer(
     Observable<List<Identification>> fetchIdentification(
             @Path("identifier") String identifier);
 
+    @GET(EndPoints.API_CUSTOMER_PATH + 
"/customers/{identifier}/identifications/{number}")
+    Observable<Identification> searchIdentification(
+            @Path("identifier") String identifier, @Path("number") String 
number);
+
     @POST(EndPoints.API_CUSTOMER_PATH + 
"/customers/{identifier}/identifications")
     Completable createIdentificationCard(@Path("identifier") String identifier,
             @Body Identification identification);
diff --git 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
index c38030c..5127e53 100644
--- 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
+++ 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
@@ -26,10 +26,14 @@
         void showEmptyIdentifications();
 
         void showMessage(String message);
+
+        void searchIdentificationList(Identification identification);
     }
 
     interface Presenter {
 
         void fetchIdentifications(String customerIdentifier);
+
+        void searchIdentifications(String identifier, String number);
     }
 }
diff --git 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
index bca48e2..fa7613e 100644
--- 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
+++ 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
@@ -1,12 +1,18 @@
 package org.apache.fineract.ui.online.identification.identificationlist;
 
+import android.app.SearchManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.SearchView;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -23,6 +29,7 @@
 import org.apache.fineract.utils.ConstantKeys;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import javax.inject.Inject;
@@ -73,6 +80,8 @@ public void onCreate(Bundle savedInstanceState) {
         if (getArguments() != null) {
             customerIdentifier = 
getArguments().getString(ConstantKeys.CUSTOMER_IDENTIFIER);
         }
+
+        setHasOptionsMenu(true);
     }
 
     @Nullable
@@ -128,6 +137,7 @@ public void showUserInterface() {
     @Override
     public void showIdentification(List<Identification> identifications) {
         showRecyclerView(true);
+        this.identifications = identifications;
         identificationAdapter.setIdentifications(identifications);
     }
 
@@ -164,6 +174,11 @@ public void showMessage(String message) {
         Toaster.show(rootView, message);
     }
 
+    @Override
+    public void searchIdentificationList(Identification identification) {
+        
identificationAdapter.setIdentifications(Collections.singletonList(identification));
+    }
+
     @Override
     public void showNoInternetConnection() {
         showRecyclerView(false);
@@ -176,6 +191,40 @@ public void showError(String message) {
         showFineractErrorUI(getString(R.string.identification_cards));
     }
 
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        super.onCreateOptionsMenu(menu, inflater);
+        inflater.inflate(R.menu.menu_identification_search, menu);
+        setUpSearchInterface(menu);
+    }
+
+    private void setUpSearchInterface(Menu menu) {
+
+        SearchManager manager = (SearchManager) getActivity().
+                getSystemService(Context.SEARCH_SERVICE);
+        final SearchView searchView = (SearchView) menu.findItem(
+                R.id.identification_search).getActionView();
+        
searchView.setSearchableInfo(manager.getSearchableInfo(getActivity().getComponentName()));
+
+        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() 
{
+            @Override
+            public boolean onQueryTextSubmit(String query) {
+                
identificationsPresenter.searchIdentifications(customerIdentifier, query);
+                return false;
+            }
+
+            @Override
+            public boolean onQueryTextChange(String newText) {
+                if (TextUtils.isEmpty(newText)) {
+                    identificationAdapter.setIdentifications(identifications);
+                }
+
+                return false;
+            }
+        });
+
+    }
+
     @Override
     public void onItemClick(View childView, int position) {
         ((FineractBaseActivity) getActivity()).replaceFragment(
diff --git 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
index fa1b855..dcee0a5 100644
--- 
a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
+++ 
b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
@@ -20,7 +20,7 @@
 
 /**
  * @author Rajan Maurya
- *         On 31/07/17.
+ * On 31/07/17.
  */
 @ConfigPersistent
 public class IdentificationsPresenter extends 
BasePresenter<IdentificationsContract.View>
@@ -81,4 +81,36 @@ public void onComplete() {
                 })
         );
     }
+
+    @Override
+    public void searchIdentifications(String identifier, String number) {
+        checkViewAttached();
+        getMvpView().showProgressbar();
+
+        
compositeDisposable.add(dataManagerCustomer.searchIdentifications(identifier, 
number)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribeWith(new DisposableObserver<Identification>() {
+
+                    @Override
+                    public void onNext(Identification identification) {
+                        getMvpView().hideProgressbar();
+                        getMvpView().searchIdentificationList(identification);
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        showExceptionError(e, context.getString
+                                (R.string.error_finding_identification));
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+
+                }));
+    }
+
+
 }
diff --git a/app/src/main/res/menu/menu_identification_search.xml 
b/app/src/main/res/menu/menu_identification_search.xml
new file mode 100644
index 0000000..ca560c1
--- /dev/null
+++ b/app/src/main/res/menu/menu_identification_search.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:app="http://schemas.android.com/apk/res-auto";
+      xmlns:android="http://schemas.android.com/apk/res/android";>
+
+    <item
+        android:id="@+id/identification_search"
+        android:icon="@drawable/ic_search_black_24dp"
+        android:title="@string/identification_search"
+        app:showAsAction="always"
+        app:actionViewClass="android.support.v7.widget.SearchView"/>
+
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index 965f297..d4c6784 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -168,6 +168,7 @@
     <string name="customer_updated_successfully">%1$s updated 
successfully</string>
     <string name="created_by">Created by</string>
     <string name="no_deposit_account">No deposit account</string>
+    <string name="identification_search">Search identification card</string>
     <string name="loan_last_modified_by">%1$s %2$s</string>
     <string name="loan_created_by">%1$s %2$s</string>
     <string name="search_beneficiary">Search beneficiary</string>
@@ -213,11 +214,13 @@
     <!--Empty data-->
     <string name="empty_create_loan_products">Oops there are no products, 
please create at least one to apply for loan</string>
     <string name="empty_identification_list">Oops there is no identification 
cards to show</string>
+    <string name="empty_identification_number">Identification number cannot be 
empty</string>
     <string name="empty_debts_to_show">There is no debts to show</string>
     <string name="empty_income_to_show">There is no income to show</string>
     <string name="empty_scans_to_show">There is no scans to show</string>
     <string name="empty_customer_activities">There is no activities to 
show</string>
     <string name="empty_roles">There is no roles to show</string>
+    <string name="empty_search">Search cannot be empty</string>
 
     <!--Edit Text validations-->
     <string name="value_must_greater_or_equal_to">Value must be greater than 
or equal to&#160; %1$s</string>
@@ -249,6 +252,7 @@
     <string name="error_fetching_identification_list">Error while fetching 
identification cards</string>
     <string name="error_creating_identification_card">Error while creating 
identification card</string>
     <string name="error_updating_identification_card">Error while updating 
identification card</string>
+    <string name="error_finding_identification">Error find 
identification</string>
     <string name="error_fetching_scans">Error while fetching scan 
cards</string>
     <string name="error_uploading_identification_scan_card">Error while 
uploading identification scan card</string>
     <string name="error_deleting_identification_scan_card">Error while 
deleting identification scan card</string>
diff --git a/app/src/main/resources/identification.json 
b/app/src/main/resources/identification.json
index 25f163d..7101526 100644
--- a/app/src/main/resources/identification.json
+++ b/app/src/main/resources/identification.json
@@ -1,13 +1,43 @@
 [
   {
-    "type": "type",
-    "number": "number",
+    "type": "type1",
+    "number": "number1",
     "expirationDate": {
       "year": 1985,
       "month": 11,
       "day": 27
     },
-    "issuer": "issuer",
+    "issuer": "issuer1",
+    "createdBy": "createdBy",
+    "createdOn": "createdOn",
+    "lastModifiedBy": "lastModifiedBy",
+    "lastModifiedOn": "lastModifiedOn"
+  },
+
+  {
+    "type": "type2",
+    "number": "number2",
+    "expirationDate": {
+      "year": 1985,
+      "month": 11,
+      "day": 27
+    },
+    "issuer": "issuer2",
+    "createdBy": "createdBy",
+    "createdOn": "createdOn",
+    "lastModifiedBy": "lastModifiedBy",
+    "lastModifiedOn": "lastModifiedOn"
+  },
+
+  {
+    "type": "type3",
+    "number": "number3",
+    "expirationDate": {
+      "year": 1985,
+      "month": 11,
+      "day": 27
+    },
+    "issuer": "issuer3",
     "createdBy": "createdBy",
     "createdOn": "createdOn",
     "lastModifiedBy": "lastModifiedBy",


 

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to