package Ġar . edu . un q . m ient rad ita . service Ċ Ċ import Ġar . edu . un q . m ient rad ita . model . exception . format Ċ import Ġar . edu . un q . m ient rad ita . model . user . Spect ator Ċ import Ġar . edu . un q . m ient rad ita . persistence . match . Mail And Match Ċ import Ġar . edu . un q . m ient rad ita . service . dto . Match DTO Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . data . redis . connection . Message Ċ import Ġorg . springframework . data . redis . connection . Message Listener Ċ import Ġorg . springframework . mail . jav am ail . Java Mail Sender Ċ import Ġorg . springframework . mail . jav am ail . Mime Message Helper Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . time . LocalDateTime Ċ import Ġjavax . mail . Messaging Exception ĊĊ Ċ @ Service Ċ class ĠMail Sender Service Ġ: ĠMessage Listener Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġjava Mail Sender : ĠJava Mail Sender ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġspect ator Service : ĠSpect ator Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmatch Service : ĠMatch Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠobjectMapper : ĠObjectMapper ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Message ( message : ĠMessage , Ġpattern : ĠByteArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify To F ans From ( get Match From ( message )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Rem ind sTo Users From ( dateTime : ĠLocalDateTime ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmatch Service . remember Of ( dateTime ). forEach Ġ{ Ġmail And Match Ġ-> Ġsend Reminder ( mail And Match ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify To F ans From ( match DTO : ĠMatch DTO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġspect ator Service . f ans From ( match DTO . id ). forEach Ġ{ Ġnotify To Fan ( it , Ġmatch DTO ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Reminder ( mail And Match : ĠMail And Match ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġmail And Match . match ĊĠĠĠĠĠĠĠ Ġsend Mail ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmail And Match . mail , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Record atorio ] Ġ$ match , Ġ${ format ( match . match StartTime )} ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< html > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< body > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĠEst im ado ,</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĠEste Ġcorre o Ġes Ġun Ġrecord atorio Ġdel Ġenc uent ro Ġque Ġse Ġva Ġa ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis put ar Ġel Ġ< strong >${ format ( match . match StartTime )}, Ġ${ hour ( match . match StartTime )}</ strong >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġen Ġel Ġcual Ġ usted Ġtiene Ġuna Ġentrada Ġre serv ada .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > Rec uer de Ġl le var Ġel ĠQR Ġde Ġla Ġentrada Ġque Ġse Ġgener a Ġen Ġnue stra Ġaplic acion Ġpara Ġpoder ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġing res ar Ġal Ġenc uent ro .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > E sper amos Ġque Ġdis fr ute Ġdel Ġpart ido .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > Sal ud os .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ body > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ html > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify To Fan ( spect ator : ĠSpect ator , Ġmatch DTO : ĠMatch DTO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Mail ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspect ator . email , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Â ¡ Entr adas Ġpara Ġun Ġnuevo Ġpart ido Ġya Ġdispon ibles !", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< html > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< body > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĠH ola Ġ${ spect ator . username }, </ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > ĠTen emos Ġel Ġa gr ado Ġde Ġcom unic ar le Ġque Ġya Ġse Ġenc uent ran Ġdispon ibles Ġlas Ġent rad as Ġpara Ġun Ġnuevo Ġpart ido Ġde Ġtu Ġequip o Ġfavor ito .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div >${ show Conditions ( spect ator , Ġmatch DTO )}</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > El Ġenc uent ro Ġse Ġdis put arÃ¡ Ġel Ġ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< strong >${ format ( match DTO . match StartTime )}, Ġ${ hour ( match DTO . match StartTime )}</ strong >. ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< div > Sal ud os .</ div > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ body > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ html > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Mail ( to : ĠString , Ġsubject : ĠString , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmail Message Ġ= Ġjava Mail Sender . create Mime Message () ĊĠĠĠĠĠĠĠ Ġval Ġhelper : ĠMime Message Helper ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper Ġ= ĠMime Message Helper ( mail Message , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . set To ( to ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . set Subject ( subject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . setText ( text , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Mail Sender . send ( mail Message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMessaging Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Match From ( message : ĠMessage ): ĠMatch DTO Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Match DTO : ĠString Ġ= Ġmessage . body . decode ToString (). substring ( 7 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( json Match DTO , ĠMatch DTO :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Conditions ( spect ator : ĠSpect ator , Ġmatch DTO : ĠMatch DTO ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( spect ator . fav our ite Team !!. name Ġ== Ġmatch DTO . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ match DTO . home } Ġj ugar Ã¡ Ġen Ġcon dic iÃ³n Ġde ĠLOCAL Ġcon tra Ġ${ match DTO . away }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ match DTO . away } Ġj ugar Ã¡ Ġen Ġcon dic iÃ³n Ġde ĠVIS IT AN TE Ġcon tra Ġ${ match DTO . home }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhour ( match StartTime : ĠLocalDateTime ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġminute Ġ= Ġif Ġ( match StartTime . minute Ġ> 9 Ġ|| Ġmatch StartTime . minute Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 " Ġ+ Ġmatch StartTime . minute ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch StartTime . minute ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ match StartTime . hour }:${ minute } Hs " ĊĠĠĠ Ġ} Ċ }