package Ġio . github . w ulkan owy . ui . modules . attendance . summary Ċ Ċ import Ġio . github . w ulkan owy . data . Status Ċ import Ġio . github . w ulkan owy . data . db . entities . Attendance Summary Ċ import Ġio . github . w ulkan owy . data . db . entities . Subject Ċ import Ġio . github . w ulkan owy . data . repositories . Attendance Summary 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 . Subject 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 . Analytics Helper Ċ import Ġio . github . w ulkan owy . utils . after Loading Ċ import Ġio . github . w ulkan owy . utils . flow With Resource In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . time . Month Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAtt endance Summary Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ ĠerrorHandler : ĠError Handler , ĊĠĠĠ Ġstudent Repository : ĠStudent Repository , ĊĠĠĠ Ġprivate Ġval Ġatt endance Summary Repository : ĠAtt endance Summary Repository , ĊĠĠĠ Ġprivate Ġval Ġsubject Repository : ĠSubject Repository , ĊĠĠĠ Ġprivate Ġval Ġse mester Repository : ĠSe mester Repository , ĊĠĠĠ Ġprivate Ġval Ġanalytics : ĠAnalytics Helper Ċ ) Ġ: ĠBase Presenter < Attendance Summary View >( error Handler , Ġstudent Repository ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġsubjects Ġ= Ġempty List < Subject >() ĊĊĠĠĠ Ġvar Ġcurrent Subject Id Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĊĠĠĠ Ġfun Ġon Attach View ( view : ĠAtt endance Summary View , Ġsubject Id : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach View ( view ) ĊĠĠĠĠĠĠĠ Ġview . init View () ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Attendance Ġsummary Ġview Ġwas Ġinitialized Ġwith Ġsubject Ġid Ġ${ subject Id Ġ?: Ġ- 1 }") ĊĠĠĠĠĠĠĠ ĠerrorHandler . show ErrorMessage Ġ= Ġ:: show Error View OnError ĊĠĠĠĠĠĠĠ Ġload Data ( subject Id Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġload Subject s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Swipe Refresh () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Force Ġrefresh ing Ġthe Ġatt endance Ġsummary ") ĊĠĠĠĠĠĠĠ Ġload Data ( current Subject Id , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Retry () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġload Data ( current Subject Id , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Details Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Error Details Dialog ( last Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Subject Selected ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Select Ġatt endance Ġsummary Ġsubject Ġ$ name ") ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Swipe ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error View ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( subjects . single OrNull Ġ{ Ġit . name Ġ== Ġname Ġ} ?. real Id Ġ?: Ġ- 1 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġcurrent Subject Id ) Ġload Data ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( subject Id : ĠInt , Ġforce Refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġdata Ġstarted ") ĊĊĠĠĠĠĠĠĠ Ġcurrent Subject Id Ġ= Ġsubject Id ĊĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġatt endance Summary Repository . get Attendance Summary ( student , Ġse mester , Ġsubject Id , Ġforce Refresh ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . data . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Swipe ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Refresh ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate DataSet ( sort Items ( it . data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty ( it . data !!. isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( it . data . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate DataSet ( sort Items ( it . data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . log Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" load _ data ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type " Ġto Ġ" attendance _ summary ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" items " Ġto Ġit . data !!. size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" item _ id " Ġto Ġsubject Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. after Loading Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Refresh ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Swipe ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort Items ( items : ĠList < Attendance Summary >) Ġ= Ġitems . sorted By Descending Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( item . month . value Ġ<= ĠMonth . J UNE . value ) Ġitem . month . value Ġ+ Ġ 1 2 Ġelse Ġitem . month . value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error View OnError ( message : ĠString , Ġerror : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is View Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error Ġ= Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetError Details ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error View ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġshow Error ( message , Ġerror ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Subject s () Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource In Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent Repository . getCurrent Student () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġse mester Ġ= Ġse mester Repository . getCurrent Se mester ( student ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Repository . get Subject s ( student , Ġse mester ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġsubjects Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubjects Ġ= Ġit . data !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġsubjects Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. update Subject s ( ArrayList ( it . data . map Ġ{ Ġsubject Ġ-> Ġsubject . name Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Subject s ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Loading Ġatt endance Ġsummary Ġsubjects Ġresult : ĠAn Ġexception Ġoccurred ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" subjects ") ĊĠĠĠ Ġ} Ċ } Ċ