Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
shunchaki
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shohboz Qoraboev
shunchaki
Commits
5f3765fd
Commit
5f3765fd
authored
Jan 07, 2022
by
shohboz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[UPD]
MUS-318
Feature, updated payment
parent
d5ffe68f
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
554 additions
and
161 deletions
+554
-161
misc.xml
.idea/misc.xml
+3
-0
agr-sdk-pgw-core-release-1.7.0.aar
app/aars/agr-sdk-pgw-core-release-1.7.0.aar
+0
-0
MonitoringDao.kt
...uz/mobiuz/mobiservice/dev/model/database/MonitoringDao.kt
+2
-2
CardRepository.kt
...biuz/mobiservice/dev/network/repository/CardRepository.kt
+8
-9
AuthViewModel.kt
...n/java/uz/mobiuz/mobiservice/dev/ui/auth/AuthViewModel.kt
+6
-2
VerificationFragment.kt
...iservice/dev/ui/auth/verification/VerificationFragment.kt
+8
-7
CONSTANTS.kt
...ain/java/uz/mobiuz/mobiservice/dev/ui/global/CONSTANTS.kt
+3
-0
BillingFragment.kt
...java/uz/mobiuz/mobiservice/dev/ui/home/BillingFragment.kt
+3
-9
AddCardFragment.kt
.../uz/mobiuz/mobiservice/dev/ui/sdk/card/AddCardFragment.kt
+1
-1
CardConfirmFragment.kt
...mobiuz/mobiservice/dev/ui/sdk/card/CardConfirmFragment.kt
+1
-1
CardsListFragment.kt
...z/mobiuz/mobiservice/dev/ui/sdk/card/CardsListFragment.kt
+1
-1
HistoryHeaderDelegate.kt
...z/mobiservice/dev/ui/sdk/history/HistoryHeaderDelegate.kt
+48
-0
HistoryViewModel.kt
...mobiuz/mobiservice/dev/ui/sdk/history/HistoryViewModel.kt
+2
-33
MonitoringAdapter.kt
...obiuz/mobiservice/dev/ui/sdk/history/MonitoringAdapter.kt
+130
-0
MonitoringDelegate.kt
...biuz/mobiservice/dev/ui/sdk/history/MonitoringDelegate.kt
+48
-0
MonitoringLocalFragment.kt
...mobiservice/dev/ui/sdk/history/MonitoringLocalFragment.kt
+5
-30
PaymentSuccessfulFragment.kt
...rvice/dev/ui/sdk/pay/success/PaymentSuccessfulFragment.kt
+66
-16
ReplenishBalanceFragment.kt
...obiservice/dev/ui/sdk/payment/ReplenishBalanceFragment.kt
+53
-50
fragment_monitoring_local.xml
app/src/main/res/layout/fragment_monitoring_local.xml
+1
-0
item_history_header.xml
app/src/main/res/layout/item_history_header.xml
+48
-0
monitoring_item.xml
app/src/main/res/layout/monitoring_item.xml
+117
-0
No files found.
.idea/misc.xml
View file @
5f3765fd
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<map>
<map>
<entry
key=
"../../../../layout/custom_preview.xml"
value=
"0.3527777777777778"
/>
<entry
key=
"../../../../layout/custom_preview.xml"
value=
"0.3527777777777778"
/>
<entry
key=
"../../.gradle/caches/transforms-3/272c6ad3bc9f3b40802fd3a427796f36/transformed/jetified-agr-sdk-mobi-uz-release-1.0.0/res/layout/agr_layout_empty.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/272c6ad3bc9f3b40802fd3a427796f36/transformed/jetified-agr-sdk-mobi-uz-release-1.0.0/res/layout/agr_layout_empty.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/272c6ad3bc9f3b40802fd3a427796f36/transformed/jetified-agr-sdk-mobi-uz-release-1.0.0/res/layout/agr_mobi_uz_monitoring_item.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/eea77424a90e1e1097be3e7a9314e37d/transformed/jetified-mobi_uz/res/layout/agr_fragment_fast_pay.xml"
value=
"0.25"
/>
<entry
key=
"../../.gradle/caches/transforms-3/eea77424a90e1e1097be3e7a9314e37d/transformed/jetified-mobi_uz/res/layout/agr_fragment_fast_pay.xml"
value=
"0.25"
/>
<entry
key=
"../../.gradle/caches/transforms-3/fd180e2afb980e83e4951f5e21e58af5/transformed/jetified-agr-sdk-coreui-release-1.7.0/res/layout/agr_core_ui_layout_zero.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/fd180e2afb980e83e4951f5e21e58af5/transformed/jetified-agr-sdk-coreui-release-1.7.0/res/layout/agr_core_ui_layout_zero.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/fd180e2afb980e83e4951f5e21e58af5/transformed/jetified-agr-sdk-coreui-release-1.7.0/res/layout/agr_item_card.xml"
value=
"0.25625"
/>
<entry
key=
"../../.gradle/caches/transforms-3/fd180e2afb980e83e4951f5e21e58af5/transformed/jetified-agr-sdk-coreui-release-1.7.0/res/layout/agr_item_card.xml"
value=
"0.25625"
/>
...
@@ -113,6 +114,7 @@
...
@@ -113,6 +114,7 @@
<entry
key=
"app/src/main/res/layout/home_motion.xml"
value=
"0.10951008645533142"
/>
<entry
key=
"app/src/main/res/layout/home_motion.xml"
value=
"0.10951008645533142"
/>
<entry
key=
"app/src/main/res/layout/item_action.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/item_action.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/item_confirm.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/item_confirm.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/item_history_header.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/item_home.xml"
value=
"0.22"
/>
<entry
key=
"app/src/main/res/layout/item_home.xml"
value=
"0.22"
/>
<entry
key=
"app/src/main/res/layout/item_pin.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/item_pin.xml"
value=
"0.23497267759562843"
/>
<entry
key=
"app/src/main/res/layout/item_service.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/item_service.xml"
value=
"0.25625"
/>
...
@@ -125,6 +127,7 @@
...
@@ -125,6 +127,7 @@
<entry
key=
"app/src/main/res/layout/layout_offline_bottom_sheet.xml"
value=
"0.266051912568306"
/>
<entry
key=
"app/src/main/res/layout/layout_offline_bottom_sheet.xml"
value=
"0.266051912568306"
/>
<entry
key=
"app/src/main/res/layout/layout_sender.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/layout_sender.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/mobi_uz_item_card.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/mobi_uz_item_card.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/monitoring_item.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/layout/motion_layout.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/layout/motion_layout.xml"
value=
"0.266796875"
/>
<entry
key=
"app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.3416666666666667"
/>
<entry
key=
"app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.3416666666666667"
/>
<entry
key=
"app/src/main/res/xml/layout_description.xml"
value=
"0.25625"
/>
<entry
key=
"app/src/main/res/xml/layout_description.xml"
value=
"0.25625"
/>
...
...
app/aars/agr-sdk-pgw-core-release-1.7.0.aar
View file @
5f3765fd
No preview for this file type
app/src/main/java/uz/mobiuz/mobiservice/dev/model/database/MonitoringDao.kt
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.model.database
package
uz.mobiuz.mobiservice.dev.model.database
import
androidx.room.*
import
androidx.room.*
import
io.reactivex.Single
import
kotlinx.coroutines.flow.Flow
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.model.Monitoring
/**
/**
...
@@ -11,7 +11,7 @@ import uz.mobiuz.mobiservice.dev.model.Monitoring
...
@@ -11,7 +11,7 @@ import uz.mobiuz.mobiservice.dev.model.Monitoring
interface
MonitoringDao
{
interface
MonitoringDao
{
@Query
(
"SELECT * FROM monitoring"
)
@Query
(
"SELECT * FROM monitoring"
)
fun
getAllMonitoring
():
Single
<
List
<
Monitoring
>>
fun
getAllMonitoring
():
Flow
<
List
<
Monitoring
>>
@Query
(
"DELETE FROM monitoring"
)
@Query
(
"DELETE FROM monitoring"
)
fun
deleteAllMonitoring
()
fun
deleteAllMonitoring
()
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/network/repository/CardRepository.kt
View file @
5f3765fd
...
@@ -3,18 +3,12 @@ package uz.mobiuz.mobiservice.dev.network.repository
...
@@ -3,18 +3,12 @@ package uz.mobiuz.mobiservice.dev.network.repository
import
android.content.Context
import
android.content.Context
import
dagger.hilt.android.qualifiers.ApplicationContext
import
dagger.hilt.android.qualifiers.ApplicationContext
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.flow.Flow
import
kotlinx.coroutines.withContext
import
kotlinx.coroutines.withContext
import
uz.agr.sdk.core.entity.card.CardRegistration
import
uz.agr.sdk.pgw_core.mobi.BaseListener
import
uz.agr.sdk.pgw_core.mobi.MobiUz
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.model.database.MonitoringDao
import
uz.mobiuz.mobiservice.dev.model.database.MonitoringDao
import
uz.mobiuz.mobiservice.dev.network.api.ApiService
import
uz.mobiuz.mobiservice.dev.network.api.ApiService
import
uz.mobiuz.mobiservice.dev.network.model.Customer
import
uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import
uz.mobiuz.mobiservice.dev.utils.extensions.getMessage
import
uz.mobiuz.mobiservice.dev.utils.extensions.userMessage
import
javax.inject.Inject
import
javax.inject.Inject
import
javax.inject.Singleton
import
javax.inject.Singleton
...
@@ -26,11 +20,16 @@ class CardRepository @Inject constructor(
...
@@ -26,11 +20,16 @@ class CardRepository @Inject constructor(
@ApplicationContext
val
context
:
Context
@ApplicationContext
val
context
:
Context
)
{
)
{
suspend
fun
addMonitoring
(
data
:
Monitoring
)
{
suspend
fun
addMonitoring
(
data
:
Monitoring
)
{
withContext
(
Dispatchers
.
IO
){
withContext
(
Dispatchers
.
IO
)
{
dao
.
addMonitoring
(
data
)
dao
.
addMonitoring
(
data
)
}
}
}
}
fun
getAllMonitoring
():
Flow
<
List
<
Monitoring
>>
{
return
dao
.
getAllMonitoring
()
}
}
}
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/auth/AuthViewModel.kt
View file @
5f3765fd
...
@@ -181,7 +181,10 @@ class AuthViewModel @Inject constructor(
...
@@ -181,7 +181,10 @@ class AuthViewModel @Inject constructor(
_vendorUiState
.
emit
(
UiStateObject
.
LOADING
)
_vendorUiState
.
emit
(
UiStateObject
.
LOADING
)
MobiUz
.
vendorPay
(
code
,
transactionId
,
object
:
VendorPaySuccessListener
{
MobiUz
.
vendorPay
(
code
,
transactionId
,
object
:
VendorPaySuccessListener
{
override
fun
exit
()
{
override
fun
exit
()
{
viewModelScope
.
launch
{
_vendorUiState
.
emit
(
UiStateObject
.
ERROR
(
"exit"
))
}
// exit
}
}
override
fun
showError
(
message
:
String
)
{
override
fun
showError
(
message
:
String
)
{
...
@@ -191,10 +194,11 @@ class AuthViewModel @Inject constructor(
...
@@ -191,10 +194,11 @@ class AuthViewModel @Inject constructor(
}
}
override
fun
showProgress
(
show
:
Boolean
)
{
override
fun
showProgress
(
show
:
Boolean
)
{
show
}
}
override
fun
showSuccess
(
transactionId
:
String
)
{
override
fun
showSuccess
(
transactionId
:
String
)
{
transactionId
viewModelScope
.
launch
{
viewModelScope
.
launch
{
_vendorUiState
.
emit
(
UiStateObject
.
SUCCESS
(
transactionId
))
_vendorUiState
.
emit
(
UiStateObject
.
SUCCESS
(
transactionId
))
}
}
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/auth/verification/VerificationFragment.kt
View file @
5f3765fd
...
@@ -62,10 +62,11 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -62,10 +62,11 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
private
var
cardId
=
""
private
var
cardId
=
""
private
var
cardExpire
=
""
private
var
cardExpire
=
""
private
var
payCardnumber
=
""
private
var
payCardnumber
=
""
private
var
monitoring
=
""
var
transactionId
=
0L
var
transactionId
=
0L
var
payAmount
=
0L
var
payAmount
=
0L
var
saveCard
:
Boolean
?
=
null
var
saveCard
:
Int
=
0
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
...
@@ -81,8 +82,9 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -81,8 +82,9 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
payCardnumber
=
it
.
getString
(
CONSTANTS
.
PAY_CARD_NUMBER
)
?:
""
payCardnumber
=
it
.
getString
(
CONSTANTS
.
PAY_CARD_NUMBER
)
?:
""
transactionId
=
it
.
getLong
(
CONSTANTS
.
TRANSACTION_ID
)
transactionId
=
it
.
getLong
(
CONSTANTS
.
TRANSACTION_ID
)
saveCard
=
it
.
get
Boolean
(
CONSTANTS
.
SAVED_CARD
)
saveCard
=
it
.
get
Int
(
CONSTANTS
.
SAVED_CARD
,
0
)
payAmount
=
it
.
getLong
(
CONSTANTS
.
PAY_AMOUNT
)
payAmount
=
it
.
getLong
(
CONSTANTS
.
PAY_AMOUNT
)
monitoring
=
it
.
getString
(
CONSTANTS
.
PAY_MONITORING
)
?:
""
}
}
}
}
...
@@ -130,7 +132,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -130,7 +132,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
viewModel
.
cardConfirm
(
cardId
,
getLinePinCodes
())
viewModel
.
cardConfirm
(
cardId
,
getLinePinCodes
())
}
}
CONSTANTS
.
TYPE_ANOTHER_CARD
->
{
CONSTANTS
.
TYPE_ANOTHER_CARD
->
{
viewModel
.
vendor
(
getLinePinCodes
(),
transactionId
)
viewModel
.
vendor
(
getLinePinCodes
(),
transactionId
)
}
}
else
->
{
else
->
{
viewModel
.
verification
(
auth
)
viewModel
.
verification
(
auth
)
...
@@ -143,7 +145,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -143,7 +145,7 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
sentCodeAgain
.
setOnClickListener
{
sentCodeAgain
.
setOnClickListener
{
when
(
type
)
{
when
(
type
)
{
CONSTANTS
.
TYPE_ADD_CARD
->
{
CONSTANTS
.
TYPE_ADD_CARD
->
{
viewModel
.
resendSms
(
"9989
49125150
"
,
cardNumber
,
cardExpire
)
viewModel
.
resendSms
(
"9989
17797278
"
,
cardNumber
,
cardExpire
)
}
}
CONSTANTS
.
TYPE_ANOTHER_CARD
->
{
CONSTANTS
.
TYPE_ANOTHER_CARD
->
{
viewModel
.
vendorResendSms
(
transactionId
)
viewModel
.
vendorResendSms
(
transactionId
)
...
@@ -379,10 +381,9 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
...
@@ -379,10 +381,9 @@ class VerificationFragment : BaseFragment(R.layout.fragment_verification) {
navController
.
navigate
(
navController
.
navigate
(
R
.
id
.
paymentSuccessfulFragment
,
R
.
id
.
paymentSuccessfulFragment
,
bundleOf
(
bundleOf
(
CONSTANTS
.
PHONE
to
phone
,
CONSTANTS
.
PAY_AMOUNT
to
payAmount
,
CONSTANTS
.
PAY_SAVE_CARD
to
saveCard
,
CONSTANTS
.
PAY_SAVE_CARD
to
saveCard
,
CONSTANTS
.
PAY_CARD_NUMBER
to
cardNumber
CONSTANTS
.
PAY_CARD_NUMBER
to
payCardnumber
,
CONSTANTS
.
PAY_MONITORING
to
monitoring
)
)
)
)
showProgressDialog
(
false
)
showProgressDialog
(
false
)
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/global/CONSTANTS.kt
View file @
5f3765fd
...
@@ -2,6 +2,8 @@ package uz.mobiuz.mobiservice.dev.ui.global
...
@@ -2,6 +2,8 @@ package uz.mobiuz.mobiservice.dev.ui.global
object
CONSTANTS
{
object
CONSTANTS
{
const
val
IS_SAVED_CARD
=
1
const
val
IS_NOT_SAVED_CARD
=
2
const
val
CARD_ID
=
"CARD_ID"
const
val
CARD_ID
=
"CARD_ID"
const
val
TRANSACTION_ID
=
"TRANSACTION_ID"
const
val
TRANSACTION_ID
=
"TRANSACTION_ID"
const
val
SAVED_CARD
=
"SAVED_CARD"
const
val
SAVED_CARD
=
"SAVED_CARD"
...
@@ -108,4 +110,5 @@ object CONSTANTS {
...
@@ -108,4 +110,5 @@ object CONSTANTS {
const
val
PAY_AMOUNT
=
"PAYMENT_SUCCESS_PAYMENT"
const
val
PAY_AMOUNT
=
"PAYMENT_SUCCESS_PAYMENT"
const
val
PAY_SAVE_CARD
=
"PAYMENT_SAVE_CARD"
const
val
PAY_SAVE_CARD
=
"PAYMENT_SAVE_CARD"
const
val
PAY_CARD_NUMBER
=
"PAYMENT_CARD_NUMBER"
const
val
PAY_CARD_NUMBER
=
"PAYMENT_CARD_NUMBER"
const
val
PAY_MONITORING
=
"PAY_MONITORING"
}
}
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/home/BillingFragment.kt
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.ui.home
package
uz.mobiuz.mobiservice.dev.ui.home
import
android.os.Bundle
import
android.os.Bundle
import
android.util.Log
import
android.view.View
import
android.view.View
import
androidx.core.os.bundleOf
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
uz.agr.sdk.core.entity.card.CardRegistration
import
uz.agr.sdk.pgw_core.mobi.BaseListener
import
uz.agr.sdk.pgw_core.mobi.MobiUz
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.databinding.FragmentBillingBinding
import
uz.mobiuz.mobiservice.dev.databinding.FragmentBillingBinding
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import
uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import
uz.mobiuz.mobiservice.dev.utils.extensions.showMessage
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -43,21 +37,21 @@ class BillingFragment : BaseFragment(R.layout.fragment_billing) {
...
@@ -43,21 +37,21 @@ class BillingFragment : BaseFragment(R.layout.fragment_billing) {
savedCards
.
setOnClickListener
{
savedCards
.
setOnClickListener
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
override
fun
invoke
(
phoneNumber
:
String
)
{
override
fun
invoke
(
phoneNumber
:
String
)
{
navController
.
navigate
(
R
.
id
.
cardsListFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
pref
.
userPhone
.
filter
{
it
.
isDigit
()
})
)
navController
.
navigate
(
R
.
id
.
cardsListFragment
)
}
}
})
})
}
}
payments
.
setOnClickListener
{
payments
.
setOnClickListener
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
override
fun
invoke
(
phoneNumber
:
String
)
{
override
fun
invoke
(
phoneNumber
:
String
)
{
navController
.
navigate
(
R
.
id
.
replenishBalanceFragment
,
bundleOf
(
CONSTANTS
.
PHONE
to
pref
.
userPhone
.
filter
{
it
.
isDigit
()
})
)
navController
.
navigate
(
R
.
id
.
replenishBalanceFragment
)
}
}
})
})
}
}
monitoring
.
setOnClickListener
{
monitoring
.
setOnClickListener
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
getPhoneNumber
(
object
:
LoadPhoneNumber
{
override
fun
invoke
(
phoneNumber
:
String
)
{
override
fun
invoke
(
phoneNumber
:
String
)
{
// navController.navigate(R.id.replenishBalanceFragment, bundleOf(CONSTANTS.PHONE to pref.userPhone.filter { it.isDigit() })
)
navController
.
navigate
(
R
.
id
.
monitoringLocalFragment
)
}
}
})
})
}
}
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/card/AddCardFragment.kt
View file @
5f3765fd
...
@@ -81,7 +81,7 @@ class AddCardFragment : BaseFragment(R.layout.fragment_add_card) {
...
@@ -81,7 +81,7 @@ class AddCardFragment : BaseFragment(R.layout.fragment_add_card) {
val
filteredCards
=
serverData
.
filter
{
it
.
cardHash
==
hash
}
val
filteredCards
=
serverData
.
filter
{
it
.
cardHash
==
hash
}
if
(
filteredCards
.
isEmpty
())
{
if
(
filteredCards
.
isEmpty
())
{
viewModel
.
cardRegistration
(
"9989
90552109
"
,
cardNumberValid
!!
,
cardExpiryValid
!!
)
viewModel
.
cardRegistration
(
"9989
17797278
"
,
cardNumberValid
!!
,
cardExpiryValid
!!
)
}
else
{
}
else
{
showToastMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_exist
))
showToastMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_exist
))
}
}
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/card/CardConfirmFragment.kt
View file @
5f3765fd
...
@@ -85,7 +85,7 @@ class CardConfirmFragment : BaseFragment(R.layout.fragment_card_confirm) {
...
@@ -85,7 +85,7 @@ class CardConfirmFragment : BaseFragment(R.layout.fragment_card_confirm) {
btnResend
.
setOnClickListener
(
object
:
ButtonClick
()
{
btnResend
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
// viewModel.resendSms(pref.userPhone.filter { it.isDigit() },cardNumber,cardExpire)
// viewModel.resendSms(pref.userPhone.filter { it.isDigit() },cardNumber,cardExpire)
viewModel
.
resendSms
(
"9989
49125150
"
,
cardNumber
,
cardExpire
)
viewModel
.
resendSms
(
"9989
17797278
"
,
cardNumber
,
cardExpire
)
}
}
})
})
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/card/CardsListFragment.kt
View file @
5f3765fd
...
@@ -202,7 +202,7 @@ class CardsListFragment : BaseFragment(R.layout.fragment_cards_list) {
...
@@ -202,7 +202,7 @@ class CardsListFragment : BaseFragment(R.layout.fragment_cards_list) {
}
}
// private fun addCard() {
// private fun addCard() {
// MobiUz.registerCard("9989
90552109
", "8600312917291250", "0325", object : BaseListener<CardRegistration> {
// MobiUz.registerCard("9989
17797278
", "8600312917291250", "0325", object : BaseListener<CardRegistration> {
// override fun error(message: String) {
// override fun error(message: String) {
// Log.e("TTT", "error:$message")
// Log.e("TTT", "error:$message")
// }
// }
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/history/HistoryHeaderDelegate.kt
0 → 100644
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.ui.sdk.history
import
android.annotation.SuppressLint
import
android.view.View
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
com.hannesdorfmann.adapterdelegates4.AdapterDelegate
import
kotlinx.android.synthetic.main.item_history_header.view.*
import
uz.agr.mobiuz.model.Tuple2
import
uz.agr.sdk.coreui.extension.inflate
import
uz.mobiuz.mobiservice.dev.R
import
java.text.ParseException
import
java.text.SimpleDateFormat
import
java.util.*
class
HistoryHeaderDelegate
:
AdapterDelegate
<
MutableList
<
Any
>>()
{
private
val
dateParseFormat
=
SimpleDateFormat
(
"yyyyMMdd"
,
Locale
.
getDefault
())
private
val
dateFormat
=
SimpleDateFormat
(
"dd MMMM"
,
Locale
.
getDefault
())
override
fun
isForViewType
(
items
:
MutableList
<
Any
>,
position
:
Int
)
=
items
[
position
]
is
Tuple2
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
):
RecyclerView
.
ViewHolder
=
ViewHolder
(
parent
.
inflate
(
R
.
layout
.
item_history_header
))
override
fun
onBindViewHolder
(
items
:
MutableList
<
Any
>,
position
:
Int
,
viewHolder
:
RecyclerView
.
ViewHolder
,
payloads
:
MutableList
<
Any
>)
=
(
viewHolder
as
ViewHolder
).
bind
(
items
[
position
]
as
Tuple2
)
private
inner
class
ViewHolder
(
val
containerView
:
View
)
:
RecyclerView
.
ViewHolder
(
containerView
)
{
@SuppressLint
(
"SetTextI18n"
)
fun
bind
(
header
:
Tuple2
)
{
try
{
containerView
.
tvTitle
.
text
=
header
.
first
if
(
header
.
second
.
isNotEmpty
()
&&
header
.
second
.
length
>
4
)
{
if
(
header
.
second
!=
"0"
)
{
if
(
header
.
second
[
0
]
==
'-'
)
{
containerView
.
tvTotalSum
.
text
=
"${header.second[0]} ${header.second.substring(1, header.second.length)}"
}
else
containerView
.
tvTotalSum
.
text
=
header
.
second
}
}
}
catch
(
e
:
ParseException
)
{
containerView
.
tvTitle
.
text
=
null
containerView
.
tvTotalSum
.
text
=
null
}
}
}
}
\ No newline at end of file
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/history/HistoryViewModel.kt
View file @
5f3765fd
...
@@ -3,16 +3,9 @@ package uz.mobiuz.mobiservice.dev.ui.sdk.history
...
@@ -3,16 +3,9 @@ package uz.mobiuz.mobiservice.dev.ui.sdk.history
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.lifecycle.HiltViewModel
import
kotlinx.coroutines.flow.MutableSharedFlow
import
kotlinx.coroutines.flow.SharedFlow
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
uz.agr.sdk.core.entity.card.CardInfo
import
uz.agr.sdk.pgw_core.mobi.CardListenerMobi
import
uz.agr.sdk.pgw_core.mobi.MobiUz
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.network.model.UiStateList
import
uz.mobiuz.mobiservice.dev.network.repository.CardRepository
import
uz.mobiuz.mobiservice.dev.network.repository.CardRepository
import
uz.mobiuz.mobiservice.dev.network.repository.MainRepository
import
javax.inject.Inject
import
javax.inject.Inject
@HiltViewModel
@HiltViewModel
...
@@ -24,31 +17,7 @@ class HistoryViewModel @Inject constructor(
...
@@ -24,31 +17,7 @@ class HistoryViewModel @Inject constructor(
repository
.
addMonitoring
(
data
)
repository
.
addMonitoring
(
data
)
}
}
private
val
_cardListUiState
=
MutableSharedFlow
<
UiStateList
<
CardInfo
>>()
val
cardListUiState
:
SharedFlow
<
UiStateList
<
CardInfo
>>
=
_cardListUiState
fun
getAllCards
()
=
viewModelScope
.
launch
{
fun
getAllMonitoring
()
=
repository
.
getAllMonitoring
()
_cardListUiState
.
emit
(
UiStateList
.
LOADING
)
MobiUz
.
getAllCards
(
object
:
CardListenerMobi
<
CardInfo
>
{
override
fun
error
(
message
:
String
)
{
viewModelScope
.
launch
{
_cardListUiState
.
emit
(
UiStateList
.
ERROR
(
message
))
}
}
override
fun
loading
(
boolean
:
Boolean
)
{}
}
\ No newline at end of file
override
fun
local
(
localData
:
List
<
CardInfo
>)
{
viewModelScope
.
launch
{
_cardListUiState
.
emit
(
UiStateList
.
SUCCESS
(
localData
))
}
}
override
fun
server
(
serverData
:
List
<
CardInfo
>)
{
viewModelScope
.
launch
{
_cardListUiState
.
emit
(
UiStateList
.
SUCCESS
(
serverData
))
}
}
})
}
}
\ No newline at end of file
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/history/MonitoringAdapter.kt
0 → 100644
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.ui.sdk.history
import
androidx.recyclerview.widget.DiffUtil
import
androidx.recyclerview.widget.RecyclerView
import
com.hannesdorfmann.adapterdelegates4.ListDelegationAdapter
import
uz.agr.mobiuz.model.Tuple2
import
uz.agr.mobiuz.ui.global.list.DividerAdapterDelegate
import
uz.agr.sdk.coreui.extension.formattedMoney
import
uz.agr.sdk.coreui.ui.history.DividerItem
import
uz.agr.sdk.coreui.ui.list.ProgressAdapterDelegate
import
uz.agr.sdk.coreui.ui.list.ProgressItem
import
uz.mobiuz.mobiservice.dev.model.Monitoring
class
MonitoringAdapter
:
ListDelegationAdapter
<
MutableList
<
Any
>>()
{
init
{
items
=
mutableListOf
()
delegatesManager
.
addDelegate
(
HistoryHeaderDelegate
())
delegatesManager
.
addDelegate
(
MonitoringDelegate
())
delegatesManager
.
addDelegate
(
DividerAdapterDelegate
())
delegatesManager
.
addDelegate
(
ProgressAdapterDelegate
())
}
fun
isHeaderItem
(
position
:
Int
):
Boolean
=
items
[
position
]
is
Tuple2
fun
setData
(
historyList
:
List
<
Monitoring
>)
{
val
oldData
=
items
.
toList
()
val
progress
=
isProgress
()
items
.
clear
()
var
summa
:
Long
=
0
val
hashMap
=
HashMap
<
String
,
String
>()
for
(
item
in
historyList
)
{
val
it
=
hashMap
[
item
.
date
.
toString
()]
summa
-=
item
.
amount
if
(
it
!=
null
)
{
val
i
=
(
it
.
toLong
()
+
summa
).
toString
()
hashMap
[
item
.
date
.
toString
()]
=
i
}
else
{
hashMap
[
item
.
date
.
toString
()]
=
"$summa"
}
summa
=
0
}
var
tempDate
=
""
for
(
item
in
historyList
)
{
if
(
tempDate
!=
item
.
date
.
toString
())
{
items
.
add
(
DividerItem
())
val
value
=
hashMap
[
item
.
date
.
toString
()]
items
.
add
(
Tuple2
(
item
.
date
.
toString
(),
((
value
?.
replaceRange
(
value
.
length
-
2
,
value
.
length
,
""
)
?:
"0"
).
toInt
()
*
100
).
formattedMoney
(
false
)
+
" UZS"
)
)
tempDate
=
item
.
date
.
toString
()
}
items
.
add
(
item
)
}
if
(
items
.
isNotEmpty
())
{
items
.
add
(
DividerItem
())
}
if
(
progress
)
items
.
add
(
ProgressItem
())
//yes, on main thread...
DiffUtil
.
calculateDiff
(
DiffCallback
(
items
,
oldData
),
false
)
.
dispatchUpdatesTo
(
this
)
}
fun
showProgress
(
isVisible
:
Boolean
)
{
val
oldData
=
items
.
toList
()
val
currentProgress
=
isProgress
()
if
(
isVisible
&&
!
currentProgress
)
{
items
.
add
(
ProgressItem
())
notifyItemInserted
(
items
.
lastIndex
)
}
else
if
(!
isVisible
&&
currentProgress
)
{
items
.
remove
(
items
.
last
())
notifyItemRemoved
(
oldData
.
lastIndex
)
}
}
private
fun
isProgress
()
=
items
.
isNotEmpty
()
&&
items
.
last
()
is
ProgressItem
override
fun
onBindViewHolder
(
holder
:
RecyclerView
.
ViewHolder
,
position
:
Int
,
payloads
:
MutableList
<
Any
?
>)
{
super
.
onBindViewHolder
(
holder
,
position
,
payloads
)
}
private
inner
class
DiffCallback
(
private
val
newItems
:
List
<
Any
>,
private
val
oldItems
:
List
<
Any
>
)
:
DiffUtil
.
Callback
()
{
override
fun
getOldListSize
()
=
oldItems
.
size
override
fun
getNewListSize
()
=
newItems
.
size
override
fun
areItemsTheSame
(
oldItemPosition
:
Int
,
newItemPosition
:
Int
):
Boolean
{
val
oldItem
=
oldItems
[
oldItemPosition
]
val
newItem
=
newItems
[
newItemPosition
]
return
if
(
newItem
is
Monitoring
&&
oldItem
is
Monitoring
)
{
newItem
.
id
==
oldItem
.
id
}
else
if
(
newItem
is
Tuple2
&&
oldItem
is
Tuple2
)
{
newItem
.
first
==
oldItem
.
first
}
else
{
(
newItem
is
ProgressItem
&&
oldItem
is
ProgressItem
)
||
(
newItem
is
DividerItem
&&
oldItem
is
DividerItem
)
}
}
override
fun
areContentsTheSame
(
oldItemPosition
:
Int
,
newItemPosition
:
Int
):
Boolean
{
val
oldItem
=
oldItems
[
oldItemPosition
]
val
newItem
=
newItems
[
newItemPosition
]
return
if
(
newItem
is
Monitoring
&&
oldItem
is
Monitoring
)
{
newItem
.
id
==
oldItem
.
id
&&
newItem
.
date
==
oldItem
.
date
&&
newItem
.
amount
==
oldItem
.
amount
&&
newItem
.
phone
==
oldItem
.
phone
&&
newItem
.
pan
==
oldItem
.
pan
}
else
if
(
newItem
is
Tuple2
&&
oldItem
is
Tuple2
)
{
newItem
.
first
==
oldItem
.
first
}
else
{
true
}
}
}
}
\ No newline at end of file
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/history/MonitoringDelegate.kt
0 → 100644
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.ui.sdk.history
import
android.annotation.SuppressLint
import
android.view.View
import
android.view.ViewGroup
import
androidx.recyclerview.widget.RecyclerView
import
com.hannesdorfmann.adapterdelegates4.AdapterDelegate
import
kotlinx.android.synthetic.main.monitoring_item.view.*
import
uz.agr.mobiuz.ui.fast_action.animation.formatCard1
import
uz.agr.sdk.coreui.extension.formattedMoney
import
uz.agr.sdk.coreui.extension.inflate
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.utils.extensions.formatPhone
import
java.text.SimpleDateFormat
import
java.util.*
class
MonitoringDelegate
:
AdapterDelegate
<
MutableList
<
Any
>>()
{
private
val
timeParseFormat
=
SimpleDateFormat
(
"HHmmss"
,
Locale
.
getDefault
())
private
val
timeFormat
=
SimpleDateFormat
(
"HH:mm"
,
Locale
.
getDefault
())
override
fun
isForViewType
(
items
:
MutableList
<
Any
>,
position
:
Int
)
=
items
[
position
]
is
Monitoring
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
):
RecyclerView
.
ViewHolder
=
ViewHolder
(
parent
.
inflate
(
R
.
layout
.
monitoring_item
))
override
fun
onBindViewHolder
(
items
:
MutableList
<
Any
>,
position
:
Int
,
viewHolder
:
RecyclerView
.
ViewHolder
,
payloads
:
MutableList
<
Any
>)
=
(
viewHolder
as
ViewHolder
).
bind
(
items
[
position
]
as
Monitoring
)
override
fun
onViewRecycled
(
holder
:
RecyclerView
.
ViewHolder
)
{
super
.
onViewRecycled
(
holder
)
}
private
inner
class
ViewHolder
(
val
containerView
:
View
)
:
RecyclerView
.
ViewHolder
(
containerView
)
{
private
lateinit
var
history
:
Monitoring
@SuppressLint
(
"SetTextI18n"
,
"ResourceAsColor"
)
fun
bind
(
history
:
Monitoring
)
{
this
.
history
=
history
containerView
.
cardPan
.
text
=
history
.
pan
.
formatCard1
()
containerView
.
tvAmount
.
text
=
"- "
+
(
history
.
amount
*
100
).
formattedMoney
(
false
)
+
" "
+
itemView
.
context
.
getString
(
R
.
string
.
agr_mobi_uz_curr
)
// val date = timeFormat.format(history.date)
val
date
=
history
.
date
.
toString
()
containerView
.
tvTime
.
text
=
date
containerView
.
tvTransType
.
text
=
history
.
phone
.
formatPhone
()
}
}
}
\ No newline at end of file
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/history/MonitoringLocalFragment.kt
View file @
5f3765fd
package
uz.mobiuz.mobiservice.dev.ui.sdk.history
package
uz.mobiuz.mobiservice.dev.ui.sdk.history
import
android.os.Bundle
import
android.os.Bundle
import
androidx.fragment.app.Fragment
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
androidx.fragment.app.viewModels
import
androidx.fragment.app.viewModels
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
androidx.navigation.NavController
import
androidx.navigation.NavController
...
@@ -13,15 +10,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
...
@@ -13,15 +10,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
kotlinx.coroutines.flow.collect
import
kotlinx.coroutines.flow.collect
import
uz.agr.mobiuz.ui.history.header.HeaderItemDecoration
import
uz.agr.mobiuz.ui.history.header.HeaderItemDecoration
import
uz.agr.mobiuz.ui.history.local.MonitoringAdapter
import
uz.agr.sdk.pgw_core.mobi.MobiUz
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.databinding.FragmentCardsListBinding
import
uz.mobiuz.mobiservice.dev.databinding.FragmentMonitoringLocalBinding
import
uz.mobiuz.mobiservice.dev.databinding.FragmentMonitoringLocalBinding
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.model.SharedPref
import
uz.mobiuz.mobiservice.dev.network.model.UiStateObject
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.home.HomeViewModel
import
javax.inject.Inject
import
javax.inject.Inject
...
@@ -33,7 +25,7 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
...
@@ -33,7 +25,7 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
private
var
_bn
:
FragmentMonitoringLocalBinding
?
=
null
private
var
_bn
:
FragmentMonitoringLocalBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
viewModel
:
H
ome
ViewModel
by
viewModels
()
private
val
viewModel
:
H
istory
ViewModel
by
viewModels
()
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
adapter
:
MonitoringAdapter
by
lazy
{
MonitoringAdapter
()
}
private
val
adapter
:
MonitoringAdapter
by
lazy
{
MonitoringAdapter
()
}
...
@@ -42,7 +34,6 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
...
@@ -42,7 +34,6 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
_bn
=
FragmentMonitoringLocalBinding
.
bind
(
view
)
_bn
=
FragmentMonitoringLocalBinding
.
bind
(
view
)
setUpUI
()
setUpUI
()
collects
()
collects
()
}
}
...
@@ -55,7 +46,7 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
...
@@ -55,7 +46,7 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
recyclerView
.
apply
{
recyclerView
.
apply
{
layoutManager
=
LinearLayoutManager
(
context
)
layoutManager
=
LinearLayoutManager
(
context
)
setHasFixedSize
(
true
)
setHasFixedSize
(
true
)
adapter
=
adapter
adapter
=
this
@MonitoringLocalFragment
.
adapter
addItemDecoration
(
HeaderItemDecoration
(
this
)
{
itemPosition
->
addItemDecoration
(
HeaderItemDecoration
(
this
)
{
itemPosition
->
if
(
itemPosition
>=
0
&&
itemPosition
<
adapter
!!
.
itemCount
)
{
if
(
itemPosition
>=
0
&&
itemPosition
<
adapter
!!
.
itemCount
)
{
(
adapter
as
MonitoringAdapter
).
isHeaderItem
(
itemPosition
)
(
adapter
as
MonitoringAdapter
).
isHeaderItem
(
itemPosition
)
...
@@ -68,27 +59,11 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
...
@@ -68,27 +59,11 @@ class MonitoringLocalFragment : BaseFragment(R.layout.fragment_monitoring_local)
override
fun
collects
()
{
override
fun
collects
()
{
viewLifecycleOwner
.
lifecycleScope
.
launchWhenStarted
{
lifecycleScope
.
launchWhenStarted
{
viewModel
.
mainIndexUiState
.
collect
{
viewModel
.
getAllMonitoring
().
collect
{
when
(
it
)
{
adapter
.
setData
(
it
)
is
UiStateObject
.
SUCCESS
->
{
}
is
UiStateObject
.
ERROR
->
{
}
is
UiStateObject
.
LOADING
->
{
}
else
->
Unit
}
}
}
}
}
}
}
override
fun
onDestroy
()
{
override
fun
onDestroy
()
{
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/pay/success/PaymentSuccessfulFragment.kt
View file @
5f3765fd
...
@@ -5,18 +5,25 @@ import android.os.Bundle
...
@@ -5,18 +5,25 @@ import android.os.Bundle
import
android.view.View
import
android.view.View
import
androidx.activity.OnBackPressedCallback
import
androidx.activity.OnBackPressedCallback
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
androidx.fragment.app.viewModels
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
import
com.google.gson.Gson
import
dagger.hilt.android.AndroidEntryPoint
import
dagger.hilt.android.AndroidEntryPoint
import
uz.agr.
mobiuz.ui.fast_action.animation.formatPhone
import
uz.agr.
sdk.core.entity.card.CardInfo
import
uz.agr.sdk.coreui.extension.formattedMoney
import
uz.agr.sdk.coreui.extension.formattedMoney
import
uz.agr.sdk.coreui.extension.showSnackMessage
import
uz.agr.sdk.coreui.extension.showSnackMessage
import
uz.agr.sdk.pgw_core.mobi.BaseListener
import
uz.agr.sdk.pgw_core.mobi.MobiUz
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.R
import
uz.mobiuz.mobiservice.dev.databinding.FragmentPaymentSuccessfulBinding
import
uz.mobiuz.mobiservice.dev.databinding.FragmentPaymentSuccessfulBinding
import
uz.mobiuz.mobiservice.dev.model.Monitoring
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.base.BaseFragment
import
uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import
uz.mobiuz.mobiservice.dev.ui.global.ButtonClick
import
uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import
uz.mobiuz.mobiservice.dev.ui.global.CONSTANTS
import
uz.mobiuz.mobiservice.dev.ui.sdk.history.HistoryViewModel
import
uz.mobiuz.mobiservice.dev.utils.extensions.formatCard
import
uz.mobiuz.mobiservice.dev.utils.extensions.formatCard
import
uz.mobiuz.mobiservice.dev.utils.extensions.formatPhone
/**
/**
* Created by DostonbekIbragimov on 06/01/2022.
* Created by DostonbekIbragimov on 06/01/2022.
...
@@ -28,20 +35,26 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
...
@@ -28,20 +35,26 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
private
var
_bn
:
FragmentPaymentSuccessfulBinding
?
=
null
private
var
_bn
:
FragmentPaymentSuccessfulBinding
?
=
null
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
val
bn
get
()
=
_bn
?:
throw
NullPointerException
(
"cannot inflate"
)
private
var
phone
=
""
private
var
saveCard
:
Int
=
0
private
var
amount
=
""
private
var
saveCard
:
Boolean
?
=
null
private
var
cardNumber
=
""
private
var
cardNumber
=
""
private
lateinit
var
monitoring
:
Monitoring
private
val
viewModel
:
HistoryViewModel
by
viewModels
()
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
private
val
navController
:
NavController
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
NavHostFragment
.
findNavController
(
this
)
}
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
super
.
onCreate
(
savedInstanceState
)
phone
=
arguments
?.
getString
(
CONSTANTS
.
PHONE
,
""
)
?:
""
arguments
?.
let
{
amount
=
arguments
?.
getString
(
CONSTANTS
.
PAY_AMOUNT
,
"0"
)
?:
"0"
saveCard
=
it
.
getInt
(
CONSTANTS
.
PAY_SAVE_CARD
,
0
)
saveCard
=
arguments
?.
getBoolean
(
CONSTANTS
.
PAY_SAVE_CARD
)
cardNumber
=
it
.
getString
(
CONSTANTS
.
PAY_CARD_NUMBER
,
""
)
?:
""
cardNumber
=
arguments
?.
getString
(
CONSTANTS
.
PAY_CARD_NUMBER
,
""
)
?:
""
val
arg
=
it
.
getString
(
CONSTANTS
.
PAY_MONITORING
,
""
)
?:
""
if
(
arg
.
isNotEmpty
())
monitoring
=
Gson
().
fromJson
(
arg
,
Monitoring
::
class
.
java
)
}
if
(
::
monitoring
.
isInitialized
)
viewModel
.
addMonitoring
(
monitoring
)
}
}
...
@@ -57,32 +70,69 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
...
@@ -57,32 +70,69 @@ class PaymentSuccessfulFragment : BaseFragment(R.layout.fragment_payment_success
requireActivity
().
onBackPressedDispatcher
.
addCallback
(
viewLifecycleOwner
,
object
:
OnBackPressedCallback
(
true
)
{
requireActivity
().
onBackPressedDispatcher
.
addCallback
(
viewLifecycleOwner
,
object
:
OnBackPressedCallback
(
true
)
{
override
fun
handleOnBackPressed
()
{
override
fun
handleOnBackPressed
()
{
navController
.
popBackStack
(
R
.
id
.
replenishBalanceFragment
,
false
)
navController
.
popBackStack
(
R
.
id
.
billingFragment
,
false
)
}
}
})
})
doneButton
.
setOnClickListener
(
object
:
ButtonClick
(){
doneButton
.
setOnClickListener
(
object
:
ButtonClick
()
{
override
fun
onSingleClick
(
v
:
View
?)
{
override
fun
onSingleClick
(
v
:
View
?)
{
navController
.
popBackStack
(
R
.
id
.
replenishBalanceFragment
,
false
)
navController
.
popBackStack
(
R
.
id
.
billingFragment
,
false
)
}
}
})
})
if
(
::
monitoring
.
isInitialized
)
{
etAmount
.
text
=
"${amount.toLong().formattedMoney(showDecimal = false, tiyinToSum = false)} ${getString(uz.agr.mobiuz.R.string.agr_mobi_uz_curr)}"
etAmount
.
text
=
"${monitoring.amount.formattedMoney(showDecimal = false, tiyinToSum = false)} ${
etPhone
.
text
=
phone
.
formatPhone
(
minus
=
false
)
getString
(
if
(
saveCard
==
true
)
{
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_curr
)
}
"
etPhone
.
text
=
monitoring
.
phone
.
formatPhone
(
minus
=
false
)
}
if
(
saveCard
==
CONSTANTS
.
IS_SAVED_CARD
)
{
showSnackMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_added
))
showSnackMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_added
))
if
(
cardNumber
.
isNotEmpty
())
{
if
(
cardNumber
.
isNotEmpty
())
{
tvPanTitle
.
isVisible
=
true
tvPanTitle
.
isVisible
=
true
etCardPan
.
isVisible
=
true
etCardPan
.
text
=
cardNumber
.
formatCard
()
etCardPan
.
text
=
cardNumber
.
formatCard
()
}
}
}
}
if
(
saveCard
==
false
)
{
if
(
saveCard
==
CONSTANTS
.
IS_NOT_SAVED_CARD
)
{
if
(
cardNumber
.
length
==
20
)
deleteCard
(
cardNumber
.
substring
(
0
,
16
),
cardNumber
.
substring
(
16
,
20
))
showSnackMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_not_save
))
showSnackMessage
(
getString
(
uz
.
agr
.
mobiuz
.
R
.
string
.
agr_mobi_uz_card_not_save
))
}
}
}
}
}
}
private
fun
deleteCard
(
cardNumber
:
String
,
cardExpiry
:
String
)
{
MobiUz
.
getLocalCards
(
object
:
BaseListener
<
List
<
CardInfo
>>
{
override
fun
error
(
message
:
String
)
{}
override
fun
loading
(
boolean
:
Boolean
)
{}
override
fun
success
(
data
:
List
<
CardInfo
>)
{
val
card
:
CardInfo
?
=
data
.
find
{
it
.
expiry
.
substring
(
0
,
2
)
==
cardExpiry
.
substring
(
2
,
4
)
&&
it
.
expiry
.
substring
(
2
,
4
)
==
cardExpiry
.
substring
(
0
,
2
)
&&
it
.
pan
.
replace
(
" "
,
""
).
substring
(
0
,
6
)
==
cardNumber
.
replace
(
" "
,
""
).
substring
(
0
,
6
)
&&
it
.
pan
.
replace
(
" "
,
""
).
substring
(
it
.
pan
.
length
-
4
,
it
.
pan
.
length
)
==
cardNumber
.
replace
(
" "
,
""
).
substring
(
cardNumber
.
length
-
4
,
cardNumber
.
length
)
}
if
(
card
!=
null
)
{
MobiUz
.
deleteCard
(
card
,
object
:
BaseListener
<
Boolean
>
{
override
fun
error
(
message
:
String
)
{
message
}
override
fun
loading
(
boolean
:
Boolean
)
{}
override
fun
success
(
data
:
Boolean
)
{
data
}
})
}
}
})
}
override
fun
collects
()
{
override
fun
collects
()
{
...
...
app/src/main/java/uz/mobiuz/mobiservice/dev/ui/sdk/payment/ReplenishBalanceFragment.kt
View file @
5f3765fd
This diff is collapsed.
Click to expand it.
app/src/main/res/layout/fragment_monitoring_local.xml
View file @
5f3765fd
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:background=
"@color/agr_grey10"
android:background=
"@color/agr_grey10"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
...
...
app/src/main/res/layout/item_history_header.xml
0 → 100644
View file @
5f3765fd
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/_32sdp"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"20dp"
android:layout_marginEnd=
"16dp"
android:layout_marginBottom=
"@dimen/_4sdp"
android:background=
"@drawable/agr_round_white"
android:elevation=
"@dimen/_5sdp"
app:cardCornerRadius=
"@dimen/_6sdp"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tvTitle"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginLeft=
"16dp"
android:layout_marginRight=
"16dp"
android:layout_weight=
"1"
android:textColor=
"@color/agr_grey110"
android:textSize=
"13sp"
tools:text=
"03 марта 2022"
/>
<TextView
android:id=
"@+id/tvTotalSum"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginLeft=
"20dp"
android:layout_marginRight=
"20dp"
android:layout_weight=
"1"
android:gravity=
"end"
android:textColor=
"@color/agr_text_color"
android:textSize=
"14sp"
android:textStyle=
"bold"
tools:text=
"03 марта"
/>
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
app/src/main/res/layout/monitoring_item.xml
0 → 100644
View file @
5f3765fd
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"100dp"
android:layout_marginVertical=
"@dimen/_3sdp"
android:layout_marginStart=
"16dp"
android:layout_marginEnd=
"16dp"
android:elevation=
"@dimen/_5sdp"
app:cardCornerRadius=
"@dimen/_6sdp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tvTime"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginLeft=
"16dp"
android:layout_marginBottom=
"16dp"
android:drawableStart=
"@drawable/ic_agr_hour_icon"
android:drawablePadding=
"4dp"
android:textColor=
"@color/agr_grey70"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
tools:text=
"12:45"
/>
<TextView
android:id=
"@+id/tvAmount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:maxLines=
"1"
android:textColor=
"@color/primary100"
android:textSize=
"14sp"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/tvTransType"
tools:text=
"-37 000 сум"
/>
<FrameLayout
android:id=
"@+id/logoContent"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:background=
"@drawable/agr_bg_oval_while"
android:elevation=
"2dp"
android:padding=
"5dp"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/tvTime"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/tvTime"
tools:ignore=
"UnusedAttribute"
>
<ImageView
android:id=
"@+id/ivMerchantLogo"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:contentDescription=
"@null"
tools:src=
"@drawable/agr_ic_prev_uztelecom"
/>
</FrameLayout>
<TextView
android:id=
"@+id/tvTransType"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"16dp"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:gravity=
"center"
android:maxLength=
"26"
android:maxLines=
"1"
android:textColor=
"@color/agr_text_color"
android:textSize=
"15sp"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:text=
"Перевод"
/>
<Button
android:id=
"@+id/btMore"
android:layout_width=
"72dp"
android:layout_height=
"32dp"
android:layout_marginEnd=
"16dp"
android:layout_marginRight=
"16dp"
android:textAllCaps=
"false"
android:textColor=
"#1054A5"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/cardPan"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/agr_grey100"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"@id/tvTime"
app:layout_constraintEnd_toEndOf=
"@id/tvAmount"
tools:text=
"8600 31** **** 8899"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/agr_mobi_uz_with_card"
android:textColor=
"@color/agr_grey100"
android:textSize=
"12sp"
app:layout_constraintBottom_toTopOf=
"@id/cardPan"
app:layout_constraintEnd_toEndOf=
"@id/cardPan"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment