package Ġcom . mark nk am au . just java . ui . pay Card Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . mark nj unge . core . data . model . Resource Ċ import Ġcom . mark nk am au . just java . R Ċ import Ġcom . mark nk am au . just java . ui . base . Base Activity Ċ import Ġcom . mark nk am au . just java . utils . reset Error OnChange Ċ import Ġcom . mark nk am au . just java . utils . toast Ċ import Ġcom . mark nk am au . just java . utils . trimmed Text Ċ import Ġkotlinx . android . synt hetic . main . activity _ pay _ card .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠPay Card Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpay Card ViewModel : ĠPay Card ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠorderId : ĠString ĊĠĠĠ Ġoverride Ġvar Ġrequires Signed In Ġ= Ġtrue ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠORDER _ ID _ KEY Ġ= Ġ" order _ id " ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext , ĠorderId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠPay Card Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ORDER _ ID _ KEY , ĠorderId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ pay _ card ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" Pay Ġfor Ġorder " ĊĊĠĠĠĠĠĠĠ ĠorderId Ġ= Ġintent . extras ! ![ ORDER _ ID _ KEY ] Ġas ĠString ĊĊĠĠĠĠĠĠĠ Ġobserve Loading () ĊĊĠĠĠĠĠĠĠ Ġtil _ pay Card _ card No . reset Error OnChange ( et _ pay Card _ card No ) ĊĠĠĠĠĠĠĠ Ġtil _ pay Card _ expiry . reset Error OnChange ( et _ pay Card _ expiry ) ĊĠĠĠĠĠĠĠ Ġtil _ pay Card _ cv v . reset Error OnChange ( et _ pay Card _ cv v ) ĊĠĠĠĠĠĠĠ Ġbtn _ pay Card _ pay . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpay () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġpay Card ViewModel . loading . observe ( this , ĠObserver Ġ{ Ġloading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpb Loading . visibility Ġ= Ġif Ġ( loading ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpay () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpiry Month Ġ= Ġet _ pay Card _ expiry . trimmed Text . split ("/ ")[ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġexpiry Year Ġ= Ġet _ pay Card _ expiry . trimmed Text . split ("/ ")[ 1 ] ĊĊĠĠĠĠĠĠĠ Ġbtn _ pay Card _ pay . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpay Card ViewModel . init iate Card Payment ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠorderId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet _ pay Card _ card No . trimmed Text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Month , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Year , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet _ pay Card _ cv v . trimmed Text ĊĠĠĠĠĠĠĠ Ġ). observe ( this , ĠObserver Ġ{ Ġresource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ pay Card _ pay . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Payment Ġsuccessful ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Failure Ġ-> Ġhandle ApiError ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠisValid Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( et _ pay Card _ card No . trimmed Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil _ pay Card _ card No . error Ġ= Ġ" Required " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( et _ pay Card _ expiry . trimmed Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil _ pay Card _ expiry . error Ġ= Ġ" Required " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( et _ pay Card _ cv v . trimmed Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil _ pay Card _ cv v . error Ġ= Ġ" Required " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠisValid ĊĠĠĠ Ġ} Ċ } Ċ