package Ġuk . gov . just ice . digital . h mp ps . in cent ives api . service Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . emit All Ċ import Ġkotlinx . coroutines . flow . empty Flow Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . web . reactive . function . client . Web Client Ċ import Ġorg . springframework . web . reactive . function . client . Web ClientResponse Exception . NotFound Ċ import Ġorg . springframework . web . reactive . function . client . await B od ile ss Entity Ċ import Ġorg . springframework . web . reactive . function . client . await Body Ċ import Ġorg . springframework . web . reactive . function . client . body To Flow Ċ import Ġuk . gov . just ice . digital . h mp ps . in cent ives api . dto . I ep Summary Ċ import Ġjavax . validation . constraints . NotEmpty Ċ Ċ @ Service Ċ class ĠPr ison ApiService ( private Ġval Ġpr ison Web Client : ĠWeb Client ) Ġ{ ĊĊĠ Ġsuspend Ġfun Ġfind Pr ison ers At Location ( pr ison Id : ĠString , Ġlocation Id : ĠString ): ĠFlow < Pr isoner At Location > Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / locations / description /$ location Id / in m ates ") ĊĠĠĠĠĠ Ġ. header (" Page - Limit ", Ġ" 3 0 0 0 ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. body To Flow < Pr isoner At Location >() ĊĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠNotFound ) Ġ{ Ġemit All ( empty Flow ()) Ġ} Ġelse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġfun Ġget IE PS um mary Per Pr isoner (@ NotEmpty Ġbooking Ids : ĠList < Long >): ĠFlow < I ep Summary > Ġ= ĊĠĠĠ Ġpr ison Web Client . post () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings / i ep Summary ") ĊĠĠĠĠĠ Ġ. body Value ( booking Ids ) ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. body To Flow < I ep Summary >() ĊĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠNotFound ) Ġ{ Ġemit All ( empty Flow ()) Ġ} Ġelse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġget IE PS um mary For Pr isoner ( booking Id : ĠLong , Ġwith Details : ĠBoolean ): ĠI ep Summary Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings /$ booking Id / i ep Summary ? with Details =$ with Details ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await Body () ĊĊĠ Ġsuspend Ġfun Ġretrieve Case Note Counts ( type : ĠString , Ġ@ NotEmpty Ġoff ender N os : ĠList < String >): ĠFlow < Case Note Usage > Ġ= ĊĠĠĠ Ġpr ison Web Client . post () ĊĠĠĠĠĠ Ġ. uri ("/ api / case - notes / usage ") ĊĠĠĠĠĠ Ġ. body Value ( Case Note Usage Request ( num Months Ġ= Ġ 3 , Ġoff ender N os Ġ= Ġoff ender N os , Ġtype Ġ= Ġtype , Ġsub Type Ġ= Ġnull )) ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. body To Flow < Case Note Usage >() ĊĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠNotFound ) Ġ{ Ġemit All ( empty Flow ()) Ġ} Ġelse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġretrieve Pro ven Ad jud ic ations (@ NotEmpty Ġbooking Ids : ĠList < Long >): ĠFlow < Pro ven Ad jud ication > Ġ= ĊĠĠĠ Ġpr ison Web Client . post () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings / pro ven - adj ud ic ations ") ĊĠĠĠĠĠ Ġ. body Value ( booking Ids ) ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. body To Flow < Pro ven Ad jud ication >() ĊĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠNotFound ) Ġ{ Ġemit All ( empty Flow ()) Ġ} Ġelse Ġ{ Ġthrow Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġget Location ( location Id : ĠString ): ĠPr ison Location Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / locations / code /$ location Id ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await Body () ĊĊĠ Ġsuspend Ġfun Ġadd I ep Review ( booking Id : ĠLong , Ġi ep Review : ĠI ep Review In Nom is ) Ġ= ĊĠĠĠ Ġpr ison Web Client . post () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings /$ booking Id / i ep Levels ") ĊĠĠĠĠĠ Ġ. body Value ( i ep Review ) ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await B od ile ss Entity () ĊĊĠ Ġsuspend Ġfun Ġget Pr isoner Info ( pr isoner Number : ĠString ): ĠPr isoner At Location Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings / off ender No /$ pr isoner Number ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await Body () ĊĊĠ Ġsuspend Ġfun Ġget Pr isoner Info ( booking Id : ĠLong ): ĠPr isoner At Location Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / bookings /$ booking Id ? basic Info = true ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await Body () ĊĊĠ Ġsuspend Ġfun Ġget Location ById ( location Id : ĠLong ): ĠLocation Ġ= ĊĠĠĠ Ġpr ison Web Client . get () ĊĠĠĠĠĠ Ġ. uri ("/ api / locations /$ location Id ") ĊĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠ Ġ. await Body () Ċ } Ċ