├── app ├── .gitignore ├── src │ ├── main │ │ ├── resources │ │ │ ├── test.json │ │ │ ├── scanCard.json │ │ │ ├── entries.json │ │ │ ├── depositAccount.json │ │ │ ├── plannedPaymentPage.json │ │ │ ├── command.json │ │ │ ├── identification.json │ │ │ ├── customer.json │ │ │ ├── loanAccount.json │ │ │ ├── loanAccounts.json │ │ │ └── products.json │ │ ├── res │ │ │ ├── drawable │ │ │ │ ├── bg_about.png │ │ │ │ ├── mifos_logo_new.png │ │ │ │ ├── round_corner.xml │ │ │ │ ├── notification_circle.xml │ │ │ │ ├── ic_filter_list_black_24dp.xml │ │ │ │ ├── ic_add_white_24dp.xml │ │ │ │ ├── launcher_background.xml │ │ │ │ ├── ic_keyboard_arrow_right_black_24dp.xml │ │ │ │ ├── ic_show_chart_black_24dp.xml │ │ │ │ ├── review_circle_bg.xml │ │ │ │ ├── ic_delete_black_24dp.xml │ │ │ │ ├── ic_close_black_24dp.xml │ │ │ │ ├── ic_info_black_24dp.xml │ │ │ │ ├── ic_compare_arrows_black_24dp.xml │ │ │ │ ├── ic_account_balance_black_24dp.xml │ │ │ │ ├── ic_check_circle_black_24dp.xml │ │ │ │ ├── ic_person_black_24dp.xml │ │ │ │ ├── ic_logout.xml │ │ │ │ ├── ic_payment_black_24dp.xml │ │ │ │ ├── ic_label_black_24dp.xml │ │ │ │ ├── ic_hourglass_empty_black_24dp.xml │ │ │ │ ├── ic_done_all_black_24dp.xml │ │ │ │ ├── ic_notifications.xml │ │ │ │ ├── ic_access_time_black_24dp.xml │ │ │ │ ├── ic_edit_black_24dp.xml │ │ │ │ ├── ic_surveys_48px.xml │ │ │ │ ├── ic_search_black_24dp.xml │ │ │ │ ├── ic_lock_black_24dp.xml │ │ │ │ ├── ic_password_black_24dp.xml │ │ │ │ ├── ic_lock_open_black_24dp.xml │ │ │ │ ├── ic_account_balance_wallet_black_24dp.xml │ │ │ │ ├── ic_beneficiaries_48px.xml │ │ │ │ ├── ic_border_color_black_24dp.xml │ │ │ │ ├── ic_help_black_24dp.xml │ │ │ │ ├── ic_supervisor_account_black_24dp.xml │ │ │ │ ├── ic_products_black_24dp.xml │ │ │ │ ├── ic_share_black_24dp.xml │ │ │ │ ├── ic_monetization_on_black_24dp.xml │ │ │ │ ├── ic_sentiment_dissatisfied_black_24dp.xml │ │ │ │ └── ic_settings.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ │ ├── Validations.xml │ │ │ │ ├── ids.xml │ │ │ │ ├── styles_linear.xml │ │ │ │ ├── attr.xml │ │ │ │ ├── styles_frame.xml │ │ │ │ ├── styles_view.xml │ │ │ │ ├── styles_text.xml │ │ │ │ └── styles_toolbar.xml │ │ │ ├── menu │ │ │ │ ├── menu_identification_card.xml │ │ │ │ ├── menu_loan_account_details.xml │ │ │ │ ├── menu_main.xml │ │ │ │ ├── menu_customer_profile.xml │ │ │ │ ├── menu_product_search.xml │ │ │ │ ├── menu_transactions_search.xml │ │ │ │ ├── menu_identification_search.xml │ │ │ │ └── menu_account.xml │ │ │ ├── layout │ │ │ │ ├── globalcontainer.xml │ │ │ │ ├── activity_global_container.xml │ │ │ │ ├── fragment_settings.xml │ │ │ │ ├── toolbar.xml │ │ │ │ ├── activity_toolbar_container.xml │ │ │ │ ├── layout_bottom_content.xml │ │ │ │ ├── fragment_view_scan_card.xml │ │ │ │ ├── layout_collapsing_header_view.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── fragment_recent_transactions.xml │ │ │ │ ├── fragment_customer_activities.xml │ │ │ │ ├── fragment_product.xml │ │ │ │ ├── fragment_identification_list.xml │ │ │ │ ├── activity_customer_profile.xml │ │ │ │ ├── row_checkbox.xml │ │ │ │ ├── activity_view_scan_card.xml │ │ │ │ ├── action_bar_notification_layout.xml │ │ │ │ ├── activity_loan_application.xml │ │ │ │ ├── fragment_accounts.xml │ │ │ │ ├── activity_debt_income_report.xml │ │ │ │ ├── fragment_client_accounts.xml │ │ │ │ ├── bottom_sheet_filter_accounts.xml │ │ │ │ ├── nav_drawer_header.xml │ │ │ │ └── activity_privacy_policy.xml │ │ │ ├── drawable-v24 │ │ │ │ ├── circular_bg.xml │ │ │ │ ├── ic_arrow_drop_down_black_24dp.xml │ │ │ │ ├── ic_arrow_drop_up_black_24dp.xml │ │ │ │ ├── circle_bg_tap.xml │ │ │ │ ├── circle_bg_idle.xml │ │ │ │ ├── ic_smartphone_black_24dp.xml │ │ │ │ ├── ic_email_black_24dp.xml │ │ │ │ ├── ic_task_black_24dp.xml │ │ │ │ ├── ic_description_black_24dp.xml │ │ │ │ ├── ic_event_black_24dp.xml │ │ │ │ ├── ic_place_black_24dp.xml │ │ │ │ ├── ic_perm_contact_calendar_black_24dp.xml │ │ │ │ ├── ic_phone_black_24dp.xml │ │ │ │ ├── ic_autorenew_black_24dp.xml │ │ │ │ ├── ic_person_outline_black_24dp.xml │ │ │ │ ├── ic_people_black_24dp.xml │ │ │ │ ├── ic_attach_money_black_24dp.xml │ │ │ │ ├── ic_cake_black_24dp.xml │ │ │ │ └── ic_launcher_foreground.xml │ │ │ └── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ └── kotlin │ │ │ └── org │ │ │ └── mifos │ │ │ └── mobile │ │ │ └── cn │ │ │ ├── data │ │ │ ├── models │ │ │ │ ├── TestModel.kt │ │ │ │ ├── product │ │ │ │ │ ├── InterestBasis.kt │ │ │ │ │ ├── BalanceRange.kt │ │ │ │ │ ├── InterestRange.kt │ │ │ │ │ ├── ProductPage.kt │ │ │ │ │ └── Product.kt │ │ │ │ ├── CheckboxStatus.kt │ │ │ │ ├── payment │ │ │ │ │ ├── ChargeName.kt │ │ │ │ │ ├── CostComponent.kt │ │ │ │ │ ├── PlannedPayment.kt │ │ │ │ │ └── PlannedPaymentPage.kt │ │ │ │ ├── accounts │ │ │ │ │ ├── loan │ │ │ │ │ │ ├── TermRange.kt │ │ │ │ │ │ ├── LoanAccountPage.kt │ │ │ │ │ │ ├── AccountAssignment.kt │ │ │ │ │ │ ├── CreditWorthinessFactor.kt │ │ │ │ │ │ ├── PaymentCycle.kt │ │ │ │ │ │ ├── LoanParameters.kt │ │ │ │ │ │ ├── CreditWorthinessSnapshot.kt │ │ │ │ │ │ └── LoanAccount.kt │ │ │ │ │ └── deposit │ │ │ │ │ │ └── DepositAccount.kt │ │ │ │ ├── customer │ │ │ │ │ ├── CustomerPage.kt │ │ │ │ │ ├── AccountEntriesPage.kt │ │ │ │ │ ├── Country.kt │ │ │ │ │ ├── identification │ │ │ │ │ │ ├── ScanCard.kt │ │ │ │ │ │ ├── ExpirationDate.kt │ │ │ │ │ │ └── Identification.kt │ │ │ │ │ ├── Translations.kt │ │ │ │ │ ├── AccountEntry.kt │ │ │ │ │ ├── Command.kt │ │ │ │ │ ├── DateOfBirth.kt │ │ │ │ │ ├── Address.kt │ │ │ │ │ └── ContactDetail.kt │ │ │ │ └── Authentication.kt │ │ │ ├── services │ │ │ │ ├── AnonymousService.kt │ │ │ │ ├── AuthService.kt │ │ │ │ ├── IndividualLendingService.kt │ │ │ │ ├── DepositService.kt │ │ │ │ └── LoanService.kt │ │ │ ├── remote │ │ │ │ ├── EndPoints.kt │ │ │ │ ├── BaseUrl.kt │ │ │ │ └── MifosInterceptor.kt │ │ │ ├── local │ │ │ │ ├── PreferenceKey.kt │ │ │ │ └── DatabaseHelperCustomer.kt │ │ │ ├── datamanager │ │ │ │ ├── DataManagerLoan.kt │ │ │ │ ├── DataManagerDepositDetails.kt │ │ │ │ ├── DataManagerIndividualLending.kt │ │ │ │ └── DataManagerAuth.kt │ │ │ ├── dbmodel │ │ │ │ └── LoanResponse.kt │ │ │ ├── databasehelper │ │ │ │ └── DataBaseHelperLoan.kt │ │ │ └── DataManagerLoanDetails.kt │ │ │ ├── enums │ │ │ └── AccountType.kt │ │ │ ├── injection │ │ │ ├── ActivityContext.kt │ │ │ ├── ApplicationContext.kt │ │ │ ├── ConfigPersistent.kt │ │ │ ├── PerActivity.kt │ │ │ ├── module │ │ │ │ ├── ActivityModule.kt │ │ │ │ └── ApplicationModule.kt │ │ │ └── component │ │ │ │ ├── ConfigPersistentComponent.kt │ │ │ │ └── ApplicationComponent.kt │ │ │ ├── ui │ │ │ ├── mifos │ │ │ │ ├── loanApplication │ │ │ │ │ ├── CreditWorthinessSource.kt │ │ │ │ │ ├── loanActivity │ │ │ │ │ │ ├── LoanApplicationContract.kt │ │ │ │ │ │ └── LoanApplicationPresenter.kt │ │ │ │ │ ├── loanDetails │ │ │ │ │ │ └── LoanDetailsContract.kt │ │ │ │ │ ├── OnNavigationBarListener.kt │ │ │ │ │ ├── loancosigner │ │ │ │ │ │ └── LoanCosignerFragment.kt │ │ │ │ │ └── LoanDebtIncome │ │ │ │ │ │ └── LoanDebtIncomeFragment.kt │ │ │ │ ├── customerProfile │ │ │ │ │ └── CustomerProfileContract.kt │ │ │ │ ├── login │ │ │ │ │ └── LoginContract.kt │ │ │ │ ├── aboutus │ │ │ │ │ └── AboutUsActivity.kt │ │ │ │ ├── customerDepositDetails │ │ │ │ │ └── CustomerDepositDetailsContracts.kt │ │ │ │ ├── customerLoanDetails │ │ │ │ │ └── CustomerLoanDetailsContracts.kt │ │ │ │ ├── customerActivities │ │ │ │ │ ├── CustomerAcitivitesContracts.kt │ │ │ │ │ └── CustomerActivitiesActivity.kt │ │ │ │ ├── identificationlist │ │ │ │ │ ├── IdentificationsActivity.kt │ │ │ │ │ └── IdentificationsContract.kt │ │ │ │ ├── customerDetails │ │ │ │ │ ├── CustomerDetailsActivity.kt │ │ │ │ │ └── CustomerDetailsContract.kt │ │ │ │ ├── products │ │ │ │ │ └── ProductContracts.kt │ │ │ │ ├── accounts │ │ │ │ │ └── AccountsContract.kt │ │ │ │ ├── plannedPlayment │ │ │ │ │ ├── PlannedPaymentActivity.kt │ │ │ │ │ └── PlannedPaymentContract.kt │ │ │ │ ├── identificationdetails │ │ │ │ │ └── IdentificationDetailsContract.kt │ │ │ │ ├── recentTransactions │ │ │ │ │ └── RecentTransactionsContracts.kt │ │ │ │ ├── launcher │ │ │ │ │ └── LauncherActivity.kt │ │ │ │ └── settings │ │ │ │ │ └── SettingsFragment.kt │ │ │ ├── utils │ │ │ │ ├── glideutils │ │ │ │ │ └── MifosGlideModule.kt │ │ │ │ ├── RxBus.kt │ │ │ │ ├── DataBus.kt │ │ │ │ ├── Utils.kt │ │ │ │ ├── ProgressBarHandler.kt │ │ │ │ ├── RxEvent.kt │ │ │ │ ├── ConstantKeys.kt │ │ │ │ └── ScrollFabBehaviour.kt │ │ │ ├── base │ │ │ │ ├── MvpView.kt │ │ │ │ ├── Presenter.kt │ │ │ │ ├── BaseActivityCallback.kt │ │ │ │ ├── OnItemClickListener.kt │ │ │ │ └── BasePresenter.kt │ │ │ ├── adapter │ │ │ │ ├── ViewPagerAdapter.kt │ │ │ │ ├── DebtIncomeReportAdapter.kt │ │ │ │ └── LoanApplicationStepAdapter.kt │ │ │ └── views │ │ │ │ └── HeaderView.kt │ │ │ ├── exceptions │ │ │ ├── NoConnectivityException.kt │ │ │ └── ExceptionStatusCode.kt │ │ │ ├── local │ │ │ └── MifosCnDatabase.kt │ │ │ ├── fakesource │ │ │ └── FakeJsonName.kt │ │ │ └── MifosApplication.kt │ ├── commonTest │ │ └── kotlin │ │ │ └── org │ │ │ └── mifos │ │ │ └── mobile │ │ │ └── cn │ │ │ ├── FakeJsonName.kt │ │ │ ├── FakeRemoteDataSource.kt │ │ │ └── TestDataFactory.kt │ ├── test │ │ └── java │ │ │ └── org │ │ │ └── mifos │ │ │ └── mobile │ │ │ └── cn │ │ │ └── ExampleUnitTest.kt │ └── androidTest │ │ └── java │ │ └── org │ │ └── mifos │ │ └── mobile │ │ └── cn │ │ └── ExampleInstrumentedTest.kt └── proguard-rules.pro ├── settings.gradle ├── renovate.json ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── config └── quality │ ├── findbugs │ └── android-exclude-filter.xml │ └── pmd │ └── pmd-ruleset.xml ├── .github ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE.md ├── .travis.yml ├── gradle.properties ├── .gitignore ├── COMMIT_STYLE.md └── README.md /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/src/main/resources/test.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/resources/scanCard.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "description": "description", 4 | "identifier": "identifier" 5 | } 6 | ] -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/drawable/bg_about.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/mifos_logo_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/drawable/mifos_logo_new.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openMF/mifos-mobile-cn/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/TestModel.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models 2 | 3 | /** 4 | * @author Rajan Maurya 5 | * On 29/05/18. 6 | */ 7 | data class TestModel (val data: String) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/product/InterestBasis.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.product 2 | 3 | enum class InterestBasis { 4 | 5 | CURRENT_BALANCE, 6 | BEGINNING_BALANCE 7 | } -------------------------------------------------------------------------------- /app/src/main/res/values/Validations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 5 | 6 6 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/services/AnonymousService.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.services 2 | 3 | 4 | /** 5 | * @author Rajan Maurya 6 | * On 22/01/18. 7 | */ 8 | interface AnonymousService { 9 | 10 | } -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_identification_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_loan_account_details.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/commonTest/kotlin/org/mifos/mobile/cn/FakeJsonName.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn 2 | 3 | /** 4 | * @author Rajan Maurya 5 | * On 30/04/18. 6 | */ 7 | object FakeJsonName { 8 | 9 | var TEST_JSON = "test.json" 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/enums/AccountType.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.enums 2 | 3 | /** 4 | * @author Manish Kumar 5 | * @since 08/July/2018 6 | */ 7 | enum class AccountType { 8 | 9 | LOAN , 10 | DEPOSIT 11 | } -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/injection/ActivityContext.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.injection 2 | 3 | import javax.inject.Qualifier 4 | 5 | @Qualifier 6 | @Retention(AnnotationRetention.RUNTIME) 7 | annotation class ActivityContext 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/injection/ApplicationContext.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.injection 2 | 3 | import javax.inject.Qualifier 4 | 5 | @Qualifier 6 | @Retention(AnnotationRetention.RUNTIME) 7 | annotation class ApplicationContext 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/loanApplication/CreditWorthinessSource.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.mifos.loanApplication 2 | 3 | enum class CreditWorthinessSource { 4 | 5 | DEBT, 6 | 7 | INCOME, 8 | 9 | EDIT_DEBT, 10 | 11 | EDIT_INCOME 12 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jun 12 21:01:44 IST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/CheckboxStatus.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models 2 | 3 | /** 4 | * @author Manish Kumar 5 | * @since 13/July/2018 6 | */ 7 | 8 | data class CheckboxStatus(var status: String?, var color: Int) { 9 | 10 | var isChecked: Boolean = false 11 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/globalcontainer.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_global_container.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/exceptions/NoConnectivityException.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.exceptions 2 | 3 | import java.io.IOException 4 | 5 | class NoConnectivityException : IOException() { 6 | 7 | override fun getLocalizedMessage(): String { 8 | return "No connectivity exception" 9 | } 10 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/notification_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/payment/ChargeName.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.payment 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class ChargeName ( 6 | @SerializedName("identifier") var identifier: String? = null, 7 | @SerializedName("name") var name: String? = null 8 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/TermRange.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class TermRange( 6 | @SerializedName("temporalUnit") var temporalUnit: String?, 7 | @SerializedName("maximum") var maximum: Double? 8 | ) 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/product/BalanceRange.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.product 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class BalanceRange ( 6 | @SerializedName("minimum") var minimum: Double? = null, 7 | @SerializedName("maximum") var maximum: Double? = null 8 | ) 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/product/InterestRange.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.product 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class InterestRange ( 6 | @SerializedName("minimum") var minimum: Double? = null, 7 | @SerializedName("maximum") var maximum: Double? = null 8 | ) 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/circular_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/payment/CostComponent.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.payment 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class CostComponent ( 6 | @SerializedName("chargeIdentifier") var chargeIdentifier: String? = null, 7 | @SerializedName("amount") var amount: Double? = null 8 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/glideutils/MifosGlideModule.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.utils.glideutils 2 | 3 | import com.bumptech.glide.annotation.GlideModule 4 | import com.bumptech.glide.module.AppGlideModule 5 | 6 | /** 7 | * @author Rajan Maurya 8 | * On 18/05/18. 9 | */ 10 | @GlideModule 11 | class MifosGlideModule : AppGlideModule() -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_filter_list_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/injection/ConfigPersistent.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.injection 2 | 3 | import javax.inject.Scope 4 | 5 | /** 6 | * A scoping annotation to permit dependencies conform to the life of the 7 | * [@ConfigPersistentComponent] 8 | */ 9 | @MustBeDocumented 10 | @Scope 11 | @Retention(AnnotationRetention.RUNTIME) 12 | annotation class ConfigPersistent 13 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/base/MvpView.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.base 2 | 3 | /** 4 | * Base interface that any class that wants to act as a View in the MVP (Model View Presenter) 5 | * pattern must implement. Generally this interface will be extended by a more specific interface 6 | * that then usually will be implemented by an Activity or Fragment. 7 | */ 8 | interface MvpView 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/base/Presenter.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.base 2 | 3 | /** 4 | * Every presenter in the app must either implement this interface or extend BasePresenter 5 | * indicating the MvpView type that wants to be attached with. 6 | */ 7 | interface Presenter { 8 | 9 | fun attachView(mvpView: V) 10 | 11 | fun detachView() 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles_linear.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_arrow_drop_down_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_arrow_drop_up_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/attr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/product/ProductPage.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.product 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class ProductPage ( 6 | @SerializedName("elements") val elements: List? = null, 7 | @SerializedName("totalPages") val totalPages: Int? = null, 8 | @SerializedName("totalElements") val totalElements: Long? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/injection/PerActivity.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.injection 2 | 3 | import javax.inject.Scope 4 | 5 | /** 6 | * A scoping annotation to permit objects whose lifetime should 7 | * conform to the life of the Activity to be memorised in the 8 | * correct component. 9 | */ 10 | @MustBeDocumented 11 | @Scope 12 | @Retention(AnnotationRetention.RUNTIME) 13 | annotation class PerActivity 14 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/CustomerPage.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class CustomerPage( 6 | @SerializedName("customers") var customers: List? = null, 7 | @SerializedName("totalPages") var totalPages: Int? = null, 8 | @SerializedName("totalElements") var totalElements: Long? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/customerProfile/CustomerProfileContract.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.mifos.customerProfile 2 | 3 | import org.mifos.mobile.cn.ui.base.MvpView 4 | 5 | interface CustomerProfileContract { 6 | 7 | interface View: MvpView{ 8 | fun checkWriteExternalStoragePermission(); 9 | 10 | fun requestPermission(); 11 | 12 | fun loadCustomerPortrait(); 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/circle_bg_tap.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_show_chart_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/review_circle_bg.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/AccountEntriesPage.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class AccountEntriesPage ( 6 | @SerializedName("accountEntries") val entries:List?=null, 7 | @SerializedName("totalPages") val totalPages: Int? = null, 8 | @SerializedName("totalElements") val totalElements: Long? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/LoanAccountPage.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class LoanAccountPage( 6 | @SerializedName("elements") var loanAccounts: List? = null, 7 | @SerializedName("totalPages") var totalPages: Int? = null, 8 | @SerializedName("totalElements") var totalElements: Long? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/circle_bg_idle.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_smartphone_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_email_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_customer_profile.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/org/mifos/mobile/cn/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/AccountAssignment.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class AccountAssignment ( 6 | @SerializedName("designator") var designator: String? = null, 7 | @SerializedName("accountIdentifier") var accountIdentifier: String? = null, 8 | @SerializedName("ledgerIdentifier") var ledgerIdentifier: String? = null 9 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/Country.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | /** 6 | * @author Rajan Maurya 7 | * On 26/07/17. 8 | */ 9 | 10 | data class Country( 11 | @SerializedName("translations") var translations: Translations, 12 | @SerializedName("name") var name: String, 13 | @SerializedName("alpha2Code") var alphaCode: String 14 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/identification/ScanCard.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer.identification 2 | 3 | import android.os.Parcelable 4 | 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.android.parcel.Parcelize 7 | 8 | @Parcelize 9 | data class ScanCard( 10 | @SerializedName("description") var description: String, 11 | @SerializedName("identifier") var identifier: String 12 | ) : Parcelable -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_compare_arrows_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/base/BaseActivityCallback.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.base 2 | 3 | import androidx.appcompat.widget.Toolbar 4 | 5 | interface BaseActivityCallback { 6 | 7 | fun getToolbar(): Toolbar 8 | 9 | fun showJusticeProgressDialog(message: String) 10 | 11 | fun showTabLayout(show: Boolean) 12 | 13 | fun setToolbarTitle(toolbarTitle: String) 14 | 15 | fun hideJusticeProgressDialog() 16 | 17 | fun logout() 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_task_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_account_balance_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/CreditWorthinessFactor.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import android.os.Parcelable 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.android.parcel.Parcelize 6 | 7 | @Parcelize 8 | data class CreditWorthinessFactor( 9 | @SerializedName("description") var description: String? = null, 10 | @SerializedName("amount") var amount: Double? = null 11 | ) : Parcelable -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check_circle_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_logout.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles_frame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_payment_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/Translations.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer 2 | 3 | /** 4 | * @author Rajan Maurya 5 | * On 26/07/17. 6 | */ 7 | class Translations { 8 | internal var br: String? = null 9 | internal var En: String? = null 10 | internal var From: String? = null 11 | internal var Is: String? = null 12 | internal var Fr: String? = null 13 | internal var ja: String? = null 14 | internal var It: String? = null 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_label_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_product_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /config/quality/findbugs/android-exclude-filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_hourglass_empty_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_transactions_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/identification/ExpirationDate.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer.identification 2 | 3 | import android.os.Parcelable 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.android.parcel.Parcelize 6 | 7 | 8 | @Parcelize 9 | data class ExpirationDate( 10 | @SerializedName("year") var year: Int? = null, 11 | @SerializedName("month") var month: Int? = null, 12 | @SerializedName("day") var day: Int? = null 13 | ) : Parcelable 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_description_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_done_all_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_identification_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_event_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_place_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notifications.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_access_time_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/payment/PlannedPayment.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.payment 2 | 3 | import com.google.gson.annotations.SerializedName 4 | import java.util.ArrayList 5 | 6 | data class PlannedPayment ( 7 | @SerializedName("interestRate") var interestRate: Double? = null, 8 | @SerializedName("costComponents") var costComponents: List = ArrayList(), 9 | @SerializedName("remainingPrincipal") var remainingPrincipal: Double? = null, 10 | @SerializedName("date") var date: String? = null 11 | ) -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/resources/entries.json: -------------------------------------------------------------------------------- 1 | [ { 2 | "type" : "CREDIT", 3 | "transactionDate" : "2018-06-13T09:37:11.508Z", 4 | "message" : "Message 0", 5 | "amount" : 5.0, 6 | "balance" : -5.0 7 | }, { 8 | "type" : "CREDIT", 9 | "transactionDate" : "2018-06-13T09:37:11.508Z", 10 | "message" : "Message 1", 11 | "amount" : 5.0, 12 | "balance" : -10.0 13 | }, { 14 | "type" : "CREDIT", 15 | "transactionDate" : "2018-06-13T09:37:11.509Z", 16 | "message" : "Message 2", 17 | "amount" : 5.0, 18 | "balance" : -15.0 19 | } 20 | ] -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Issue Fix 2 | Fixes #Issue_Number 3 | 4 | ## Screenshots 5 | 6 | 7 | ## Description 8 | 9 | 10 | ## 11 | 12 | 13 | - [ ] Run the unit tests with `./gradlew check` to make sure you didn't break anything 14 | 15 | - [ ] If you have multiple commits please combine them into one commit by squashing them. 16 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/payment/PlannedPaymentPage.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.payment 2 | 3 | import com.google.gson.annotations.SerializedName 4 | import java.util.ArrayList 5 | 6 | data class PlannedPaymentPage ( 7 | @SerializedName("chargeNames") var chargeNames: List = ArrayList(), 8 | @SerializedName("elements") var elements: List = ArrayList(), 9 | @SerializedName("totalPages") var totalPages: Int? = null, 10 | @SerializedName("totalElements") var totalElements: Long? = null 11 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/local/MifosCnDatabase.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.local 2 | 3 | import com.raizlabs.android.dbflow.annotation.Database 4 | 5 | /** 6 | * @author Manish Kumar 7 | * @since 31/July/2018 8 | */ 9 | 10 | @Database(name = MifosCnDatabase.NAME, version = MifosCnDatabase.VERSION, foreignKeyConstraintsEnforced = true) 11 | class MifosCnDatabase { 12 | companion object { 13 | // database name will be Mifos.db 14 | const val NAME = "MifosCn" 15 | //Always Increase the Version Number 16 | const val VERSION = 1 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_surveys_48px.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/PaymentCycle.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class PaymentCycle ( 6 | @SerializedName("temporalUnit") var temporalUnit: String? = null, 7 | @SerializedName("period") var period: Int? = null, 8 | @SerializedName("alignmentDay") var alignmentDay: Int? = null, 9 | @SerializedName("alignmentWeek") var alignmentWeek: Int? = null, 10 | @SerializedName("alignmentMonth") var alignmentMonth: Int? = null 11 | ) 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_perm_contact_calendar_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_phone_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/remote/EndPoints.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.remote 2 | 3 | object EndPoints { 4 | 5 | /* 6 | * API End Paths 7 | * <- This section manage the different type of end points 8 | */ 9 | const val API_AUTH_PATH = "/customer" 10 | const val API_IDENTITY_PATH = "/identity/v1" 11 | const val API_CUSTOMER_PATH = "/api/customer/v1" 12 | const val API_DEPOSIT_PATH = "/api/deposit/v1" 13 | const val API_PORTFOLIO_PATH = "/api/portfolio/v1" 14 | const val API_ACCOUNTING_PATH = "/api/accounting/v1" 15 | const val API_TELLER_PATH = "/api/teller/v1" 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_password_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/customer/AccountEntry.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.customer 2 | 3 | import android.os.Parcelable 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.android.parcel.Parcelize 6 | 7 | 8 | @Parcelize 9 | data class AccountEntry ( 10 | @SerializedName("type") val type: String, 11 | @SerializedName("transactionDate") val transactionDate: String? = null, 12 | @SerializedName("message") val message: String?=null, 13 | @SerializedName("amount") val amount : Double?=null, 14 | @SerializedName("balance") val balance: Double?=null 15 | ): Parcelable -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/RxBus.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.utils 2 | 3 | import io.reactivex.Observable 4 | import io.reactivex.subjects.PublishSubject 5 | 6 | // Use object so we have a singleton instance 7 | object RxBus { 8 | 9 | private val publisher = PublishSubject.create() 10 | 11 | fun publish(event: Any) { 12 | publisher.onNext(event) 13 | } 14 | 15 | // Listen should return an Observable and not the publisher 16 | // Using ofType we filter only events that match that class type 17 | fun listen(eventType: Class): Observable = publisher.ofType(eventType) 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_open_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/services/AuthService.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.services 2 | 3 | import io.reactivex.Observable 4 | import org.mifos.mobile.cn.data.models.Authentication 5 | import org.mifos.mobile.cn.data.remote.EndPoints 6 | import retrofit2.http.POST 7 | 8 | /** 9 | * @author Rajan Maurya 10 | * On 22/01/18. 11 | */ 12 | interface AuthService { 13 | 14 | /*@GET("/authentication") 15 | fun login(loginRequest: LoginRequest): Observable*/ 16 | @POST(EndPoints.API_IDENTITY_PATH + "/token?grant_type=refresh_token") 17 | abstract fun refreshToken(): Observable 18 | } -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/utils/DataBus.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.utils 2 | 3 | import io.reactivex.Observable 4 | import io.reactivex.subjects.PublishSubject 5 | 6 | // Use object so we have a singleton instance 7 | object DataBus { 8 | 9 | private val publisher = PublishSubject.create() 10 | 11 | fun publish(event: Any) { 12 | publisher.onNext(event) 13 | } 14 | 15 | // Listen should return an Observable and not the publisher 16 | // Using ofType we filter only events that match that class type 17 | fun listen(eventType: Class): Observable = publisher.ofType(eventType) 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_autorenew_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_account_balance_wallet_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/loanApplication/loanActivity/LoanApplicationContract.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.mifos.loanApplication.loanActivity 2 | 3 | import org.mifos.mobile.cn.data.models.accounts.loan.LoanAccount 4 | import org.mifos.mobile.cn.ui.base.MvpView 5 | 6 | /** 7 | * @author Manish Kumar 8 | * @since 01/August/2018 9 | */ 10 | class LoanApplicationContract { 11 | 12 | interface View : MvpView { 13 | fun applicationCreatedSuccessfully() 14 | fun showError(message: String) 15 | } 16 | 17 | interface Presenter { 18 | fun createLoan(loanAccount: LoanAccount) 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/login/LoginContract.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.mifos.login 2 | 3 | import org.mifos.mobile.cn.ui.base.MvpView 4 | 5 | interface LoginContract { 6 | interface View : MvpView { 7 | //TODO:edit this for access tokens and other user data 8 | fun showUserLoginSuccessfully() 9 | 10 | fun showUserLoginUnSuccessfully() 11 | 12 | fun showError(errorMessage: String) 13 | 14 | fun showProgress() 15 | 16 | fun hideProgress() 17 | } 18 | 19 | interface Presenter { 20 | 21 | fun login(username: String, password: String) 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_beneficiaries_48px.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/commonTest/kotlin/org/mifos/mobile/cn/FakeRemoteDataSource.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn 2 | 3 | import org.mifos.mobile.cn.TestDataFactory 4 | 5 | /** 6 | * FakeRemoteDataSource is reading the local json files into the java object using gson. 7 | * Created by Rajan Maurya on 25/6/17. 8 | */ 9 | class FakeRemoteDataSource { 10 | 11 | companion object { 12 | 13 | private val testDataFactory = TestDataFactory() 14 | 15 | /*fun getTestJson(): TestJson { 16 | return testDataFactory.convertJsonToDataObject(object : TypeToken() { 17 | }, FakeJsonName.TEST_JSON) 18 | }*/ 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_person_outline_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/exceptions/ExceptionStatusCode.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.exceptions 2 | 3 | import retrofit2.HttpException 4 | 5 | /** 6 | * @author Rajan Maurya 7 | * On 07/05/18. 8 | */ 9 | object ExceptionStatusCode { 10 | 11 | fun isHttp401Error(throwable: Throwable): Boolean { 12 | return (throwable as HttpException).code() == 401 13 | } 14 | 15 | fun isHttp500Error(throwable: Throwable): Boolean { 16 | return (throwable as HttpException).code() == 500 17 | } 18 | fun isHttp403Error(throwable: Throwable): Boolean{ 19 | return (throwable as HttpException).code() == 403 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_border_color_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_help_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/resources/depositAccount.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "customerIdentifier": "customerIdentifier", 4 | "productIdentifier": "productIdentifier", 5 | "accountIdentifier": "accountIdentifier", 6 | "beneficiaries": [ 7 | "beneficiaries:1", 8 | "beneficiaries:2" 9 | ], 10 | "state": "CREATED", 11 | "balance": 245.50 12 | }, 13 | { 14 | "customerIdentifier": "customerIdentifier", 15 | "productIdentifier": "productIdentifier", 16 | "accountIdentifier": "accountIdentifier", 17 | "beneficiaries": [ 18 | "beneficiaries:1", 19 | "beneficiaries:2" 20 | ], 21 | "state": "CREATED", 22 | "balance": 245.50 23 | } 24 | ] -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/local/PreferenceKey.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.local 2 | 3 | object PreferenceKey { 4 | 5 | const val PREF_ICOMMIT = "preferences_icommit" 6 | 7 | const val PREF_KEY_ACCESS_TOKEN = "PREF_KEY_ACCESS_TOKEN" 8 | 9 | const val PREF_KEY_LOGIN_STATUS = "PREF_KEY_LOGIN_STATUS" 10 | 11 | const val PREF_KEY_USER_NAME = "PREF_KEY_USER_NAME" 12 | 13 | //TODO:remove this while implementing API 14 | const val PREF_KEY_PASSWORD = "PREF_KEY_PASSWORD" 15 | 16 | const val PREF_KEY_REFRESH_ACCESS_TOKEN = "PREF_KEY_REFRESH_ACCESS_TOKEN" 17 | 18 | const val PREF_KEY_SIGNED_IN_USER = "PREF_KEY_SIGNED_IN_USER" 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_people_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/accounts/loan/LoanParameters.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models.accounts.loan 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class LoanParameters( 6 | @SerializedName("customerIdentifier") var customerIdentifier: String? = null, 7 | @SerializedName("creditWorthinessSnapshots") var creditWorthinessSnapshots: 8 | List? = null, 9 | @SerializedName("maximumBalance") var maximumBalance: Double? = null, 10 | @SerializedName("termRange") var termRange: TermRange? = null, 11 | @SerializedName("paymentCycle") var paymentCycle: PaymentCycle? = null 12 | ) -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/models/Authentication.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.models 2 | 3 | import android.os.Parcelable 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.android.parcel.Parcelize 6 | 7 | @Parcelize 8 | data class Authentication( 9 | @SerializedName("tokenType") var tokenType: String, 10 | @SerializedName("accessToken") var accessToken: String, 11 | @SerializedName("accessTokenExpiration") var accessTokenExpiration: String, 12 | @SerializedName("refreshTokenExpiration") var refreshTokenExpiration: String, 13 | @SerializedName("passwordExpiration") var passwordExpiration: String 14 | ) : Parcelable 15 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/ui/mifos/aboutus/AboutUsActivity.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.ui.mifos.aboutus 2 | 3 | import android.os.Bundle 4 | import kotlinx.android.synthetic.main.globalcontainer.* 5 | import org.mifos.mobile.cn.R 6 | import org.mifos.mobile.cn.ui.base.MifosBaseActivity 7 | 8 | class AboutUsActivity: MifosBaseActivity() { 9 | 10 | override fun onCreate(savedInstanceState: Bundle?) { 11 | super.onCreate(savedInstanceState) 12 | setContentView(R.layout.activity_toolbar_container) 13 | setToolbarTitle(getString(R.string.about_us)) 14 | showBackButton() 15 | replaceFragment(AboutUsFragment.newInstance(),false,R.id.container) 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_supervisor_account_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_toolbar_container.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | jdk: oraclejdk8 3 | sudo: required 4 | android: 5 | components: 6 | - tools 7 | - extra-android-support 8 | - extra-google-google_play_services 9 | - extra-android-m2repository 10 | - extra-google-m2repository 11 | - build-tools-28.0.3 12 | - android-28 13 | - android-22 14 | - sys-img-armeabi-v7a-android-22 15 | - platform-tools 16 | 17 | 18 | 19 | before_script: 20 | - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a 21 | - emulator -avd test -no-skin -no-audio -no-window & 22 | - android-wait-for-emulator 23 | - adb shell input keyevent 82 & 24 | 25 | script: "./gradlew build connectedAndroidTest --stacktrace" 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/mifos/mobile/cn/data/datamanager/DataManagerLoan.kt: -------------------------------------------------------------------------------- 1 | package org.mifos.mobile.cn.data.datamanager 2 | 3 | import io.reactivex.Observable 4 | import org.mifos.mobile.cn.data.databasehelper.DataBaseHelperLoan 5 | import org.mifos.mobile.cn.data.models.accounts.loan.LoanAccount 6 | import javax.inject.Inject 7 | import javax.inject.Singleton 8 | 9 | /** 10 | * @author Manish Kumar 11 | * @since 31/July/2018 12 | */ 13 | 14 | @Singleton 15 | class DataManagerLoan @Inject constructor(var databBaseHelperLoan: DataBaseHelperLoan) { 16 | 17 | fun saveLoanResponse(loanAccount: LoanAccount) :Observable { 18 | return databBaseHelperLoan.saveLoanResponse(loanAccount) 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_bottom_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 |