package Ġcom . to g gl . timer . extensions Ċ Ċ import Ġcom . to g gl . models . domain . Project Ċ import Ġcom . to g gl . models . domain . Time Entry Ċ import Ġcom . to g gl . timer . log . domain . Flat Time Entry Item Ċ import Ġcom . to g gl . timer . log . domain . Project ViewModel Ċ Ċ fun ĠList < Time Entry >. find Entry With Id ( id : ĠLong ): ĠTime Entry ? Ġ= ĊĠĠĠ Ġfirst OrNull Ġ{ Ġit . id Ġ== Ġid Ġ} Ċ Ċ fun ĠList < Time Entry >. replace Time Entry With Id ( id : ĠLong , Ġtime Entry To Replace : ĠTime Entry ) Ġ= ĊĠĠĠ Ġmap Ġ{ Ġif Ġ( it . id Ġ== Ġid ) Ġtime Entry To Replace Ġelse Ġit Ġ} Ċ Ċ fun ĠList < Time Entry >. running Time Entry OrNull () Ġ= ĊĠĠĠ Ġfirst OrNull Ġ{ Ġit . duration Ġ== Ġnull Ġ} Ċ Ċ fun ĠList < Time Entry >. to Time Entry ViewModel List ( projects : ĠMap < Long , ĠProject >) Ġ= ĊĠĠĠ Ġfilter Ġ{ Ġit . duration Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġtime Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠprojectId Ġ= Ġtime Entry . projectId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( projectId Ġ== Ġnull ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġprojects [ projectId ]?. run Ġ{ ĠProject ViewModel ( id , Ġname , Ġcolor ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Time Entry Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġtime Entry . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġtime Entry . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġtime Entry . startTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġtime Entry . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbill able Ġ= Ġtime Entry . bill able ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ċ