package Ġorg . simple . clin ic . patient Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . room . Dao Ċ import Ġandroidx . room . Entity Ċ import Ġandroidx . room . PrimaryKey Ċ import Ġandroidx . room . Query Ċ import Ġio . reactivex . Flow able Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ import Ġorg . simple . clin ic . patient . sync . Patient Address Payload Ċ import Ġorg . simple . clin ic . storage . Dao With Up sert Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ Ċ @ Entity Ċ @ Parcel ize Ċ data Ġclass ĠPatient Address ( ĊĠĠĠ Ġ@ PrimaryKey ĊĠĠĠ Ġval Ġuuid : ĠUUID , ĊĊĠĠĠ Ġval Ġstreet Address : ĠString ?, ĊĊĠĠĠ Ġval Ġcol ony Or V illage : ĠString ?, ĊĊĠĠĠ Ġval Ġzone : ĠString ?, ĊĊĠĠĠ Ġval Ġdistrict : ĠString , ĊĊĠĠĠ Ġval Ġstate : ĠString , ĊĊĠĠĠ Ġval Ġcountry : ĠString ?, ĊĊĠĠĠ Ġval ĠcreatedAt : ĠInstant , ĊĊĠĠĠ Ġval ĠupdatedAt : ĠInstant , ĊĊĠĠĠ Ġval Ġdeleted At : ĠInstant ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠ Ġval Ġcomplete Address : ĠString ĊĠĠĠ Ġget () Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġstreet Address , ĊĠĠĠĠĠĠĠ Ġcol ony Or V illage , ĊĠĠĠĠĠĠĠ Ġdistrict , ĊĠĠĠĠĠĠĠ Ġstate , ĊĠĠĠĠĠĠĠ Ġzone ĊĠĠĠ Ġ). filter Not Ġ{ Ġit . isNull Or Blank () Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString () ĊĊĠ Ġfun Ġwith Local ity ( ĊĠĠĠĠĠ Ġcol ony Or V illage : ĠString , ĊĠĠĠĠĠ Ġdistrict : ĠString , ĊĠĠĠĠĠ Ġstate : ĠString , ĊĠĠĠĠĠ Ġzone : ĠString ?, ĊĠĠĠĠĠ Ġstreet Address : ĠString ? ĊĠ Ġ): ĠPatient Address Ġ= ĊĠĠĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠĠĠ Ġcol ony Or V illage Ġ= Ġcol ony Or V illage , ĊĠĠĠĠĠĠĠĠĠ Ġdistrict Ġ= Ġdistrict , ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠ Ġzone Ġ= Ġzone , ĊĠĠĠĠĠĠĠĠĠ Ġstreet Address Ġ= Ġstreet Address ĊĠĠĠĠĠ Ġ) ĊĊĠ Ġfun Ġto Payload (): ĠPatient Address Payload Ġ{ ĊĠĠĠ Ġreturn ĠPatient Address Payload ( ĊĠĠĠĠĠĠĠ Ġuuid Ġ= Ġuuid , ĊĠĠĠĠĠĠĠ Ġstreet Address Ġ= Ġstreet Address , ĊĠĠĠĠĠĠĠ Ġcol ony Or V illage Ġ= Ġcol ony Or V illage , ĊĠĠĠĠĠĠĠ Ġdistrict Ġ= Ġdistrict , ĊĠĠĠĠĠĠĠ Ġzone Ġ= Ġzone , ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠ Ġcountry Ġ= Ġcountry , ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠcreatedAt , ĊĠĠĠĠĠĠĠ ĠupdatedAt Ġ= ĠupdatedAt , ĊĠĠĠĠĠĠĠ Ġdeleted At Ġ= Ġdeleted At ) ĊĠ Ġ} ĊĊĠ Ġ@ Dao ĊĠ Ġabstract Ġclass ĠRoom Dao Ġ: ĠDao With Up sert < Patient Address >() Ġ{ ĊĊĠĠĠ Ġfun Ġsave ( address : ĠPatient Address ) Ġ{ ĊĠĠĠĠĠ Ġsave ( listOf ( address )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( addresses : ĠList < Patient Address >) Ġ{ ĊĠĠĠĠĠ Ġupsert ( addresses ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġpatient address ĠWHERE Ġuuid Ġ= Ġ: uuid ") ĊĠĠĠ Ġabstract Ġfun Ġget One ( uuid : ĠUUID ): ĠPatient Address ? ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġpatient address ĠWHERE Ġuuid Ġ= Ġ: uuid ") ĊĠĠĠ Ġabstract Ġfun Ġaddress ( uuid : ĠUUID ): ĠFlow able < List < Patient Address >> ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġpatient address ") ĊĠĠĠ Ġabstract Ġfun Ġclear () ĊĊĠĠĠ Ġ@ Query (" SELECT ĠCOUNT ( uuid ) ĠFROM ĠPatient Address ") ĊĠĠĠ Ġabstract Ġfun Ġcount (): ĠInt ĊĊĠĠĠ Ġ@ Query (" SELECT ĠDISTINCT Ġcol ony Or V illage ĠFROM ĠPatient Address ĠWHERE Ġcol ony Or V illage ĠIS ĠNOT ĠNULL ĠORDER ĠBY Ġcol ony Or V illage ĠASC ") ĊĠĠĠ Ġabstract Ġfun Ġget Col ony Or V ill ages (): ĠList < String > ĊĠ Ġ} Ċ } Ċ