package Ġcom . y mo . data Ċ Ċ import Ġcom . y mo . data . local . db . DB Helper Ċ import Ġcom . y mo . data . model . api . Movie Item Ċ import Ġcom . y mo . data . remote . Api Helper Ċ import Ġcom . y mo . di . Network Module Ċ import Ġkotlinx . coroutines .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠData Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapi Helper : ĠApi Helper , ĊĠĠĠĠĠ Ġprivate Ġval Ġdb Helper : ĠDB Helper , ĊĠĠĠ Ġprivate Ġval Ġnetwork : ĠNetwork Module . Network Ċ ) Ġ: ĠData Repository Helper Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Up Com ing Movies (): ĠList < Movie Item ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi Helper . load Up Com ing Movies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Pop ular Movies Ġ= Ġresponse . results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Pop ular Movies ?. map Ġ{ Ġmovie Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Item ?. is Up coming Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Item ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper . add Movie Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġapi Pop ular Movies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġdb Helper . get Up coming DB Movies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Pop ular Movies (): ĠList < Movie Item ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi Helper . load Pop ular Movies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Pop ular Movies Ġ= Ġresponse . results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Pop ular Movies ?. map Ġ{ Ġmovie Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Item ?. is Pop ular Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Item ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper . add Movie Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġapi Pop ular Movies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġdb Helper . get Pop ular DB Movies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Pop ular DB Movies (): ĠList < Movie Item > Ġ= Ġdb Helper . get Pop ular DB Movies () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Up coming DB Movies (): ĠList < Movie Item > Ġ= Ġdb Helper . get Up coming DB Movies () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġadd Movie Item ( movie Item : ĠMovie Item ) Ġ= Ġdb Helper . add Movie Item ( movie Item ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete Movie Item ById ( id : ĠInt ) Ġ= Ġdb Helper . delete Movie Item ById ( id ) Ċ Ċ } Ċ