package Ġwork . cal mat o . pre stop ay . ui . add Payment Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . yal antis . uc rop . UC rop Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ payment .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ payment _ step 4 .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ payment _ step 4 . calendar Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ payment _ step 4 . calendar Date Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ payment _ step 4 . calendar Year Ċ import Ġwork . cal mat o . pre stop ay . R Ċ import Ġwork . cal mat o . pre stop ay . databinding . Fragment Add Payment Step 4 Binding Ċ import Ġwork . cal mat o . pre stop ay . util .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠAdd Payment Step 4 Fragment Ġ: ĠPermission Base () Ġ{ ĊĠ Ġprivate Ġval ĠviewModel : ĠViewModel Add Payment Ġby Ġlazy Ġ{ ĊĠĠĠ ĠViewModel Provider ( require Parent Fragment (). require Parent Fragment ()). get ( ViewModel Add Payment :: class . java ) ĊĠ Ġ} ĊĠ Ġprivate Ġval ĠCODE Ġ= Ġ 1 1 ĊĊĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ): ĠView Ġ{ ĊĠĠĠ Ġval Ġbinding : ĠFragment Add Payment Step 4 Binding Ġ= ĊĠĠĠĠĠ ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ add _ payment _ step 4 , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġreturn Ġbinding . root ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġinf late Graph ( ĊĠĠĠĠĠ Ġchart , ĊĠĠĠĠĠ ĠviewModel . pay ers Add Payment . value !!. map Ġ{ Ġit . name Ġ}, ĊĠĠĠĠĠ ĠviewModel . get Sum U pped Amount List (), ĊĠĠĠĠĠ Ġrequire Context () ĊĠĠĠ Ġ) ĊĠĠĠ Ġconstraint Date 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġval Ġdate Picker Fragment Ġ= ĠDate Picker Fragment ( require Context ()) ĊĠĠĠĠĠ Ġdate Picker Fragment . setTarget Fragment ( this , ĠCODE ) ĊĠĠĠĠĠ Ġdate Picker Fragment . show ( parent FragmentManager , Ġ" date Picker ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġcamera 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġrequest Permission () ĊĠĠĠ Ġ} ĊĠĠĠ Ġcomment 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġshow Comment Dialog () ĊĠĠĠ Ġ} ĊĠĠĠ Ġtag Image 3 . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġshow Tag Dialog () ĊĠĠĠ Ġ} ĊĠĠĠ Ġbutton Step 4 . setOnClickListener Ġ{ ĊĠĠĠĠĠ ĠviewModel . set Thumbnail ( encode Image 2 Base 6 4 ( camera 2 )) ĊĠĠĠĠĠ ĠviewModel . send Request () ĊĠĠĠ Ġ} ĊĠĠĠ ĠviewModel . payment Info ?. also Ġ{ Ġpayment Ġ-> ĊĠĠĠĠĠ Ġ// Ġ æĶ¯ æī ķ ãģĦ ç· ¨ éĽĨ æĻĤ ãģ¯ ãģĵ ãģĵ ãģ« æĿ¥ ãĤĭ ĊĠĠĠĠĠ Ġ// Ġ æĹ¥ ä»ĺ ĊĠĠĠĠĠ Ġinf late Date ( payment . paid At ) ĊĠĠĠĠĠ Ġval Ġmonth Date Ġ= Ġcalendar Date . text . split ("- ", Ġ" Ġ") ĊĠĠĠĠĠ ĠviewModel . set Paid At ("${ calendar Year . text }-${ month Date [ 0 ]} -${ month Date [ 1 ]} Ġ 0 0 : 0 0 : 0 0 ") ĊĠĠĠĠĠ Ġcalendar . visibility Ġ= ĠImageView . IN VISIBLE ĊĠĠĠĠĠ Ġcalendar Year . visibility Ġ= ĠTextView . VISIBLE ĊĠĠĠĠĠ Ġcalendar Date . visibility Ġ= ĠTextView . VISIBLE ĊĠĠĠĠĠ Ġ// ãĢĢ ãĤ¿ ãĤ° ĊĠĠĠĠĠ ĠviewModel . tags . forEach Ġ{ Ġtag Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( payment . tags !!. contains ( tag . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtag . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( viewModel . tags . map Ġ{ Ġit . isSelected Ġ}. contains ( true )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtag Image 3 . setImage Resource ( viewModel . tags . filter Ġ{ Ġtag Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġtag . isSelected ĊĠĠĠĠĠĠĠ Ġ} [ 0 ]. image Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// Ġ åĨĻ çľŁ ĊĠĠĠĠĠ Ġval Ġimages Ġ= Ġpayment . image Urls ! ![ 0 ]. split (',') ĊĠĠĠĠĠ ĠPic asso . with ( require Context ()). load ( images [ images . last Index ]. trim ()). into ( camera 2 ) ĊĊĠĠĠĠĠ Ġ// ĠãĤ³ ãĥ¡ãĥ³ãĥĪ ĊĠĠĠĠĠ Ġpayment . comment ?. let Ġ{ Ġcomment Ġ-> ĠviewModel . set Comment ( comment ) Ġ} ĊĊĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠ Ġ// Ġ æĸ° è¦ı ä½ľæĪĲ æĻĤ ãģ¯ ãģĵ ãģĵ ãģ« æĿ¥ ãĤĭ ĊĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠ Ġval ĠdateTime Ġ= ĠSimpleDateFormat (" yyyy - MM - dd Ġhh : mm : ss ", ĠLocale . getDefault ()). format ( c . time ) ĊĠĠĠĠĠ Ġinf late Date ( dateTime ) ĊĠĠĠĠĠ ĠviewModel . set Paid At ( dateTime ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġchart . is Double Tap To Zoom Enabled Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠ Ġif Ġ( request Code Ġ== ĠCODE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠ Ġinf late Date ( data ?. getString Extra (" selected Date ")) ĊĠĠĠĠĠ Ġcalendar . visibility Ġ= ĠImageView . IN VISIBLE ĊĠĠĠĠĠ Ġcalendar Year . visibility Ġ= ĠTextView . VISIBLE ĊĠĠĠĠĠ Ġcalendar Date . visibility Ġ= ĠTextView . VISIBLE ĊĠĠĠĠĠ Ġval Ġmonth Date Ġ= Ġcalendar Date . text . split ("- ", Ġ" Ġ") ĊĠĠĠĠĠ ĠviewModel . set Paid At ("${ calendar Year . text }-${ month Date [ 0 ]} -${ month Date [ 1 ]} Ġ 0 0 : 0 0 : 0 0 ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġrequest Code Ġ== ĠConstant . IMAGE _ P ICK _ CODE ) Ġ{ ĊĠĠĠĠĠ Ġcrop Image ( data ?. data !! ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġrequest Code Ġ== ĠU Crop . REQUEST _ C ROP ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Uri Ġ= ĠU Crop . getOutput ( data !! ) ĊĠĠĠĠĠ Ġcamera 2 . setImage URI ( result Uri ) ĊĠĠĠĠĠ Ġcamera 2 . visibility Ġ= ĠImageView . VISIBLE ĊĠĠĠĠĠ ĠviewModel . set Thumbnail ( encode Image 2 Base 6 4 ( camera 2 )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinf late Date ( year Date : ĠString ?) Ġ{ ĊĠĠĠ Ġval Ġdate List Ġ= Ġyear Date ?. split ("- ", Ġ" Ġ", Ġ" T ") ĊĠĠĠ Ġcalendar Year . text Ġ= Ġdate List ! ![ 0 ] ĊĠĠĠ Ġval Ġconcat Date Ġ= Ġdate List [ 1 ] Ġ+ Ġ"-" Ġ+ Ġdate List [ 2 ] ĊĠĠĠ Ġcalendar Date . text Ġ= Ġconcat Date ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Comment Dialog () Ġ{ ĊĠĠĠ Ġval Ġbuilder : ĠAlertDialog . Builder Ġ= Ġrequire Activity (). let Ġ{ ĊĠĠĠĠĠ ĠAlertDialog . Builder ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġinput Ġ= ĠEditText ( require Context ()) ĊĠĠĠ Ġinput . filters Ġ= ĠarrayOf ( Input Filter . Length Filter ( 2 5 6 )) ĊĠĠĠ Ġinput . setBackground Resource ( android . R . color . transparent ) ĊĠĠĠ ĠviewModel . comment . value ?. let Ġ{ ĊĠĠĠĠĠ Ġinput . setText ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbuilder . setTitle ( resources . getString ( R . string . add _ comment )) ĊĠĠĠĠĠ Ġ? . set Positive Button ( ĊĠĠĠĠĠĠĠ Ġresources . getString ( R . string . add ) ĊĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ ĠviewModel . set Comment ( input . text . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ? . set Negative Button ( resources . getString ( R . string . cancel ), Ġnull ) ĊĠĠĠĠĠ Ġ? . setView ( input ) ĊĠĠĠ Ġval Ġdialog : ĠAlertDialog ? Ġ= Ġbuilder . create () ĊĠĠĠ Ġdialog ?. show () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Tag Dialog () Ġ{ ĊĠĠĠ Ġval Ġbuilder : ĠAlertDialog . Builder Ġ= Ġrequire Activity (). let Ġ{ ĊĠĠĠĠĠ ĠAlertDialog . Builder ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtag Re cycle Adapter Ġ= ĠAdapter Tag () ĊĠĠĠ Ġtag Re cycle Adapter . tag List Ġ= ĠviewModel . tags ĊĠĠĠ Ġval Ġre cycle View Ġ= ĠRecyclerView ( require Context ()) ĊĠĠĠ Ġre cycle View . apply Ġ{ ĊĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( require Context (), Ġ 3 ) ĊĠĠĠĠĠ Ġadapter Ġ= Ġtag Re cycle Adapter ĊĠĠĠ Ġ} ĊĠĠĠ Ġbuilder . setView ( recycle View ) ĊĠĠĠĠĠ Ġ? . set Positive Button ( resources . getString ( R . string . done ), Ġnull ) ĊĠĠĠ Ġval Ġdialog : ĠAlertDialog ? Ġ= Ġbuilder . create () ĊĠĠĠ Ġdialog ?. show () ĊĠ Ġ} Ċ } Ċ