package Ġcom . term Deposit C ord app . gui . views . cord apps . term De posits Ċ Ċ import Ġcom . term Deposit C ord app . gui . views . string Converter Ċ import Ġcom . term Deposit C ord app . gui . model . Term De posits Model Ċ import Ġcom . term De posits . contract . KY C Ċ import Ġcom . term De posits . contract . Term Deposit Ċ import Ġcom . term De posits . contract . Term Deposit Offer Ċ import Ġcom . term De posits . flow . Term Deposit . KY CR et rie val Flow ID Ċ import Ġcom . term De posits . flow . Term Deposit . R ollo ver TD Ċ import Ġjavafx . beans . binding . Bindings Ċ import Ġjavafx . beans . binding . Boolean Binding Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . geometry . Insets Ċ import Ġjavafx . scene . control .* Ċ import Ġjavafx . scene . text . Font Ċ import Ġjavafx . scene . text . Font Weight Ċ import Ġjavafx . stage . Window Ċ import Ġnet . cord a . client . j fx . model .* Ċ import Ġnet . cord a . client . j fx . utils . isNotNull Ċ import Ġnet . cord a . core . contracts .* Ċ import Ġnet . cord a . core . flows . Flow Exception Ċ import Ġnet . cord a . core . messaging . start Flow Ċ import Ġnet . cord a . core . utilities . get OrThrow Ċ import Ġorg . controls fx . dialog . Exception Dialog Ċ import Ġt orn ad of x .* Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Period Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġray mon dm Ġon Ġ 1 4 / 0 8 / 2 0 1 7 . Ċ Ġ*/ Ċ Ċ class ĠR ollo ver Deposit Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġroot Ġby Ġf xml < Dialog Pane >() ĊĠĠĠ Ġ// ĠComponents ĊĠĠĠ Ġprivate Ġval Ġdeposit Choice Box Ġby Ġfx id < Choice Box < State And Ref < Term Deposit . State >> >() ĊĠĠĠ Ġprivate Ġval Ġdeposit Label Ġby Ġfx id < Label >() ĊĊĠĠĠ Ġprivate Ġval Ġoffer Choice Box Ġby Ġfx id < Choice Box < State And Ref < Term Deposit Offer . State >> >() ĊĠĠĠ Ġprivate Ġval Ġoffer Label Ġby Ġfx id < Label >() ĊĊĠĠĠ Ġprivate Ġval Ġwith Interest Choice Box Ġby Ġfx id < Choice Box < Boolean >>() ĊĠĠĠ Ġprivate Ġval Ġwith Interest Label Ġby Ġfx id < Label >() ĊĠĠĠ Ġ// ĠInject Ġdata ĊĠĠĠ Ġprivate Ġval Ġparties Ġby Ġobservable List ( Network Identity Model :: part ies ) ĊĠĠĠ Ġprivate Ġval Ġoffer States Ġby Ġobservable List ( Term De posits Model :: offer States ) ĊĠĠĠ Ġprivate Ġval Ġdeposit States Ġby Ġobservable List ( Term De posits Model :: m ature d States ) ĊĠĠĠ Ġprivate Ġval Ġrpc Proxy Ġby Ġobservable Value ( Node Monitor Model :: proxy Observable ) ĊĠĠĠ Ġprivate Ġval Ġmy Identity Ġby Ġobservable Value ( Network Identity Model :: my Identity ) ĊĠĠĠ Ġprivate Ġval Ġnot aries Ġby Ġobservable List ( Network Identity Model :: not aries ) ĊĠĠĠ Ġprivate Ġval Ġcash Ġby Ġobservable List ( Contract State Model :: cash ) ĊĠĠĠ Ġprivate Ġval Ġexecute Button Ġ= ĠButton Type (" Execute ", ĠButton Bar . Button Data . AP PLY ) ĊĊĠĠĠ Ġfun Ġshow ( window : ĠWindow ): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Transaction Dialog ( window ). show And Wait (). if Present Ġ{ Ġcommand : ĠUnit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAlert ( Alert . Alert Type . INFORMATION ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Text Ġ= Ġ" Transaction ĠStarted ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Pane . is Disable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Owner ( window ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Async Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. ui Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġwhen Ġ( command Ġis ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ" Transaction ĠFinished " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ" Transaction ĠStarted " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . alert Type Ġ= ĠAlert . Alert Type . INFORMATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dialog Pane . is Disable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dialog Pane . content Ġ= Ġgrid pane Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Ġ= ĠIn sets ( 1 0 . 0 , Ġ 4 0 . 0 , Ġ 1 0 . 0 , Ġ 2 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv gap Ġ= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh gap Ġ= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġ{ Ġlabel ( type ) Ġ{ Ġfont Ġ= ĠFont . font ( font . family , ĠFontWeight . EXTRA _ BOLD , Ġfont . size Ġ+ Ġ 2 ) Ġ} Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dialog Pane . scene . window . size To Scene () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. setOn Failed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex Ġ= Ġit . source . exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFlow Exception Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . alert Type Ġ= ĠAlert . Alert Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . content Text Ġ= Ġex . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Dialog ( ex ). apply Ġ{ Ġinit Owner ( window ) Ġ}. show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġnew Transaction Dialog ( window : ĠWindow ) Ġ= ĠDialog < Unit >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Pane Ġ= Ġroot ĊĠĠĠĠĠĠĠ Ġinit Owner ( window ) ĊĠĠĠĠĠĠĠ Ġset Result Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Button Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtd Offer Ġ= Ġoffer Choice Box . value . state . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Terms Ġ= ĠTerm Deposit . R ollo ver Terms ( td Offer . interest Percent , Ġtd Offer . institute , Ġtd Offer . duration , Ġwith Interest Choice Box . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear ID Ġ= Ġdeposit Choice Box . value . state . data . client Identifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk yc Data Ġ= Ġrpc Proxy . value ?. start Flow (:: KY CR et rie val Flow ID , Ġlinear ID ) !!. returnValue . get OrThrow (). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk yc Name Data Ġ= ĠK Y C . KY C Name Data ( ky c Data . state . data . firstName , Ġk yc Data . state . data . lastName , Ġk yc Data . state . data . account Num ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonths Diff Ġ= ĠPeriod . between ( deposit Choice Box . value . state . data . startDate . to LocalDate (), deposit Choice Box . value . state . data . endDate . to LocalDate ()). months ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyears To Months Diff Ġ= ĠPeriod . between ( deposit Choice Box . value . state . data . startDate . to LocalDate (), deposit Choice Box . value . state . data . endDate . to LocalDate ()). years Ġ* Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdifference Ġ= Ġmonths Diff Ġ+ Ġyears To Months Diff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Start Ġ${ deposit Choice Box . value . state . data . startDate . to LocalDate () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" End Ġ${ deposit Choice Box . value . state . data . endDate . to LocalDate () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Data Ġ= ĠTerm Deposit . Date Data ( LocalDateTime . MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdifference ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" GUI ĠStart Ġ${ date Data . startDate } Ġ ĠAmount Ġ${ deposit Choice Box . value . state . data . deposit Amount } ĠClient ĠRef Ġ${ linear ID } Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Duration Ġ${ date Data . duration } ĠInter est Ġ${ deposit Choice Box . value . state . data . interest Percent } Ġinst itute Ġ${ deposit Choice Box . value . state . data . institute }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Proxy . value ?. start Flow ( R ollo ver TD :: R ollo ver Init iator , Ġdate Data , Ġdeposit Choice Box . value . state . data . interest Percent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeposit Choice Box . value . state . data . institute , Ġ Ġdeposit Choice Box . value . state . data . deposit Amount , Ġnew Terms , Ġk yc Name Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDisable Ġeverything Ġwhen Ġnot Ġconnected Ġto Ġnode . ĊĠĠĠĠĠĠĠ Ġval Ġnot aries NotNull Binding Ġ= ĠBind ings . create Boolean Binding ({ Ġnot aries . isNotEmpty () Ġ}, ĠarrayOf ( not aries )) ĊĠĠĠĠĠĠĠ Ġval Ġenable Property Ġ= Ġmy Identity . isNotNull (). and ( rpc Proxy . isNotNull ()). and ( not aries NotNull Binding ) ĊĠĠĠĠĠĠĠ Ġroot . disable Property (). bind ( enable Property . not ()) ĊĊĠĠĠĠĠĠĠ Ġ// Load Ġin Ġthe Ġstates Ġthat Ġcan Ġbe Ġattempted Ġto Ġrol lover ĊĠĠĠĠĠĠĠ Ġwith Interest Label . text Ġ= Ġ" R ollo ver ĠInter est ?" ĊĠĠĠĠĠĠĠ Ġwith Interest Choice Box . items Ġ= ĠlistOf ( true , Ġfalse ). observable () ĊĠĠĠĠĠĠĠ Ġdeposit Label . text Ġ= Ġ" Active ĠDep os its " ĊĠĠĠĠĠĠĠ Ġ// ĠLo an ĠSelection ĊĠĠĠĠĠĠĠ Ġdeposit Choice Box . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġparty B Label . text Property (). bind ( transaction Type CB . value Property (). map Ġ{ Ġit ?. party Name B ?. let Ġ{ Ġ"$ it Ġ: Ġ" Ġ} Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġdeposit States ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Ġ= Ġstring Converter Ġ{ Ġ" Iss uing Ġinst itute : Ġ" Ġ+ Ġit . state . data . institute . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠInter est : Ġ"+ Ġit . state . data . interest Percent +" %" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠDep os ited ĠAmount Ġ" Ġ+ Ġit . state . data . deposit Amount . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠEnd ĠDate Ġ" Ġ+ Ġit . state . data . endDate . toString ()} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoffer Label . text Ġ= Ġ" New ĠOffer " ĊĠĠĠĠĠĠĠ Ġoffer Choice Box . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġparty B Label . text Property (). bind ( transaction Type CB . value Property (). map Ġ{ Ġit ?. party Name B ?. let Ġ{ Ġ"$ it Ġ: Ġ" Ġ} Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġoffer States ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Ġ= Ġstring Converter Ġ{ Ġ" Iss uing Ġinst itute : Ġ" Ġ+ Ġit . state . data . institute . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠInter est : Ġ"+ Ġit . state . data . interest Percent +" %" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠValid Ġtill : Ġ" Ġ+ Ġit . state . data . valid T ill . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ĠDuration Ġ( Months ) Ġ"+ it . state . data . duration . toString ()} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠValidate Ġinputs . ĊĠĠĠĠĠĠĠ Ġval Ġform Valid Condition Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// my Identity . isNotNull (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer Choice Box . value Property (). isNotNull ĊĊĠĠĠĠĠĠĠ Ġ). reduce ( Boolean Binding :: and ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnable Ġexecute Ġbutton Ġwhen Ġform Ġis Ġvalid . ĊĠĠĠĠĠĠĠ Ġroot . button Types . add ( execute Button ) ĊĠĠĠĠĠĠĠ Ġ// Use Ġcorrect Ġfor Ġvalidation ĊĠĠĠĠĠĠĠ Ġ// Add Ġvalidation Ġbased Ġon Ġtransaction Type ĊĠĠĠĠĠĠĠ Ġroot . lookup Button ( execute Button ). disable Property (). bind ( form Valid Condition . not ()) ĊĊĊĠĠĠ Ġ} Ċ } ĊĊ