package Ġcom . j cs . su ade ome . prof ession als Ċ Ċ import Ġcom . j cs . su ade ome . services . Service Ċ import Ġcom . j cs . su ade ome . types . Id Ċ import Ġorg . sk ife . j db i . v 2 . Handle Ċ import Ġjava . util .* Ċ Ċ class ĠProfessional Repository ( val Ġopen Handle : ĠHandle ) Ġ{ ĊĊĠĠĠ Ġfun Ġprof ession als By Service ( services : ĠList < Service >): ĠList < Prof essional > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( services . isEmpty ()) Ġreturn ĠCollections . emptyList () ĊĊĠĠĠĠĠĠĠ Ġval Ġplace Hold ers Ġ= Ġservices . map Indexed Ġ{ Ġi , Ġservice Ġ-> Ġ": id $ i " Ġ}. join ToString (",") ĊĠĠĠĠĠĠĠ Ġval Ġwhere Clause Ġ= Ġif Ġ( place Hold ers . isBlank ()) Ġ"" Ġelse Ġ" WHERE Ġservice _ id ĠIN Ġ( Ġ$ place Hold ers Ġ)" ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġopen Handle . createQuery (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġid , Ġname , Ġphone , Ġservice _ id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġprof ession als ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ where Clause ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠORDER ĠBY Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ") ĊĊĠĠĠĠĠĠĠ Ġservices . forEach Indexed Ġ{ Ġi , Ġservice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery . bind (" id $ i ", Ġservice . id . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġquery . list () ĊĊĠĠĠĠĠĠĠ Ġval Ġprof ession als Ġ= Ġrows . map Ġ{ Ġrow To Prof essional ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprof ession als ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrow To Prof essional ( row : ĠMap < String , ĠAny >): ĠProfessional Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠId ( row [" id "]. toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġrow [" name "]. toString () ĊĠĠĠĠĠĠĠ Ġval Ġphone Ġ= ĠPhone Number ( row [" phone "]. toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġservice Id Ġ= ĠId ( row [" service _ id "]. toString ()) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠProfessional ( id , Ġname , Ġphone , Ġservice Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Prof essional ( prof essional : ĠProfessional ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġprof ession als Ġ( id , Ġname , Ġphone , Ġservice _ id , Ġcreated _ by , Ġcreated _ at ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVALUES Ġ(: id , Ġ: name , Ġ: phone , Ġ: service Id , Ġ: user , Ġ: now ) ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ Ġopen Handle . createStatement ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" id ", Ġprofessional . id . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" name ", Ġprofessional . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" phone ", Ġprofessional . phone . number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" service Id ", Ġprofessional . service Id . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" user ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind (" now ", ĠDate ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ