package Ġio . flater lab . mes hex am . data . communication . from Host Ċ Ċ import Ġandroidx . room . with Transaction Ċ import Ġcom . google . gson . Gson Ċ import Ġio . flater lab . mes hex am . data . communication . Payload Handler Ċ import Ġio . flater lab . mes hex am . data . database . Mesh Database Ċ import Ġio . flater lab . mes hex am . data . database . entity . Answer Entity Ċ import Ġio . flater lab . mes hex am . data . database . entity . Exam Entity Ċ import Ġio . flater lab . mes hex am . data . database . entity . Question Entity Ċ import Ġio . flater lab . mes hex am . data . database . entity . client . Exam To Hosting Mapper Entity Ċ import Ġio . flater lab . mes hex am . libr ari y . mesh . common . dto . From Host Payload Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġclass ĠExam Content Payload Handler Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠMesh Database , ĊĠĠĠ Ġprivate Ġval Ġgson : ĠGson , Ċ ) Ġ: ĠPayload Handler . Handler < From Host Payload > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġexam Dao Ġ= Ġdatabase . exam Dao () ĊĠĠĠ Ġprivate Ġval Ġquestion Dao Ġ= Ġdatabase . question Dao () ĊĠĠĠ Ġprivate Ġval Ġanswer Dao Ġ= Ġdatabase . answer Dao () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhandle ( payload : ĠFrom Host Payload ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( payload . contentType Ġ!= ĠExam Dto . contentType ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġexam Dto Ġ= Ġgson . fromJson ( payload . data , ĠExam Dto :: class . java ) ĊĠĠĠĠĠĠĠ Ġsave Exam ( exam Dto ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġsave Exam ( exam : ĠExam Dto ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Exam Dto Ġto Ġbe Ġsaved : Ġ$ exam ") ĊĠĠĠĠĠĠĠ Ġdatabase . with Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExam Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexam Id Ġ= Ġexam . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost UserId Ġ= Ġexam . host UserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġexam . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġexam . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration In Min Ġ= Ġexam . duration In Min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġexam Dao . insert Ex ams ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠExam To Hosting Mapper Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexam Id Ġ= Ġexam . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhosting Id Ġ= Ġexam . hosting Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġexam Dao . insert Exam To Hosting Mapper ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Question List ( exam . id , Ġexam . questions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġsave Question List ( exam Id : ĠString , Ġquestion List : ĠList < Question Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġquestion List . forEach Ġ{ Ġquestion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuestion Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Id Ġ= Ġquestion . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Exam Id Ġ= Ġexam Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion . question , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġquestion . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Ġ= Ġquestion . score , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderNumber Ġ= Ġquestion . order Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠupdatedAt Ġ= ĠDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġquestion Dao . insert Questions ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Answer List ( question . id , Ġquestion . answers ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġsave Answer List ( question Id : ĠString , Ġanswer List : ĠList < Answer Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġanswer List . forEach Ġ{ Ġanswer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnswer Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer Id Ġ= Ġanswer . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Question Id Ġ= Ġquestion Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer Ġ= Ġanswer . answer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderNumber Ġ= Ġanswer . order Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Correct Ġ= Ġanswer . is Correct , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠupdatedAt Ġ= ĠDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ Ġanswer Dao . insert Answers ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }