package Ġuk . gov . just ice . digital . h mp ps . in cent ives api . service Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġkotlinx . coroutines . flow . filter Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . toList Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġuk . gov . just ice . digital . h mp ps . in cent ives api . jpa . repository . I ep Level Repository Ċ import Ġuk . gov . just ice . digital . h mp ps . in cent ives api . jpa . repository . I ep Pr ison Repository Ċ Ċ @ Service Ċ class ĠI ep Level Service ( ĊĠ Ġprivate Ġval Ġi ep Level Repository : ĠI ep Level Repository , ĊĠ Ġprivate Ġval Ġi ep Pr ison Repository : ĠI ep Pr ison Repository Ċ ) Ġ{ ĊĊĠ Ġ@ Transactional ( readOnly Ġ= Ġtrue ) ĊĠ Ġsuspend Ġfun Ġget I ep Levels For Pr ison ( pr ison Id : ĠString ): ĠList < I ep Level > Ġ{ ĊĠĠĠ Ġreturn Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠ Ġval Ġi ep Level Map Ġ= Ġi ep Level Repository . findAll (). toList (). associate By Ġ{ Ġit . i ep Code Ġ} ĊĊĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġi ep Pr ison Repository . findAll By Pr ison Id And Active IsTrue ( pr ison Id ) ĊĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġi ep Level Map [ it . i ep Code ] Ġ!= Ġnull Ġ&& Ġi ep Level Map [ it . i ep Code ] !!. active Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi ep Level Ġ= Ġi ep Level Map [ it . i ep Code ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI ep Level ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ep Level Ġ= Ġit . i ep Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ep Description Ġ= Ġi ep Level . i ep Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsequence Ġ= Ġi ep Level . sequence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġit . default I ep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. toList (). sorted With ( compare By ( I ep Level :: sequence )) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ