FINCN-160 : Searching fixed in Product Fragment
diff --git a/app/src/main/java/org/apache/fineract/ui/product/ProductContract.kt b/app/src/main/java/org/apache/fineract/ui/product/ProductContract.kt
index 01bb87b..4938945 100644
--- a/app/src/main/java/org/apache/fineract/ui/product/ProductContract.kt
+++ b/app/src/main/java/org/apache/fineract/ui/product/ProductContract.kt
@@ -19,13 +19,13 @@
 
         fun hideProgressbar()
 
-        fun searchedProduct(product: Product)
+        fun searchedProduct(products: List<Product>)
     }
 
     interface Presenter {
 
         fun getProductsPage()
 
-        fun searchProduct(identifier: String)
+        fun searchProduct(products : List<Product>, identifier: String)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt b/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
index 8d44abb..2c773e4 100644
--- a/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/product/ProductFragment.kt
@@ -108,7 +108,7 @@
 
         searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
             override fun onQueryTextSubmit(query: String): Boolean {
-                productPresenter.searchProduct(query)
+                productPresenter.searchProduct(productList, query)
                 return false
             }
 
@@ -116,6 +116,9 @@
                 if (TextUtils.isEmpty(newText)) {
                     showRecyclerView(true)
                     productAdapter.setProductsList(productList)
+
+                } else {
+                    productPresenter.searchProduct(productList, newText)
                 }
 
                 return false
@@ -148,9 +151,9 @@
         swipeContainer.isRefreshing = false
     }
 
-    override fun searchedProduct(product: Product) {
-        showRecyclerView(true)
-        productAdapter.setProductsList(Collections.singletonList(product))
+    override fun searchedProduct(products: List<Product>) {
+        //showRecyclerView(true)
+        productAdapter.setProductsList(products)
     }
 
     override fun showNoInternetConnection() {
diff --git a/app/src/main/java/org/apache/fineract/ui/product/ProductPresenter.kt b/app/src/main/java/org/apache/fineract/ui/product/ProductPresenter.kt
index 37dd949..2684915 100644
--- a/app/src/main/java/org/apache/fineract/ui/product/ProductPresenter.kt
+++ b/app/src/main/java/org/apache/fineract/ui/product/ProductPresenter.kt
@@ -1,8 +1,10 @@
 package org.apache.fineract.ui.product
 
 import android.content.Context
+import io.reactivex.Observable
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.functions.Predicate
 import io.reactivex.observers.DisposableObserver
 import io.reactivex.schedulers.Schedulers
 import org.apache.fineract.R
@@ -53,28 +55,14 @@
         )
     }
 
-    override fun searchProduct(identifier: String) {
+    override fun searchProduct(products: List<Product>, query: String) {
         checkViewAttached()
-        mvpView.showProgressbar()
-
-        compositeDisposable.add(dataManagerProduct.searchProduct(identifier)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribeWith(object : DisposableObserver<Product>() {
-                    override fun onComplete() {
-
+        mvpView.searchedProduct(Observable.fromIterable(products)
+                .filter(object : Predicate<Product> {
+                    override fun test(product: Product): Boolean {
+                        return product.identifier?.toLowerCase()?.contains(query.toLowerCase())
+                                .toString().toBoolean()
                     }
-
-                    override fun onNext(product: Product) {
-                        mvpView.hideProgressbar()
-                        mvpView.searchedProduct(product)
-                    }
-
-                    override fun onError(e: Throwable) {
-                        mvpView.hideProgressbar()
-                        showExceptionError(e, context.getString(R.string.products))
-                    }
-                })
-        )
+                }).toList().blockingGet())
     }
 }
\ No newline at end of file