package Ġcom . j rk . mood 4 food . water balance . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . j rk . mood 4 food . App Ċ import Ġcom . j rk . mood 4 food . model . localStorage . LocalStorage Ċ import Ġcom . j rk . mood 4 food . model . localStorage . LocalStorage Interface Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠWater Repository ( localStorage : ĠLocal Storage Interface ) Ġ{ ĊĠĠĠ Ġvar ĠlocalStorage Ġ= ĠlocalStorage ĊĠĠĠ Ġfun Ġstore Water Balance ( water Balance : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠContext Ġ= ĠApp . getContext () ĊĠĠĠĠĠĠĠ Ġval Ġwater Entity Ġ= Ġget Entity From Date ( convert Date To Formatted String ( Calendar . getInstance (). time )) ĊĠĠĠĠĠĠĠ Ġwater Entity . water Balance Ġ+= Ġwater Balance ĊĠĠĠĠĠĠĠ ĠLocal Storage . save ( context , Ġwater Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Water Entity ( current Date : ĠString , Ġwater Balance : ĠFloat ): ĠWater Balance Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠContext Ġ= ĠApp . getContext () ĊĠĠĠĠĠĠĠ Ġval Ġwater Entity Ġ= ĠWater Balance Entity ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġcal : ĠCalendar Ġ= Ġget Cal ender From Date ( current Date ) ĊĠĠĠĠĠĠĠ Ġwater Entity . water Balance Ġ= Ġwater Balance ĊĠĠĠĠĠĠĠ Ġwater Entity . current Date Ġ= Ġcurrent Date ĊĠĠĠĠĠĠĠ Ġwater Entity . cal ender Week Ġ= Ġget Cal ender Week From Date ( cal ) ĊĠĠĠĠĠĠĠ Ġwater Entity . day OfWeek Ġ= Ġget DayOfWeek ( cal ) ĊĠĠĠĠĠĠĠ ĠlocalStorage . save ( context , Ġwater Entity ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwater Entity ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cal ender From Date ( current Date : ĠString ): ĠCalendar Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= Ġ" dd . MM . yyyy " ĊĊĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠSimpleDateFormat ( format ) ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġdf . parse ( current Date ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcal . time Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġreturn Ġcal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget DayOfWeek ( cal : ĠCalendar ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcal [ Calendar . DAY _ OF _ WEEK ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cal ender Week From Date ( cal : ĠCalendar ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcal [ Calendar . WEEK _ OF _ YEAR ] ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠgetCurrent Water Balance Percentage (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġget Entity From Date ( convert Date To Formatted String ( Calendar . getInstance (). time )) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( entity . water Balance Ġ* Ġ 1 0 0 Ġ/ Ġget Water Level ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Water Balance Ab solut (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġget Entity From Date ( convert Date To Formatted String ( Calendar . getInstance (). time )) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( entity . water Balance ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Date To Formatted String ( date : ĠDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat (" dd . MM . yyyy ") ĊĠĠĠĠĠĠĠ Ġreturn Ġformatter . format ( date ). toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġformatter . format ( date ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Water Entity From Week OfYear ( Cal ender week : ĠInt ): ĠList < Water Balance Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentities Ġ= ĠlocalStorage . getAll ( App . getContext (), ĠWater Balance Entity :: class . java ) Ġas ĠList < Water Balance Entity > ĊĠĠĠĠĠĠĠ Ġvar Ġentities From Week : ĠMutable List < Water Balance Entity > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġd Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 ). to Mutable List () ĊĠĠĠĠĠĠĠ Ġentities . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . cal ender Week Ġ== ĠCal ender week ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentities From Week . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . remove ( it . day OfWeek ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwater Entity Ġ= ĠWater Balance Entity ( App . getContext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwater Entity . day OfWeek Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwater Entity . water Balance Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentities From Week . add ( water Entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġentities From Week Sorted Ġ= Ġentities From Week . sorted By Ġ{ Ġit . day OfWeek Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġentities From Week Sorted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entity . water Balance Ġ>= Ġget Water Level ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity . is Reached Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġentities From Week Sorted ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Water Level Reached ( date : ĠDate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Entity From Date ( convert Date To Formatted String ( date )). water Balance Ġ>= Ġget Water Level () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Entity From Date ( date : ĠString ): ĠWater Balance Entity Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġentities Ġ= ĠlocalStorage . getAll ( App . getContext (), ĠWater Balance Entity :: class . java ) Ġas ĠList < Water Balance Entity > ĊĠĠĠĠĠĠĠ Ġentities . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . current Date Ġ== Ġdate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Water Entity ( date , Ġ 0 . 0 F ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Water Level (): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġentities Ġ= ĠlocalStorage . getAll ( App . getContext (), ĠSettings Entity :: class . java ) Ġas ĠList < Settings Entity > ĊĠĠĠĠĠĠĠ Ġreturn Ġentities [ 0 ]. water Per Day ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Water balance () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwater Entity Ġ= Ġget Entity From Date ( convert Date To Formatted String ( Calendar . getInstance (). time )) ĊĠĠĠĠĠĠĠ Ġwater Entity . water Balance Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ ĠlocalStorage . save ( App . getContext (), Ġwater Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfirst Start () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Entity From Date ( convert Date To Formatted String ( Calendar . getInstance (). time )) ĊĠĠĠ Ġ} ĊĊ Ċ }