package Ġcom . herokuapp . music band . services Ċ Ċ import Ġcom . herokuapp . music band . data . Con cert Ċ import Ġcom . herokuapp . music band . data . Con cert Entity Ċ import Ġcom . herokuapp . music band . data . Con cert Out Ċ import Ġcom . herokuapp . music band . data . Con certs Ċ import Ġcom . herokuapp . music band . data . Groups Ċ import Ġcom . herokuapp . music band . data . Ticket Cost Ċ import Ġcom . herokuapp . music band . data . Tour Con certs Ċ import Ġcom . herokuapp . music band . data . Tour Programs Ċ import Ġorg . jetbrains . ex posed . sql . Join Type Ċ import Ġorg . jetbrains . ex posed . sql . SortOrder Ċ import Ġorg . jetbrains . ex posed . sql . alias Ċ import Ġorg . jetbrains . ex posed . sql . and Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġorg . jetbrains . ex posed . sql . selectAll Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ class ĠCon cert Service Ġ{ ĊĊĠĠĠ Ġfun ĠgetAll Con certs (): ĠIterable < Con cert > Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠCon cert Entity . all (). map ( Con cert Entity :: to Con cert ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Out Con certs (): ĠIterable < Con cert Out > Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠCon certs . join ( Tour Programs , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠCon certs . tour Program Id Ġeq ĠT our Programs . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ( Groups , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠT our Programs . groupId Ġeq ĠGroups . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( Con certs . dateTime , ĠCon certs . tickets Count , ĠCon certs . hall R ental Cost , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCon certs . ticket Cost , ĠCon certs . place , ĠT our Programs . name , ĠGroups . groupName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. selectAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠCon cert Out ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Tour Programs . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Groups . groupName ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . dateTime ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . place ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . tickets Count ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . hall R ental Cost ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . ticket Cost ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast Con cert Ticket Cost ( groupName : ĠString ): ĠIterable < Ticket Cost > Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠCon certs . join ( Tour Programs , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠCon certs . tour Program Id Ġeq ĠT our Programs . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ( Groups , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠT our Programs . groupId Ġeq ĠGroups . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( Con certs . ticket Cost , ĠCon certs . place ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĠGroups . groupName Ġeq ĠgroupName Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Con certs . dateTime , ĠSort Order . DESC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠTicket Cost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . ticket Cost ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . place ]) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast Tour Place Date ( groupName : ĠString ): ĠIterable < Tour Con certs > Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġse quel Table Ġ= ĠT our Programs . alias (" sql ") ĊĠĠĠĠĠĠĠ ĠCon certs . join ( Tour Programs , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠT our Programs . id Ġeq ĠCon certs . tour Program Id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ( Groups , ĠJoin Type . INNER , Ġadditional Constraint Ġ= Ġ{ ĠT our Programs . groupId Ġeq ĠGroups . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ( se quel Table , ĠJoin Type . LEFT , Ġadditional Constraint Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Tour Programs . groupId Ġeq Ġse quel Table [ Tour Programs . groupId ]) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Tour Programs . endDate Ġless Ġse quel Table [ Tour Programs . endDate ]) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( Con certs . place , ĠCon certs . dateTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ Ġ( se quel Table [ Tour Programs . endDate ]. isNull ()) Ġand Ġ( Groups . groupName Ġeq ĠgroupName ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠT our Con certs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . place ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Con certs . dateTime ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Con cert ( con cert : ĠCon cert ) Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠCon cert Entity . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tour Program Id Ġ= Ġcon cert . tour Program Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . dateTime Ġ= Ġcon cert . dateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . place Ġ= Ġcon cert . place ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tickets Count Ġ= Ġcon cert . tickets Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . hall R ental Cost Ġ= Ġcon cert . hall R ental Cost ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ticket Cost Ġ= Ġcon cert . ticket Cost ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Con cert ( con cert Id : ĠInt ) Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠCon cert Entity [ con cert Id ]. delete () ĊĠĠĠ Ġ} Ċ } Ċ