package Ġes . sit um . capacity control . data . use case Ċ Ċ import Ġes . sit um . capacity control . data . base . Result Ċ import Ġes . sit um . capacity control . data . base . UseCase Ċ import Ġes . sit um . capacity control . data . services . Get Building Service Ċ import Ġes . sit um . capacity control . data . services . Get Ge of ences Service Ċ import Ġes . sit um . capacity control . ge of ences . Ge ofence Utils Ċ import Ġes . sit um . capacity control . model . Ge ofence Wrapper Ċ import Ġes . sit um . sdk . model . car to graphy . Ge ofence Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . async Ċ Ċ class ĠGet Ge ofence Use case Ġ: ĠUse Case < Ge ofence Wrapper , ĠGet Ge ofence Use case . Params >() Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrun ( params : ĠParams ): ĠResult < Ge ofence Wrapper > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġge of ences Ġ= Ġmutable ListOf < Ge ofence >() ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresponse Ġ= ĠGet Building Service (). run Service ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Response Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . data . any Ġ{ Ġbuilding Ġ-> Ġbuilding . identifier Ġ== Ġparams . building id Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilding Ġ= Ġresponse . data . find Ġ{ Ġbuilding Ġ-> Ġbuilding . identifier Ġ== Ġparams . building id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilding ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġge ofence Job Ġ= ĠGlobal Scope . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Ge of ences Service ( it ). run Service () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġge ofence Job . await (). also Ġ{ Ġge ofence Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ge ofence Response Ġis ĠResult . Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġge of ences . addAll ( ge ofence Response . data . filter Ġ{ Ġge ofence Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġge ofence . custom Fields . containsKey ( Ge ofence Utils . CUSTOM _ FIELD _ MAX _ CAP ACITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġge ofence . custom Fields [ Ge ofence Utils . CUSTOM _ FIELD _ MAX _ CAP ACITY ]?. toInt OrNull ()?. let Ġ{ Ġit Ġ> Ġ 0 Ġ} Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Response ( Ge ofence Wrapper ( ge of ences , Ġbuilding . identifier )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĠResult . Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult . Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠParams ( internal Ġval Ġbuilding id : ĠString ) Ċ Ċ } Ċ