package Ġorg . dh is 2 . use sc ases . enrollment Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . load . resource . bitmap . Circle Crop Ċ import Ġcom . bump tech . glide . load . resource . drawable . Drawable Transition Options Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Inject Ċ import Ġorg . dh is 2 . App Ċ import Ġorg . dh is 2 . Bindings . is Keyboard Opened Ċ import Ġorg . dh is 2 . R Ċ import Ġorg . dh is 2 . data . forms . data entry . fields . display . Display ViewModel Ċ import Ġorg . dh is 2 . databinding . Enrollment Activity Binding Ċ import Ġorg . dh is 2 . form . model . Field Ui Model Ċ import Ġorg . dh is 2 . u ic omp onent s . map . views . Map Selector Activity Ċ import Ġorg . dh is 2 . use sc ases . events Without Registration . event Capture . Event Capture Activity Ċ import Ġorg . dh is 2 . use sc ases . events Without Registration . event Initial . Event Initial Activity Ċ import Ġorg . dh is 2 . use sc ases . general . Activity Global Abstract Ċ import Ġorg . dh is 2 . use sc ases . te i Dashboard . Te i Dashboard Mobile Activity Ċ import Ġorg . dh is 2 . utils . Constants Ċ import Ġorg . dh is 2 . utils . Constants . CAMERA _ REQUEST Ċ import Ġorg . dh is 2 . utils . Constants . EN ROLL MENT _ UID Ċ import Ġorg . dh is 2 . utils . Constants . G ALL ERY _ REQUEST Ċ import Ġorg . dh is 2 . utils . Constants . PROGRAM _ UID Ċ import Ġorg . dh is 2 . utils . Constants . TE I _ UID Ċ import Ġorg . dh is 2 . utils . Event Mode Ċ import Ġorg . dh is 2 . utils . File Resources Util Ċ import Ġorg . dh is 2 . utils . Image Utils Ċ import Ġorg . dh is 2 . utils . custom views . Alert Bottom Dialog Ċ import Ġorg . dh is 2 . utils . custom views . Image Detail Bottom Dialog Ċ import Ġorg . h isp . dh is . android . core . arch . helpers . File Resource Directory Helper Ċ import Ġorg . h isp . dh is . android . core . arch . helpers . Geometry Helper Ċ import Ġorg . h isp . dh is . android . core . common . Feature Type Ċ import Ġorg . h isp . dh is . android . core . common . Geometry Ċ import Ġorg . h isp . dh is . android . core . enrollment . Enrollment Status Ċ Ċ class ĠEn rollment Activity Ġ: ĠActivity Global Abstract (), ĠEn rollment View Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠEn rollment Mode Ġ{ ĠNEW , ĠCHECK Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġfor Relationship : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠEn rollment Presenter Impl ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠEn rollment Activity Binding ĊĠĠĠ Ġlateinit Ġvar Ġmode : ĠEn rollment Mode ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEN ROLL MENT _ UID _ EXTRA Ġ= Ġ" EN ROLL MENT _ UID _ EXTRA " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPRO GRAM _ UID _ EXTRA Ġ= Ġ" PROGRAM _ UID _ EXTRA " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMODE _ EXTRA Ġ= Ġ" MODE _ EXTRA " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFOR _ REL ATION SHIP Ġ= Ġ" FOR _ REL ATION SHIP " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR Q _ EN ROLL MENT _ GEOMETRY Ġ= Ġ 1 0 2 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR Q _ INC IDENT _ GEOMETRY Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR Q _ EVENT Ġ= Ġ 1 0 2 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR Q _ GO _ BACK Ġ= Ġ 1 0 2 6 ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenrollment Uid : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Uid : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenrollment Mode : ĠEn rollment Mode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Relationship : ĠBoolean ? Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠEn rollment Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EN ROLL MENT _ UID _ EXTRA , Ġenrollment Uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( PROGRAM _ UID _ EXTRA , Ġprogram Uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( MODE _ EXTRA , Ġenrollment Mode . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( FOR _ REL ATION SHIP , Ġfor Relationship ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( for Relationship Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ FORWARD _ RESULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* region ĠL IF EC Y CLE */ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ( application Context Ġas ĠApp ). user Component () !!. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn rollment Module ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra ( EN ROLL MENT _ UID _ EXTRA ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra ( PROGRAM _ UID _ EXTRA ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEn rollment Mode . valueOf ( intent . getString Extra ( MODE _ EXTRA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . get Enrollment () Ġ== Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment ()?. tracked Entity Instance () Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Relationship Ġ= Ġintent . getBoolean Extra ( FOR _ REL ATION SHIP , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . enrollment _ activity ) ĊĠĠĠĠĠĠĠ Ġbinding . view Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġmode Ġ= ĠEn rollment Mode . valueOf ( intent . getString Extra ( MODE _ EXTRA )) ĊĊĠĠĠĠĠĠĠ Ġbinding . form View . init ( this ) ĊĊĠĠĠĠĠĠĠ Ġbinding . save . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Save Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpresenter . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . subscribe To Back Button () ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on Det t ach () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Q _ INC IDENT _ GEOMETRY , ĠR Q _ EN ROLL MENT _ GEOMETRY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Geometry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeature Type . valueOf Feature Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata !!. getString Extra ( Map Selector Activity . LOCATION _ TYPE _ EXTRA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . getString Extra ( Map Selector Activity . DATA _ EXTRA ), Ġrequest Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ALL ERY _ REQUEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Uri Ġ= Ġdata ?. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Resources Util . getFile From Gallery ( this , Ġimage Uri ). path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Fields () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠgetString ( R . string . something _ wrong ), ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCAM ERA _ REQUEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage File Ġ= ĠFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Resource Directory Helper . getFile Resource Directory ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" temp File . png " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠImage Utils (). rotate Image ( this , Ġimage File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save File ( uuid , Ġif Ġ( file . exists ()) Ġfile . path Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Fields () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrash Report Controller . log Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠgetString ( R . string . something _ wrong ), ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Q _ EVENT Ġ-> Ġopen Dashboard ( presenter . get Enrollment () !!. uid () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Event ( event Uid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . open Initial ( event Uid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠEvent Initial Activity . get Bundle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Program (). uid (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment () !!. tracked Entity Instance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment () !!. organisation Unit (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment () !!. uid (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment () !!. status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Initial Intent Ġ= ĠIntent ( ab str ac Context , ĠEvent Initial Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Initial Intent . put Extras ( bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( event Initial Intent , ĠR Q _ EVENT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Creation Intent Ġ= ĠIntent ( ab str ac Context , ĠEvent Capture Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Creation Intent . put Extras ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Capture Activity . getActivity Bundle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Program (). uid (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Mode . CHECK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Creation Intent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TRACK ED _ ENTITY _ INSTANCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Enrollment () !!. tracked Entity Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( event Creation Intent , ĠR Q _ EVENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Dashboard ( enrollment Uid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( for Relationship ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" TE I _ A _ UID ", Ġpresenter . get Enrollment () !!. tracked Entity Instance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( PROGRAM _ UID , Ġpresenter . get Program (). uid ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( TE I _ UID , Ġpresenter . get Enrollment () !!. tracked Entity Instance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( EN ROLL MENT _ UID , Ġenrollment Uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Te i Dashboard Mobile Activity :: class . java , Ġbundle , Ġtrue , Ġfalse , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Missing Mandatory Fields Message ( ĊĠĠĠĠĠĠĠ Ġempty Mandatory Fields : ĠMutable Map < String , ĠString > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlert Bottom Dialog . instance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . unable _ to _ complete )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . missing _ mandatory _ fields )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Empty Mandatory Fields ( empty Mandatory Fields . keys . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( support FragmentManager , ĠAlert Bottom Dialog :: class . java . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error Fields Message ( error Fields : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlert Bottom Dialog . instance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . unable _ to _ complete )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . field _ errors )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Empty Mandatory Fields ( error Fields ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( support FragmentManager , ĠAlert Bottom Dialog :: class . java . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgo Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġattempt Finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Keyboard Opened ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattempt Finish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Focus ?. apply Ġ{ Ġclear Focus () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattempt Finish () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠEn rollment Mode . CHECK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . back Is Clicked () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Delete Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Delete Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlert Bottom Dialog . instance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . title _ delete _ go _ back )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( getString ( R . string . delete _ go _ back )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . missing _ mandatory _ fields _ go _ back )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . delete All Saved Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( support FragmentManager , ĠAlert Bottom Dialog :: class . java . simple Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Geometry ( feature Type : ĠFeature Type , Ġdata Extra : ĠString , Ġrequest Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgeometry : ĠGeometry ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( feature Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeature Type . POINT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < List < Double >>() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeometry Helper . create Point Geometry ( Gson (). fromJson ( data Extra , Ġtype )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeature Type . POLYGON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < List < List < List < Double >>>> () Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeometry Helper . create Polygon Geometry ( Gson (). fromJson ( data Extra , Ġtype )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeature Type . MULTI _ POLYGON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < List < List < List < List < Double >>>> >() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeometry Helper . create Multi Polygon Geometry ( Gson (). fromJson ( data Extra , Ġtype )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( geometry Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Q _ EN ROLL MENT _ GEOMETRY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save Enrollment Geometry ( geometry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR Q _ INC IDENT _ GEOMETRY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save Te i Geometry ( geometry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Result And Finish () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* endregion */ ĊĊĠĠĠ Ġ/* region ĠTE I */ ĊĠĠĠ Ġoverride Ġfun Ġdisplay Te i Info ( attr List : ĠList < String >, Ġprofile Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ!= ĠEn rollment Mode . NEW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . root . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr List NotEmpty Ġ= Ġattr List . filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . main Attributes . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( attr List NotEmpty . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtext Ġ= Ġattr List NotEmpty [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtext Ġ= ĠString . format ("% s Ġ% s ", Ġattr List NotEmpty [ 0 ], Ġattr List NotEmpty [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . sec und ary Attribute . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( attr List NotEmpty . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 1 , Ġ 2 Ġ-> Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtext Ġ= Ġattr List NotEmpty [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profile Image . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . te i Image . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . image Separator . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( File ( profile Image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transition ( Drawable Transition Options . with Cross Fade ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform ( Circle Crop ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . te i Data Header . te i Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . te i Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Te i Image Header Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . te i Data Header . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( getString ( R . string . enroll _ in ), Ġpresenter . get Program (). displayName ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Te i Picture ( picture Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠImage Detail Bottom Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( picture Path ) ĊĠĠĠĠĠĠĠ Ġ). show ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Detail Bottom Dialog . TAG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/* endregion */ ĊĠĠĠ Ġ/* region ĠACCESS */ ĊĊĠĠĠ Ġoverride Ġfun Ġset Access ( access : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( access Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . save . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/* endregion */ ĊĊĠĠĠ Ġ/* region ĠSTATUS */ ĊĊĠĠĠ Ġoverride Ġfun Ġrender Status ( status : ĠEn rollment Status ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . enrollment Status Ġ= Ġstatus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Status Options ( current Status : ĠEn rollment Status ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* endregion */ ĊĊĠĠĠ Ġ/* region ĠDATA ĠEN TRY */ ĊĠĠĠ Ġoverride Ġfun Ġshow Fields ( fields : ĠList < Field Ui Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfields . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ! is ĠDisplay ViewModel ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . form View . render ( fields ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* endregion */ ĊĠĠĠ Ġoverride Ġfun Ġrequest Focus () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . root . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Save Button Visible ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . save . show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . save . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Save Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Focus Ġis ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Finish ing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Focus ?. apply Ġ{ Ġclear Focus () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! presenter . has Access () Ġ|| Ġpresenter . data Integr ity Check ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . finish ( mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar Progress . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar Progress . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Date Edition Warning () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠMaterial AlertDialog Builder ( this , ĠR . style . D his Material Dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . enrollment _ date _ edition _ warning ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . button _ ok , Ġnull ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} Ċ } Ċ