package Ġpro . k rit . f mp dao example . fragments Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . ras alex man . s result . common . extensions .* Ċ import Ġcom . ras alex man . s result presentation . extensions . launch UIT ry Catch Ċ import Ġcom . ras alex man . s result presentation . view Models . Base ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġpro . k rit . f mp dao example . MainActivity Ċ import Ġpro . k rit . f mp dao example . da os . IP m Data Local Dao Ċ import Ġpro . k rit . f mp dao example . database . Data Base Holder Ċ import Ġpro . k rit . f mp dao example . database . IZ fm Tor o Sy mptom List Ċ import Ġpro . k rit . f mp dao example . f mp resources . Fields Ċ import Ġpro . k rit . f mp dao example . models . Pm Et Data Local Entity Ċ import Ġpro . k rit . f mp dao example . models . Pm Type Ċ import Ġpro . k rit . generated . dao . Z fm Tor o Sy mptom ListModel Ċ import Ġpro . k rit . generated . dao . Z fm Tor o Sy mptom List Status Ċ import Ġpro . k rit . generated . request . Z fm Pm Get Set Request Et Auth Gr Model Ċ import Ġpro . k rit . generated . request . Z fm Pm Get Set Request Et Auth User Model Ċ import Ġpro . k rit . generated . request . Z fm Pm Get Set Request Params Ċ import Ġpro . k rit . hh ive core . common . Request Executer . isNot Bad Ċ import Ġpro . k rit . hh ive core . extensions .* Ċ import Ġjava . util .* Ċ import Ġkotlin . random . Random Ċ Ċ class ĠMain ViewModel Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġtoolbar Title : ĠMutable LiveData < String > Ġ= ĠMutable LiveData (" Main ") ĊĊĠĠĠ Ġprivate Ġval Ġpm Local Dao : ĠIP m Data Local Dao Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠData Base Holder . main Db . provide Pm Local Dao () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġz fm Tor o Sy mptom List : ĠI Z fm Tor o Sy mptom List Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠData Base Holder . main Db . provide IZ fm Tor o Sy mptom List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstatus : ĠMutable LiveData < String > Ġby Ġunsafe Lazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData ( if Ġ( Data Base Holder . is Db Opened ) Ġ" DB ĠOPEN ED " Ġelse Ġ" DB ĠNOT ĠOPEN ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauth Online () Ġ= Ġlaunch UIT ry Catch Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess Loading ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Base Holder . auth User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . DEBUG _ LOGIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . DEBUG _ PASSWORD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . apply If Success Suspend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog g Ġ{ Ġ" AUTH ĠSUCCESS Ġwith Ġtoken : Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Get Set UserData () ĊĠĠĠĠĠĠĠ Ġ}. apply If Success Suspend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Sy mptoms () ĊĠĠĠĠĠĠĠ Ġ}. apply If Success Suspend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . post Value (" USER ĠAUTH ORIZ ED ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprocess Loading ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Get Set UserData () Ġ= Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġz mp Get Set Ġ= ĠData Base Holder . main Db . provide Zm Get Set () ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠZ fm Pm Get Set Request Params ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv User Ġ= ĠMainActivity . DEBUG _ LOGIN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġz mp Get Set . request List Status ( param ) ĊĠĠĠĠĠĠĠ Ġprintln (" ---- -> ĠZ fm Pm Get Set Request Params Ġresult Ġ= Ġ$ status ") ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Credentials Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . parse Table < Z fm Pm Get Set Request Et Auth Gr Model >(" ET _ AUTH _ GR ") ĊĠĠĠĠĠĠĠ Ġval ĠuserData Ġ= Ġstatus . parse Table < Z fm Pm Get Set Request Et Auth User Model >(" ET _ AUTH _ USER ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĊĠĠĠĠĠĠĠ Ġprintln (" ---- -> Ġload Get Set UserData Ġuser Credentials Ġ= Ġ$ user Credentials ") ĊĠĠĠĠĠĠĠ Ġprintln (" ---- -> Ġload Get Set UserData ĠuserData Ġ= Ġ$ userData ") ĊĠĠĠĠĠĠĠ Ġif ( status . isNot Bad ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany Success () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Result ( message Ġ= Ġstatus . get ErrorMessage ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Sy mptoms () Ġ= Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠData Base Holder . main Db . provide IZ fm Tor o Sy mptom List (). request Builder () ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġrequest . stream Call Auto (). execute () ĊĠĠĠĠĠĠĠ Ġprintln (" ---- -> Ġload Sy mptoms Ġ${ status . isNot Bad () }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Sy mptoms () Ġ= Ġlaunch UIT ry Catch Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess Loading ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġlocal R bn r Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġall Data : ĠList < Z fm Tor o Sy mptom ListModel > Ġ= Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz fm Tor o Sy mptom List . select < Z fm Tor o Sy mptom ListModel , ĠZ fm Tor o Sy mptom List Status > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġ= Ġ"${ Fields . RB NR _ Int } Ġ= Ġ$ local R bn r " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" ---- -> Ġget Sy mptoms Ġ${ all Data . size }") ĊĠĠĠĠĠĠĠ Ġprocess Loading ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauth Offline () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Show Users Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation LiveData . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMain Fragment Directions . action Main Fragment To Users Fragment (). to Navigate Result () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Local List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= ĠCor outine Scope ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Size Ġ= Ġselect Local Dao Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal List To Insert Ġ= Ġmutable ListOf < Pm Et Data Local Entity >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Count Ġ= ĠRandom . nextInt ( 2 1 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( random Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Local Ġ= Ġit Ġ% Ġ 2 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġif Ġ( is Local ) ĠP m Type . USER Ġelse ĠP m Type . ADMIN ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal List To Insert . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP m Et Data Local Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUUID . randomUUID (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= ĠUUID . randomUUID (). toString (). take ( 1 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġau art Ġ= ĠUUID . randomUUID (). toString (). take ( 1 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Num Ġ= ĠRandom . nextInt ( 1 0 , Ġ 1 0 0 0 0 0 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Local Ġ= Ġis Local ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinsert All Status Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpm Local Dao . insert Or Replace ( local List To Insert , Ġnotify All Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ---- -> Ġinsert List Ġof Ġ${ local List To Insert . size } Ġ= Ġ${ insert All Status . is Ok }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġselect Local Dao Async (): ĠInt Ġ= Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= ĠlistOf ( Fields . MARKER , ĠFields . TASK _ NUM , ĠFields . LOCAL _ ID ) ĊĠĠĠĠĠĠĠ Ġval Ġall Data Ġ= Ġpm Local Dao . select () ĊĠĠĠĠĠĠĠ Ġval Ġall Count Ġ= Ġpm Local Dao . count ( by Field Ġ= ĠFields . MARKER ) ĊĠĠĠĠĠĠĠ Ġprintln (" ---- > Ġall Ġcount Ġ= Ġ$ all Count ") ĊĠĠĠĠĠĠĠ Ġval Ġconverted Size Ġ= Ġif Ġ( all Data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġfirst Ġ= Ġall Data . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult List Ġ= Ġpm Local Dao . select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . where Ġ= Ġ"${ Fields . IS _ LOCAL } Ġ= Ġ' false '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fields Ġ= Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverted Ġ= Ġresult List . map NotNull Ġ{ Ġit . convertTo () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverted . size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġdelete Status Ġ= Ġpm Local Dao . delete ( where Ġ= Ġ"${ Fields . IS _ LOCAL } Ġ= Ġ' false '") ĊĊĠĠĠĠĠĠĠ Ġprintln (" ---- > Ġdelete Ġstatus Ġ= Ġ${ delete Status . isNot Bad () }") ĊĠĠĠĠĠĠĠ Ġprintln (" ---- > Ġconverted Ġcount Ġ= Ġ$ converted Size ") ĊĠĠĠĠĠĠĠ Ġconverted Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Loading ( isLoading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport LiveData . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Result () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }