diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d28cf451..6ff46135 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -86,6 +86,8 @@ + + diff --git a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java index 6c250f80..a63fb63d 100644 --- a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java +++ b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java @@ -4,7 +4,7 @@ import org.apache.fineract.injection.module.ActivityModule; import org.apache.fineract.ui.offline.CustomerPayloadFragment; import org.apache.fineract.ui.online.DashboardActivity; -import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment; +import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsFragment; import org.apache.fineract.ui.online.accounting.ledgers.LedgerFragment; import org.apache.fineract.ui.online.customers.createcustomer.customeractivity .CreateCustomerActivity; diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt b/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt index 6205ad7f..3de52f9f 100644 --- a/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt +++ b/app/src/main/java/org/apache/fineract/ui/adapters/AccountsAdapter.kt @@ -6,11 +6,13 @@ import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView import android.widget.TextView import kotlinx.android.synthetic.main.item_account.view.* import org.apache.fineract.R import org.apache.fineract.data.models.accounts.Account import org.apache.fineract.injection.ApplicationContext +import org.apache.fineract.ui.base.OnItemClickListener import org.apache.fineract.utils.DateUtils import org.apache.fineract.utils.StatusUtils import javax.inject.Inject @@ -20,6 +22,8 @@ class AccountsAdapter @Inject constructor(@ApplicationContext val context: Conte var accounts: List = ArrayList() + lateinit var onItemClickListener: OnItemClickListener + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent?.context).inflate(R.layout.item_account, parent, false) @@ -55,12 +59,25 @@ class AccountsAdapter @Inject constructor(@ApplicationContext val context: Conte notifyDataSetChanged() } - class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + fun setItemClickListener(onItemClickListener: OnItemClickListener) { + this.onItemClickListener = onItemClickListener + } + + inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { val tvIdentifier: TextView = itemView.tv_account_identifier val tvModifiedBy: TextView = itemView.tv_modified_by val tvModifiedOn: TextView = itemView.tv_modified_on val tvName: TextView = itemView.tv_name val ivAccountTypeIndicator: AppCompatImageView = itemView.iv_type_indicator + + init { + itemView.ll_account.setOnClickListener(this) + } + + override fun onClick(v: View?) { + if (onItemClickListener != null) + onItemClickListener.onItemClick(v, adapterPosition) + } } } \ No newline at end of file diff --git a/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java b/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java index 15b4d61f..66300ee9 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java +++ b/app/src/main/java/org/apache/fineract/ui/online/DashboardActivity.java @@ -25,7 +25,7 @@ import org.apache.fineract.ui.base.Toaster; import org.apache.fineract.ui.offline.CustomerPayloadFragment; import org.apache.fineract.ui.online.accounting.ledgers.LedgerFragment; -import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment; +import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsFragment; import org.apache.fineract.ui.online.customers.customerlist.CustomersFragment; import org.apache.fineract.ui.online.dashboard.DashboardFragment; import org.apache.fineract.ui.online.launcher.LauncherActivity; diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt similarity index 89% rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt index 9491718e..b904cea5 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountContract.kt +++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountContract.kt @@ -1,4 +1,4 @@ -package org.apache.fineract.ui.online.accounting.accounts +package org.apache.fineract.ui.online.accounting.accounts.accountList import org.apache.fineract.data.models.accounts.Account import org.apache.fineract.ui.base.MvpView diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt similarity index 86% rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt index 67c27d8a..a2b02710 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsFragment.kt +++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsFragment.kt @@ -1,13 +1,15 @@ -package org.apache.fineract.ui.online.accounting.accounts +package org.apache.fineract.ui.online.accounting.accounts.accountList import android.app.SearchManager import android.content.Context +import android.content.Intent import android.os.Bundle import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.appcompat.widget.SearchView import android.text.TextUtils import android.view.* +import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.fragment_accounts.* import kotlinx.android.synthetic.main.layout_exception_handler.* @@ -16,11 +18,14 @@ import org.apache.fineract.data.models.accounts.Account import org.apache.fineract.ui.adapters.AccountsAdapter import org.apache.fineract.ui.base.FineractBaseActivity import org.apache.fineract.ui.base.FineractBaseFragment +import org.apache.fineract.ui.base.OnItemClickListener +import org.apache.fineract.ui.online.accounting.accounts.accountdetails.AccountDetailActivity +import org.apache.fineract.utils.ConstantKeys import java.util.* import javax.inject.Inject -class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefreshLayout.OnRefreshListener { +class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefreshLayout.OnRefreshListener, OnItemClickListener { @Inject lateinit var accountsPresenter: AccountsPresenter @@ -28,7 +33,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr @Inject lateinit var accountsAdapter: AccountsAdapter - lateinit var accountList : List + lateinit var accountList: List companion object { fun newInstance() = AccountsFragment() @@ -37,7 +42,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setHasOptionsMenu(true) - accountList= ArrayList() + accountList = ArrayList() } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, @@ -71,6 +76,7 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr rvAccount.setHasFixedSize(true) rvAccount.adapter = accountsAdapter + accountsAdapter.setItemClickListener(this) swipeContainer.setColorSchemeColors(*activity!! .resources.getIntArray(R.array.swipeRefreshColors)) @@ -159,6 +165,16 @@ class AccountsFragment : FineractBaseFragment(), AccountContract.View, SwipeRefr showFineractErrorUI(getString(R.string.accounts)) } + override fun onItemClick(childView: View?, position: Int) { + var intent = Intent(context, AccountDetailActivity::class.java) + intent.putExtra(ConstantKeys.ACCOUNT, accountList.get(position)) + startActivity(intent) + } + + override fun onItemLongPress(childView: View?, position: Int) { + + } + override fun onDestroyView() { super.onDestroyView() accountsPresenter.detachView() diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt similarity index 97% rename from app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt rename to app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt index d8e61163..f07aa810 100644 --- a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/AccountsPresenter.kt +++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountList/AccountsPresenter.kt @@ -1,4 +1,4 @@ -package org.apache.fineract.ui.online.accounting.accounts +package org.apache.fineract.ui.online.accounting.accounts.accountList import android.content.Context import io.reactivex.Observable diff --git a/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt new file mode 100644 index 00000000..133e14e9 --- /dev/null +++ b/app/src/main/java/org/apache/fineract/ui/online/accounting/accounts/accountdetails/AccountDetailActivity.kt @@ -0,0 +1,59 @@ +package org.apache.fineract.ui.online.accounting.accounts.accountdetails + +import android.os.Bundle +import kotlinx.android.synthetic.main.activity_account_detail.* +import org.apache.fineract.R +import org.apache.fineract.data.models.accounts.Account +import org.apache.fineract.ui.base.FineractBaseActivity +import org.apache.fineract.utils.ConstantKeys + +class AccountDetailActivity : FineractBaseActivity() { + + lateinit var account: Account + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_account_detail) + + account = intent.getParcelableExtra(ConstantKeys.ACCOUNT) + setToolbarTitle(getString(R.string.account_details)) + showBackButton() + populateUserInterface() + } + + fun populateUserInterface() { + tvType.text = account.type.toString() + tvIdentifier.text = account.identifier + tvName.text = account.name + tvLedger.text = account.ledger + tvState.text = account.state.toString() + tvAlternativeAccountNumber.text = account.alternativeAccountNumber + tvBalance.text = "$ ${account.balance}" + tvReferenceAmount.text = "$ ${account.referenceAccount}" + tvCreateOn.text = account.createdOn + tvCreatedBy.text = account.createdBy + tvLastModifiedBy.text = account.lastModifiedBy + tvLastModifiedOn.text = account.lastModifiedOn + + tvHolders.text = "\n" + if (account.holders?.size != 0) { + var accountIterator = account.holders?.iterator() + while (accountIterator!!.hasNext()) { + tvHolders.append("${accountIterator.next()}\n") + } + } else { + tvHolders.append("${getString(R.string.no_holder_found)}\n") + } + + tvSignatureAuthorities.text = "\n" + if (account.signatureAuthorities?.size != 0) { + var signatureAuthoritiesIterator = account.signatureAuthorities?.iterator() + while (signatureAuthoritiesIterator!!.hasNext()) { + tvSignatureAuthorities.append("${signatureAuthoritiesIterator.next()}\n") + } + } else { + tvSignatureAuthorities.append("${getString(R.string.no_signature_authorities_found)}\n") + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java index 028076b8..2eaec1a7 100644 --- a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java +++ b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java @@ -2,11 +2,11 @@ /** * @author Rajan Maurya - * On 27/06/17. + * On 27/06/17. */ public class ConstantKeys { - public static final String CUSTOMER_IDENTIFIER = "customer_identifier"; + public static final String CUSTOMER_IDENTIFIER = "customer_identifier"; public static final String CUSTOMER_STATUS = "customer_status"; public static final String IS_NEW_CUSTOMER = "is_new_customer"; public static final String CUSTOMER_ACTION = "customer_action"; @@ -40,4 +40,5 @@ public class ConstantKeys { public static final int PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 3; public static final String PERMISSIONS_READ_EXTERNAL_STORAGE_STATUS = "read_status"; + public static final String ACCOUNT = "account"; } diff --git a/app/src/main/res/layout/activity_account_detail.xml b/app/src/main/res/layout/activity_account_detail.xml new file mode 100644 index 00000000..4edb3318 --- /dev/null +++ b/app/src/main/res/layout/activity_account_detail.xml @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 78fa8ad2..78c1f843 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -38,6 +38,8 @@ 180dp 8dp + 16dp + 8dp 225dp 256dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8744d5d9..acfaa779 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -210,6 +210,14 @@ Identification card scan Role %1$s %2$s + State + Reference Amount + Alternative Account Number + Holders + Signature Authorities + Account Details + No Holder Found + No Signature Authorities Found Account* diff --git a/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt b/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt index 96cddcfc..f3dd57de 100644 --- a/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt +++ b/app/src/test/java/org/apache/fineract/online/AccountPresenterTest.kt @@ -6,11 +6,10 @@ import org.apache.fineract.FakeRemoteDataSource import org.apache.fineract.data.datamanager.DataManagerAccounting import org.apache.fineract.data.models.accounts.AccountPage import org.apache.fineract.exceptions.NoConnectivityException -import org.apache.fineract.ui.online.accounting.accounts.AccountContract -import org.apache.fineract.ui.online.accounting.accounts.AccountsPresenter +import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountContract +import org.apache.fineract.ui.online.accounting.accounts.accountList.AccountsPresenter import org.apache.fineract.util.RxSchedulersOverrideRule import org.junit.After -import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Rule import org.junit.Test