package Ġca . sn mc . scanner Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġca . sn mc . scanner . data . db . entities . Selected Event Entity Ċ import Ġca . sn mc . scanner . data . providers . Preference Provider Ċ import Ġca . sn mc . scanner . data . repositories . Back End Repository Ċ import Ġca . sn mc . scanner . data . repositories . Device IO Repository Ċ import Ġca . sn mc . scanner . models . EventData Ċ Ċ class ĠMain ViewModel ( ĊĠĠĠ Ġapplication : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġback End Repository : ĠBack End Repository , ĊĠĠĠ Ġprivate Ġval Ġdevice IO Repository : ĠDevice IO Repository , ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠPreference Provider Ċ ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġvar Ġevent Data Ġ: ĠMutable LiveData < EventData > Ġ= ĠMutable LiveData ( EventData ()) ĊĊĠĠĠ Ġvar Ġvisit LogFile Log Count Ġ= ĠMutable LiveData < Int >( 0 ) ĊĊĠĠĠ Ġfun Ġget Scanner Mode (): ĠInt Ġ= Ġprefs . read Scanner Mode () ĊĊĠĠĠ Ġfun Ġcheck If Visit LogFile Exists () Ġ= Ġdevice IO Repository . check If File Exists () ĊĊĠĠĠ Ġfun Ġget Visit LogFile Logs Count () Ġ= Ġdevice IO Repository . getLog Count Observable () ĊĊĠĠĠ Ġfun Ġget Selected Event () Ġ= Ġback End Repository . getSelected Event () ĊĊĠĠĠ Ġfun Ġget Event ById ( eventId : ĠInt ) Ġ= Ġback End Repository . getEvent ById ( eventId ) ĊĊĠĠĠ Ġfun Ġget Selected Event Live Attendance ( eventId : ĠInt ) Ġ= Ġback End Repository . getEvent Live Attendance ( eventId ) ĊĊĠĠĠ Ġfun Ġupdate EventData ( selected Event Entity : ĠSelected Event Entity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Event Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Event Entity . eventId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Entity Ġ= Ġback End Repository . getEvent ById ( selected Event Entity . eventId !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġline Ġis Ġincluded Ġto Ġhandle Ġan Ġexception Ġthat Ġkeeps Ġar ising ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Entity ?. id Ġ!= Ġnull Ġ&& Ġevent Entity . id Ġ!= Ġnull Ġ&& Ġevent Entity . name Ġ!= Ġnull Ġ&& Ġevent Entity . capacity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġevent Entity . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠeventName Ġ= Ġevent Entity . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Capacity Ġ= Ġevent Entity . capacity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Attendance Ġ= Ġback End Repository . getEvent Attendance ( eventId Ġ= Ġevent Entity . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠeventName Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Capacity Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Attendance Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠeventName Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Capacity Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Attendance Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Event Attendance () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event Data . value Ġ!= Ġnull Ġ&& Ġevent Data . value !!. eventId Ġ!= Ġnull Ġ&& Ġevent Data . value !!. eventName Ġ!= Ġnull Ġ&& Ġevent Data . value !!. event Capacity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġevent Data . value !!. eventId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠeventName Ġ= Ġevent Data . value !!. eventName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Capacity Ġ= Ġevent Data . value !!. event Capacity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Attendance Ġ= Ġback End Repository . getEvent Attendance ( eventId Ġ= Ġevent Data . value !!. eventId !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }