package Ġcom . money budget . operations . movement Ċ Ċ import Ġcom . money budget . database . Movement Ċ import Ġcom . money budget . repository . Repository Ċ import Ġcom . money budget . utils . Date Utils Ċ import Ġcom . money budget . utils . date To Long Ċ import Ġcom . money budget . utils . view Models . Element ViewModel Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ Ċ class ĠMovement ViewModel : ĠElement ViewModel < Movement >() Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġrepository DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRepository . mov ements DataSource ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ movement Date Ġ= ĠMutable State Flow ( Date Utils . get Today Date (). time ) ĊĠĠĠ Ġval Ġmovement Date : ĠState Flow < Long ?> Ġ= Ġ_ movement Date ĊĊĠĠĠ Ġprivate Ġval Ġ_ amount Ġ= ĠMutable State Flow ("") ĊĠĠĠ Ġval Ġamount : ĠState Flow < String > Ġ= Ġ_ amount ĊĊĠĠĠ Ġprivate Ġval Ġ_ source AccountId Ġ= ĠMutable State Flow < Long ? >( null ) ĊĠĠĠ Ġval Ġsource AccountId : ĠState Flow < Long ?> Ġ= Ġ_ source AccountId ĊĊĠĠĠ Ġprivate Ġval Ġ_ destination AccountId Ġ= ĠMutable State Flow < Long ? >( null ) ĊĠĠĠ Ġval Ġdestination AccountId : ĠState Flow < Long ?> Ġ= Ġ_ destination AccountId ĊĊĠĠĠ Ġprivate Ġval Ġ_ description Ġ= ĠMutable State Flow < String ? >( null ) ĊĠĠĠ Ġval Ġdescription : ĠState Flow < String ?> Ġ= Ġ_ description ĊĊĠĠĠ Ġfun Ġon Movement Date Change ( movement Date : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ movement Date . value Ġ= Ġmovement Date . date To Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Amount Change ( amount : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ amount . value Ġ= Ġamount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Description Change ( description : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ description . value Ġ= Ġdescription ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Source AccountId Change ( accountId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ source AccountId . value Ġ= ĠaccountId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Destination AccountId Change ( accountId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ destination AccountId . value Ġ= ĠaccountId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinitialize ( input Object : ĠMovement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ movement Date . value Ġ= Ġinput Object . movement Date ĊĠĠĠĠĠĠĠ Ġ_ amount . value Ġ= Ġinput Object . amount . toString () ĊĠĠĠĠĠĠĠ Ġ_ source AccountId . value Ġ= Ġinput Object . source AccountId ĊĠĠĠĠĠĠĠ Ġ_ destination AccountId . value Ġ= Ġinput Object . destination AccountId ĊĠĠĠĠĠĠĠ Ġ_ description . value Ġ= Ġinput Object . description ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠMovement Ġ= ĠMovement ( ĊĠĠĠĠĠĠĠ Ġ_ movement Date . value , ĊĠĠĠĠĠĠĠ Ġ_ amount . value . toFloat (), ĊĠĠĠĠĠĠĠ Ġsource AccountId . value , ĊĠĠĠĠĠĠĠ Ġ_ destination AccountId . value , ĊĠĠĠĠĠĠĠ Ġ_ description . value ? :" ", ĊĠĠĠĠĠĠĠ Ġmovement Id Ġ= Ġcurrent Id . value Ġ?: Ġ 0 L ĊĠĠĠ Ġ) Ċ }