|
|
@ -133,42 +133,48 @@ class PhoneCardRechargePresenter: ViewModelType { |
|
|
|
}, |
|
|
|
input.selectedCarrierType.asObservable(), |
|
|
|
input.selectedCarrierPlan.asObservable(), |
|
|
|
input.selectedDataOnlyType.asObservable() |
|
|
|
input.selectedDataOnlyType.asObservable(), |
|
|
|
selectedPaymentMode.asObservable() |
|
|
|
) |
|
|
|
|
|
|
|
let carrierPlanModel = input.selectedCarrierType.map { $0?.subCardInfo ?? [] } |
|
|
|
let detailCarrierPlanModel = input.selectedCarrierPlan.map { $0?.planInfo } |
|
|
|
|
|
|
|
let isEnableNext = combinedInput |
|
|
|
.map { balance, _, type, priceModel, _, carrierPlan, dataOnlyType -> Status in |
|
|
|
.map { balance, _, type, priceModel, _, carrierPlan, dataOnlyType, selectPaymentType -> Status in |
|
|
|
|
|
|
|
switch type { |
|
|
|
case .regular: |
|
|
|
guard |
|
|
|
let paymentAmount = priceModel?.price, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
|
|
|
|
case .fixed: |
|
|
|
guard |
|
|
|
let paymentAmount = carrierPlan?.facePrice, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
|
|
|
|
case .dataOnly: |
|
|
|
guard |
|
|
|
let paymentAmount = dataOnlyType?.facePrice, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
if selectPaymentType?.type == "wallet" { |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
switch type { |
|
|
|
case .regular: |
|
|
|
guard |
|
|
|
let paymentAmount = priceModel?.price, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
|
|
|
|
case .fixed: |
|
|
|
guard |
|
|
|
let paymentAmount = carrierPlan?.facePrice, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
|
|
|
|
case .dataOnly: |
|
|
|
guard |
|
|
|
let paymentAmount = dataOnlyType?.facePrice, |
|
|
|
let amount = Int(paymentAmount) else { return (false, false) } |
|
|
|
|
|
|
|
return (true, amount <= balance) |
|
|
|
} |
|
|
|
} |
|
|
|
return (true, true) |
|
|
|
} |
|
|
|
|
|
|
|
input.nextTap |
|
|
|
.withLatestFrom(combinedInput.asDriverOnErrorJustComplete()) {$1} |
|
|
|
.map { ( _, mobile, type, priceModel, _, carrierPlan, dataOnlyType) -> RechargeModel? in |
|
|
|
.map { ( _, mobile, type, priceModel, _, carrierPlan, dataOnlyType, _) -> RechargeModel? in |
|
|
|
|
|
|
|
switch type { |
|
|
|
|
|
|
@ -274,6 +280,7 @@ extension PhoneCardRechargePresenter: PhoneCardRechargeInteractorOutput { |
|
|
|
// MARK: PhoneCardRecharge wireframe output interface |
|
|
|
extension PhoneCardRechargePresenter: PhoneCardRechargeWireframeOutput { |
|
|
|
func setSelectedAccount(_ selectedAccount: Account) { |
|
|
|
accounts = selectedAccount |
|
|
|
selectedPaymentMode.onNext(selectedAccount) |
|
|
|
} |
|
|
|
} |
|
|
|