package Ġio . github . w ulkan owy . ui . modules . login . student select Ċ Ċ import Ġio . github . w ulkan owy . data . Status Ċ import Ġio . github . w ulkan owy . data . db . entities . Student Ċ import Ġio . github . w ulkan owy . data . db . entities . Student With Se me sters Ċ import Ġio . github . w ulkan owy . data . repositories . Student Repository Ċ import Ġio . github . w ulkan owy . ui . base . Base Presenter Ċ import Ġio . github . w ulkan owy . ui . modules . login . Login ErrorHandler Ċ import Ġio . github . w ulkan owy . utils . Analytics Helper Ċ import Ġio . github . w ulkan owy . utils . flow With Resource Ċ import Ġio . github . w ulkan owy . utils . if Null Or Blank Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . Serializable Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠLogin Student Select Presenter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġstudent Repository : ĠStudent Repository , ĊĠĠĠ Ġprivate Ġval Ġlogin ErrorHandler : ĠLogin ErrorHandler , ĊĠĠĠ Ġprivate Ġval Ġanalytics : ĠAnalytics Helper Ċ ) Ġ: ĠBase Presenter < Login Student Select View >( login ErrorHandler , Ġstudent Repository ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlast Error : ĠThrowable ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġstudents Ġ= Ġempty List < Student With Se me sters >() ĊĊĠĠĠ Ġprivate Ġval Ġselected Students Ġ= Ġmutable ListOf < Student With Se me sters >() ĊĊĠĠĠ Ġfun Ġon Attach View ( view : ĠLogin Student Select View , Ġstudents : ĠSerializable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach View ( view ) ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contact ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable SignIn ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ErrorHandler . on Student Duplicate Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" The Ġstudent Ġalready Ġregistered Ġin Ġthe Ġapp Ġwas Ġselected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( students Ġis ĠList < *> Ġ&& Ġstudents . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Data ( students . filter Is Instance < Student With Se me sters >()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon SignIn () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Students ( selected Students ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Parent Init Student Select View ( student sWith Se me sters : ĠList < Student With Se me sters >) Ġ{ ĊĠĠĠĠĠĠĠ Ġload Data ( student sWith Se me sters ) ĊĠĠĠĠĠĠĠ Ġif Ġ( student sWith Se me sters . size Ġ== Ġ 1 ) Ġregister Students ( student sWith Se me sters ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon ItemSelected ( student With Se mester : ĠStudent With Se me sters , Ġalready Saved : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( already Saved ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġselected Students ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. removeAll Ġ{ Ġit Ġ== Ġstudent With Se mester Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġif Ġ(! it ) Ġselected Students . add ( student With Se mester ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġview ?. enable SignIn ( selected Students . isNotEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompare Students ( a : ĠStudent , Ġb : ĠStudent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġa . email Ġ== Ġb . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġa . symbol Ġ== Ġb . symbol ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġa . student Id Ġ== Ġb . student Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġa . school Symbol Ġ== Ġb . school Symbol ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġa . class Id Ġ== Ġb . class Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( student sWith Se me sters : ĠList < Student With Se me sters >) Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Selected State () ĊĠĠĠĠĠĠĠ Ġthis . students Ġ= Ġstudent sWith Se me sters ĊĊĠĠĠĠĠĠĠ Ġflow With Resource Ġ{ Ġstudent Repository . get Saved Students ( false ) Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> ĠTim ber . d (" Login Ġstudent Ġselect Ġstudents Ġload Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġview ?. update Data ( student sWith Se me sters . map Ġ{ Ġstudent With Se me sters Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent With Se me sters Ġto Ġit . data !!. any Ġ{ Ġitem Ġ-> Ġcompare Students ( student With Se me sters . student , Ġitem . student ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error Ġ= Ġit . error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. update Data ( student sWith Se me sters . map Ġ{ Ġstudent Ġ-> Ġstudent Ġto Ġfalse Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Selected State () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Students . clear () ĊĠĠĠĠĠĠĠ Ġview ?. enable SignIn ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Students ( student sWith Se me sters : ĠList < Student With Se me sters >) Ġ{ ĊĠĠĠĠĠĠĠ Ġflow With Resource Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsaved Students Ġ= Ġstudent Repository . save Students ( student sWith Se me sters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Registered Ġ= Ġstudent sWith Se me sters . first (). apply Ġ{ Ġstudent . id Ġ= Ġsaved Students . first () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Repository . switch Student ( first Registered ) ĊĠĠĠĠĠĠĠ Ġ}. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Registration Ġstarted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Registration Ġresult : ĠSuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. open Main View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Register Event ( student sWith Se me sters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Registration Ġresult : ĠAn Ġexception Ġoccurred Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Content ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Contact ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Error Ġ= Ġit . error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ErrorHandler . dispatch ( it . error !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Register Event ( student sWith Se me sters , Ġit . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch (" register ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Discord Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. open Discord Invite () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Email Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. open Email ( last Error ?. message . if Null Or Blank Ġ{ Ġ" empty " Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Register Event ( student sWith Se me sters : ĠList < Student With Se me sters >, Ġerror : ĠThrowable ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstudent sWith Se me sters . forEach Ġ{ Ġstudent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanalytics . log Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" registration _ student _ select ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" success " Ġto Ġ( error Ġ!= Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sc rapper BaseUrl " Ġto Ġstudent . student . sc rapper BaseUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" symbol " Ġto Ġstudent . student . symbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" error " Ġto Ġ( error ?. message ?. if Blank Ġ{ Ġ" No Ġmessage " Ġ} Ġ?: Ġ" No Ġerror ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ