package Ġeu . w aw r zy c ze k . find fl ights . fl ights . search Ċ Ċ import Ġeu . w aw r zy c ze k . find fl ights . common . Simple DateTime Ċ import Ġeu . w aw r zy c ze k . find fl ights . fl ights . model . Flight Ċ import Ġeu . w aw r zy c ze k . find fl ights . fl ights . model . Price Ċ import Ġeu . w aw r zy c ze k . find fl ights . fl ights . search . dto . Fl ights Dto Ċ import Ġeu . w aw r zy c ze k . find fl ights . search . model . Search Data Ċ import Ġeu . w aw r zy c ze k . find fl ights . search . model . Station Ċ import Ġio . reactivex . Single Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠSearch Repository ( private Ġval Ġclient : ĠSearch Client ) Ġ{ ĊĠĠĠ Ġfun Ġget Fl ights ( search Data : ĠSearch Data ): ĠSingle < List < Flight >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠdateFormat . format ( search Data . depart ure Date . date ) ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . get Fl ights ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Data . origin . code , Ġsearch Data . destination . code , Ġdate , Ġsearch Data . ad ult s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Data . te ens , Ġsearch Data . children ĊĠĠĠĠĠĠĠ Ġ). map Ġ{ Ġconvert ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert ( fl ights Dto : ĠF lights Dto ) Ġ: ĠList < Flight > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfl ights Dto . tri ps . map Ġ{ Ġtrip Dto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Dto . dates . map Ġ{ Ġtrip Date Dto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrip Date Dto . fl ights ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . regular F are Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġflight Dto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= ĠCurrency . getInstance ( fl ights Dto . currency ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprice Map Ġ= Ġflight Dto . regular F are !!. fa res ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġit . type Ġto ĠPrice ( it . amount . multiply ( BigDecimal ( it . count )), Ġit . discount In Percent , Ġcurrency ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf are Class Ġ= Ġflight Dto . regular F are . f are Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġflight Dto . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflight Number Ġ= Ġflight Dto . flight Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinf ants Left Ġ= Ġflight Dto . inf ants Left ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Out Ġ= Ġconvert Date To Simple DateTime ( trip Date Dto . date Out ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= ĠStation ( code Ġ= Ġtrip Dto . origin , Ġname Ġ= Ġtrip Dto . origin Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination Ġ= ĠStation ( code Ġ= Ġtrip Dto . destination , Ġname Ġ= Ġtrip Dto . destination Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlight ( date Out , Ġflight Number , Ġduration , Ġprice Map , Ġcurrency , Ġorigin , Ġdestination , Ġinf ants Left , Ġf are Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatten () ĊĠĠĠĠĠĠĠ Ġ}. flatten () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Date To Simple DateTime ( date : ĠDate ) Ġ: ĠSimple DateTime Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġreturn ĠSimple DateTime ( calendar . get ( Calendar . YEAR ), Ġcalendar . get ( Calendar . MONTH ) Ġ+ Ġ 1 , Ġcalendar . get ( Calendar . DAY _ OF _ MONTH ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . get ( Calendar . HOUR _ OF _ DAY ), Ġcalendar . get ( Calendar . MINUTE )) ĊĠĠĠ Ġ} Ċ }