package Ġcom . m aly . domain . order . dto Ċ Ċ import Ġcom . m aly . domain . order . Ticket Ċ import Ġcom . m aly . domain . room . Seat Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . LocalDateTime Ċ Ċ /** Ċ Ġ* Ġ@ author ĠAle ks ander ĠBr zo z owski Ċ Ġ*/ Ċ class ĠTicket Dto ( ĊĠĠĠĠĠĠĠ Ġval Ġse ats : ĠList < Seat >, ĊĠĠĠĠĠĠĠ Ġval Ġtotal Price : ĠBigDecimal , ĊĠĠĠĠĠĠĠ Ġval Ġevent Date : ĠLocalDateTime , ĊĠĠĠĠĠĠĠ Ġval Ġexpire Date : ĠLocalDateTime ? Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( tickets : ĠList < Ticket >): ĠTicket Dto Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġone H undred Ġ= ĠBigDecimal ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Price Ġ= Ġtickets . map Ġ{ Ġticket Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġticket . discount ?. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġticket . event . price . multiply ( BigDecimal ( 1 0 0 Ġ- Ġit )). divide ( one H undred ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġticket . event . price ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. reduce Ġ{ Ġprice 1 , Ġprice 2 Ġ-> Ġprice 1 . add ( price 2 ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTicket Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse ats Ġ= Ġtickets . map Ġ{ Ġit . seat Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Price Ġ= Ġtotal Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Date Ġ= Ġtickets [ 0 ]. event . date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpire Date Ġ= Ġtickets [ 0 ]. reservation ?. expiry Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }