package Ġio . github . w ulkan owy . ui . modules . dashboard Ċ Ċ import Ġio . github . w ulkan owy . data . Resource Ċ import Ġio . github . w ulkan owy . data . Status Ċ import Ġio . github . w ulkan owy . data . enums . Message Folder Ċ import Ġio . github . w ulkan owy . data . repositories . Attendance Summary Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Conference Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Exam Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Grade Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Home work Repository Ċ import Ġio . github . w ulkan owy . data . repositories . L uck y Number Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Message Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Preferences Repository Ċ import Ġio . github . w ulkan owy . data . repositories . School Anno uncement Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Se mester Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Student Repository Ċ import Ġio . github . w ulkan owy . data . repositories . Time table Repository Ċ import Ġio . github . w ulkan owy . ui . base . Base Presenter Ċ import Ġio . github . w ulkan owy . ui . base . ErrorHandler Ċ import Ġio . github . w ulkan owy . utils . calculate Percentage Ċ import Ġio . github . w ulkan owy . utils . flow With Resource Ċ import Ġio . github . w ulkan owy . utils . flow With Resource In Ċ import Ġio . github . w ulkan owy . utils . next Or Same School Day Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠDashboard Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ ĠerrorHandler : ĠError Handler , ĊĠĠĠ Ġstudent Repository : ĠStudent Repository , ĊĠĠĠ Ġprivate Ġval Ġluck y Number Repository : ĠL uck y Number Repository , ĊĠĠĠ Ġprivate Ġval Ġgrade Repository : ĠGr ade Repository , ĊĠĠĠ Ġprivate Ġval Ġse mester Repository : ĠSe mester Repository , ĊĠĠĠ Ġprivate Ġval Ġmessage Repository : ĠMessage Repository , ĊĠĠĠ Ġprivate Ġval Ġatt endance Summary Repository : ĠAtt endance Summary Repository , ĊĠĠĠ Ġprivate Ġval Ġtime table Repository : ĠTime table Repository , ĊĠĠĠ Ġprivate Ġval Ġhome work Repository : ĠHome work Repository , ĊĠĠĠ Ġprivate Ġval Ġexam Repository : ĠExam Repository , ĊĠĠĠ Ġprivate Ġval Ġconference Repository : ĠConference Repository , ĊĠĠĠ Ġprivate Ġval Ġpreferences Repository : ĠPreferences Repository , ĊĠĠĠ Ġprivate Ġval Ġschool Anno uncement Repository : ĠSchool Anno uncement Repository Ċ ) Ġ: ĠBase Presenter < Dashboard View >( error Handler , Ġstudent Repository ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdashboard Item Loaded List Ġ= Ġmutable ListOf < Dashboard Item >() ĊĊĠĠĠ Ġprivate Ġval Ġdashboard Item Refresh Loaded List Ġ= Ġmutable ListOf < Dashboard Item >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdashboard Items To Load : ĠSet < Dashboard Item . Type > ĊĊĠĠĠ Ġprivate Ġvar Ġdashboard Tiles To Load : ĠSet < Dashboard Item . Tile > Ġ= Ġempty Set () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach View ( view : ĠDashboard View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach View ( view ) ĊĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpreferences Repository . selected Dashboard Tiles Flow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġload Data ( tiles To Load Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch (" dashboard _ pref ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Drag And Drop End ( list : ĠList < Dashboard Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . clear () ĊĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . addAll ( list ) ĊĊĠĠĠĠĠĠĠ Ġval Ġposition List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . map Indexed Ġ{ Ġindex , Ġdashboard Item Ġ-> ĠPair ( dashboard Item . type , Ġindex ) Ġ}. toMap () ĊĊĠĠĠĠĠĠĠ Ġpreferences Repository . dashboard Items Position Ġ= Ġposition List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Data ( force Refresh : ĠBoolean Ġ= Ġfalse , Ġtiles To Load : ĠSet < Dashboard Item . Tile >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Dashboard DataTo Load Ġ= Ġdashboard Tiles To Load ĊĊĠĠĠĠĠĠĠ Ġdashboard Tiles To Load Ġ= Ġtiles To Load ĊĠĠĠĠĠĠĠ Ġdashboard Items To Load Ġ= Ġdashboard Tiles To Load . map Ġ{ Ġit . to Dashboard ItemType () Ġ}. toSet () ĊĊĠĠĠĠĠĠĠ Ġremove Un selected Tiles () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Tile List Ġ= Ġgenerate Tile List To Load ( old Dashboard DataTo Load , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġload Tiles ( force Refresh , Ġnew Tile List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Un selected Tiles () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis L uck y Number To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . LU CK Y _ NUMBER Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Messages To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . MESSAGES Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Attendance To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . ATT END ANCE Ġ} ĊĊĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . removeAll Ġ{ Ġloaded Tile Ġ-> Ġdashboard Items To Load . none Ġ{ Ġit Ġ== Ġloaded Tile . type Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . find Ġ{ Ġit Ġis ĠDashboard Item . Horizontal Group Ġ} Ġas ĠDashboard Item . Horizontal Group ? ĊĊĠĠĠĠĠĠĠ Ġif Ġ( horizontal Group Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhorizontal Index Ġ= Ġdashboard Item Loaded List . indexOf ( horizontal Group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . remove ( horizontal Group ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdated Horizontal Group Ġ= Ġhorizontal Group ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( horizontal Group . luck y Number Ġ!= Ġnull Ġ&& Ġ! is L uck y Number To Load ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Horizontal Group Ġ= Ġupdated Horizontal Group . copy ( luck y Number Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( horizontal Group . attendance Percentage Ġ!= Ġnull Ġ&& Ġ! is Attendance To Load ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Horizontal Group Ġ= Ġupdated Horizontal Group . copy ( attendance Percentage Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( horizontal Group . unread Messages Count Ġ!= Ġnull Ġ&& Ġ! is Messages To Load ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Horizontal Group Ġ= Ġupdated Horizontal Group . copy ( unread Messages Count Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( horizontal Group . error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Horizontal Group Ġ= Ġupdated Horizontal Group . copy ( error Ġ= Ġnull , ĠisLoading Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . add ( horizontal Index , Ġupdated Horizontal Group ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview ?. update Data ( dashboard Item Loaded List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Tiles ( force Refresh : ĠBoolean , Ġtile List : ĠList < Dashboard Item . Tile >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtile List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . ACCOUNT Ġ-> Ġload Current Account ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . LU CK Y _ NUMBER Ġ-> Ġload L uck y Number ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . MESSAGES Ġ-> Ġload Messages ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . ATT END ANCE Ġ-> Ġload Attendance ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . LESS ONS Ġ-> Ġload Less ons ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . GR A DES Ġ-> Ġload Gr ades ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . HOME WORK Ġ-> Ġload Home work ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . AN NOUN CE MENTS Ġ-> Ġload School Anno unce ments ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . EX AMS Ġ-> Ġload Ex ams ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . CON FER ENCES Ġ-> Ġload Con fer ences ( force Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . ADS Ġ-> ĠTODO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Tile List To Load ( ĊĠĠĠĠĠĠĠ Ġold Dashboard Tile To Load : ĠSet < Dashboard Item . Tile >, ĊĠĠĠĠĠĠĠ Ġforce Refresh : ĠBoolean ĊĠĠĠ Ġ) Ġ= Ġdashboard Tiles To Load . filter Ġ{ Ġnew Tile To Load Ġ-> ĊĠĠĠĠĠĠĠ Ġold Dashboard Tile To Load . none Ġ{ Ġit Ġ== Ġnew Tile To Load Ġ} Ġ|| Ġforce Refresh ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Swipe Refresh () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Force Ġrefresh ing Ġthe Ġdashboard ") ĊĠĠĠĠĠĠĠ Ġload Data ( true , Ġpreferences Repository . selected Dashboard Tiles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Retry () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġload Data ( true , Ġpreferences Repository . selected Dashboard Tiles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon View Re selected () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Dashboard Ġview Ġis Ġre selected ") ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpop View To Root () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Details Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Error Details Dialog ( last Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Dashboard Tile Settings Selected (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Dashboard Tile Settings ( preferences Repository . selected Dashboard Tiles . toList ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Dashboard Tile Setting Selected ( selected Items : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpreferences Repository . selected Dashboard Tiles Ġ= Ġselected Items . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Tile . valueOf ( it ) ĊĠĠĠĠĠĠĠ Ġ}. toSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Current Account ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource Ġ{ Ġstudent Repository . getCurrent Student ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġaccount Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Account ( it . data , ĠisLoading Ġ= Ġtrue ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġaccount Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Account ( it . data ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġaccount Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Account ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch (" dashboard _ account ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload L uck y Number ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġluck y Number Repository . get L uck y Number ( student , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġluck y Ġnumber Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġluck y Number Ġ= Ġit . data ?. luck y Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġluck y Ġnumber Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġluck y Number Ġ= Ġit . data ?. luck y Number Ġ?: Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġluck y Ġnumber Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( error Ġ= Ġit . error , Ġforce Refresh Ġ= Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ luck y _ number ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Messages ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Repository . get Messages ( student , Ġse mester , ĠMessage Folder . RECE IVED , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġmessages Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunread Messages Count Ġ= Ġit . data ?. count Ġ{ Ġmessage Ġ-> Ġmessage . unread Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunread Messages Count Ġ= Ġunread Messages Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġmessages Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunread Messages Count Ġ= Ġit . data ?. count Ġ{ Ġmessage Ġ-> Ġmessage . unread Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunread Messages Count Ġ= Ġunread Messages Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġmessages Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( error Ġ= Ġit . error , Ġforce Refresh Ġ= Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ messages ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Attendance ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Summary Repository . get Attendance Summary ( student , Ġse mester , Ġ- 1 , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġatt endance Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġatt endance Percentage Ġ= Ġit . data ?. calculate Percentage () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Percentage Ġ= Ġatt endance Percentage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġatt endance Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġatt endance Percentage Ġ= Ġit . data ?. calculate Percentage () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Percentage Ġ= Ġatt endance Percentage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġatt endance Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Horizontal GroupData ( error Ġ= Ġit . error , Ġforce Refresh Ġ= Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ attendance ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Gr ades ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Repository . get Gr ades ( student , Ġse mester , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġoriginal Resource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Subject With Gr ades Ġ= Ġoriginal Resource . data ?. first . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġgrade Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade . date . is After ( LocalDate . now (). minus Days ( 7 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġgrade Ġ-> Ġgrade . subject Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġgrade Ġ-> Ġgrade . date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġsubject With Gr ades Ġ-> Ġsubject With Gr ades . second [ 0 ]. date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġoriginal Resource . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġfiltered Subject With Gr ades . take If Ġ{ Ġoriginal Resource . data Ġ!= Ġnull Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġoriginal Resource . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġgr ades Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Gr ades ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject With Gr ades Ġ= Ġit . data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Theme Ġ= Ġpreferences Repository . grade Color Theme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġgr ades Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Gr ades ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject With Gr ades Ġ= Ġit . data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Theme Ġ= Ġpreferences Repository . grade Color Theme ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġgr ades Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Gr ades ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ grade s ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Less ons ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠLocalDate . now (). next Or Same School Day ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table Repository . getTime table ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Ġ= Ġstudent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse mester Ġ= Ġse mester , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġdate . plus Days ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġless ons Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Less ons ( it . data , ĠisLoading Ġ= Ġtrue ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġless ons Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Less ons ( it . data ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġless ons Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Less ons ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ lessons ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Home work ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠLocalDate . now (). next Or Same School Day ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome work Repository . get Home work ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Ġ= Ġstudent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse mester Ġ= Ġse mester , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġhome work Resource Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Date Ġ= ĠLocalDate . now () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Home work Ġ= Ġhome work Resource . data ?. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . date . is After ( current Date ) Ġ|| Ġit . date Ġ== Ġcurrent Date ) Ġ&& Ġ! it . is Done ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome work Resource . copy ( data Ġ= Ġfiltered Home work ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġhome work Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Home work ( it . data Ġ?: Ġempty List (), ĠisLoading Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġhome work Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Home work ( it . data Ġ?: Ġempty List ()), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġhome work Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Home work ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ home work ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload School Anno unce ments ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġschool Anno uncement Repository . get School Anno unce ments ( student , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġannounce ments Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Anno unce ments ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data Ġ?: Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġannounce ments Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Anno unce ments ( it . data Ġ?: Ġempty List ()), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġannounce ments Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Anno unce ments ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ announce ments ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Ex ams ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam Repository . get Ex ams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Ġ= Ġstudent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse mester Ġ= Ġse mester , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠLocalDate . now (). plus Days ( 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġex ams Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Ex ams ( it . data . or Empty (), ĠisLoading Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġex ams Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Ex ams ( it . data Ġ?: Ġempty List ()), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġex ams Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Ex ams ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ ex ams ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Con fer ences ( force Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconference Repository . get Con fer ences ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Ġ= Ġstudent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse mester Ġ= Ġse mester , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh Ġ= Ġforce Refresh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġcon fer ences Ġdata Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Item . Con fer ences ( it . data Ġ?: Ġempty List (), ĠisLoading Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġcon fer ences Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Con fer ences ( it . data Ġ?: Ġempty List ()), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġdashboard Ġcon fer ences Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Con fer ences ( error Ġ= Ġit . error ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" dashboard _ con fer ences ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Horizontal GroupData ( ĊĠĠĠĠĠĠĠ Ġluck y Number : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġunread Messages Count : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġatt endance Percentage : ĠDouble ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġerror : ĠThrowable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠisLoading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġforce Refresh : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis L uck y Number To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . LU CK Y _ NUMBER Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Messages To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . MESSAGES Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Attendance To Load Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Tiles To Load . any Ġ{ Ġit Ġ== ĠDashboard Item . Tile . ATT END ANCE Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis P ushed ToList Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . any Ġ{ Ġit . type Ġ== ĠDashboard Item . Type . HORIZONTAL _ GROUP Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Horizontal Group ( error Ġ= Ġerror ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhorizontal Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . find Ġ{ Ġit Ġis ĠDashboard Item . Horizontal Group Ġ} Ġas ĠDashboard Item . Horizontal Group ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Horizontal Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Group ?. copy ( isLoading Ġ= Ġtrue ) Ġ?: ĠDashboard Item . Horizontal Group ( isLoading Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( updated Horizontal Group , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( force Refresh Ġ&& Ġ! is P ushed ToList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( Dashboard Item . Horizontal Group (), Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhorizontal Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . single Ġ{ Ġit Ġis ĠDashboard Item . Horizontal Group Ġ} Ġas ĠDashboard Item . Horizontal Group ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġluck y Number Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( horizontal Group . copy ( luck y Number Ġ= Ġluck y Number ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunread Messages Count Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Group . copy ( unread Messages Count Ġ= Ġunread Messages Count ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Percentage Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Group . copy ( attendance Percentage Ġ= Ġatt endance Percentage ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġis Horizontal Group Loaded Ġ= Ġdashboard Item Loaded List . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ! is ĠDashboard Item . Horizontal Group ) Ġreturn @ any Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis L uck y Number State Correct Ġ= Ġ( it . luck y Number Ġ!= Ġnull ) Ġ== Ġis L uck y Number To Load ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Messages State Correct Ġ= Ġ( it . unread Messages Count Ġ!= Ġnull ) Ġ== Ġis Messages To Load ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Attendance State Correct Ġ= Ġ( it . attendance Percentage Ġ!= Ġnull ) Ġ== Ġis Attendance To Load ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis L uck y Number State Correct Ġ&& Ġis Attendance State Correct Ġ&& Ġis Messages State Correct ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Horizontal Group Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Horizontal Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . single Ġ{ Ġit Ġis ĠDashboard Item . Horizontal Group Ġ} Ġas ĠDashboard Item . Horizontal Group ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( updated Horizontal Group . copy ( isLoading Ġ= Ġfalse , Ġerror Ġ= Ġnull ), Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Data ( dashboard Item : ĠDashboard Item , Ġforce Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Force Refresh Error Ġ= Ġforce Refresh Ġ&& Ġdashboard Item . error Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġdashboard Items Position Ġ= Ġpreferences Repository . dashboard Items Position ĊĊĠĠĠĠĠĠĠ Ġwith ( dashboard Item Loaded List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All Ġ{ Ġit . type Ġ== Ġdashboard Item . type Ġ&& Ġ! is Force Refresh Error Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Force Refresh Error ) Ġadd ( dashboard Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsortBy Ġ{ Ġtile Ġ-> Ġdashboard Items To Load . single Ġ{ Ġit Ġ== Ġtile . type Ġ}. ordinal Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( force Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( dashboard Item Refresh Loaded List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove All Ġ{ Ġit . type Ġ== Ġdashboard Item . type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( dashboard Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . sortBy Ġ{ Ġtile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Items Position ?. get OrDefault ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile . type . ordinal Ġ+ Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ?: Ġtile . type . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġis Items Loaded Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Items To Load . all Ġ{ Ġtype Ġ-> Ġdashboard Item Loaded List . any Ġ{ Ġit . type Ġ== Ġtype Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Refresh Item Loaded Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Items To Load . all Ġ{ Ġtype Ġ-> Ġdashboard Item Refresh Loaded List . any Ġ{ Ġit . type Ġ== Ġtype Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Items Data Loaded Ġ= Ġis Items Loaded Ġ&& Ġdashboard Item Loaded List . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Data Loaded Ġ|| Ġit . error Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis Refresh Items Data Loaded Ġ= Ġis Refresh Item Loaded Ġ&& Ġdashboard Item Refresh Loaded List . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Data Loaded Ġ|| Ġit . error Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Refresh Items Data Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Refresh ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Refresh Loaded List . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! force Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress (! is Items Data Loaded ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( is Items Data Loaded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( dashboard Item Loaded List . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Items Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Items Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . filter Not Ġ{ Ġit . type Ġ== ĠDashboard Item . Type . ACCOUNT Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Account Item Error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdashboard Item Loaded List . single Ġ{ Ġit . type Ġ== ĠDashboard Item . Type . ACCOUNT Ġ}. error Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis General Error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Items . all Ġ{ Ġit . error Ġ!= Ġnull Ġ} Ġ&& Ġfiltered Items . isNotEmpty () Ġ|| Ġis Account Item Error ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġfiltered Items . map Ġ{ Ġit . error ?. stack Trace ToString () Ġ}. toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error Ġ= ĠException ( errorMessage ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content (! is General Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error View ( is General Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }