package Ġcom . flex so . flex same . ui . company Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . flex so . flex same . models . Address Ċ import Ġcom . flex so . flex same . models . Company Ċ import Ġcom . flex so . flex same . models . Office Ċ import Ġcom . flex so . flex same . repos . Company Repository Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Supervisor Job Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠCompany ViewModel ( private Ġval Ġcompany Repository : ĠCompany Repository ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġ// coroutines ĊĠĠĠ Ġprivate Ġval ĠviewModel Job Ġ= ĠSuper visor Job () ĊĠĠĠ Ġprivate Ġval ĠviewModel Scope Ġ= ĠCor outine Scope ( viewModel Job Ġ+ ĠDispatch ers . Main ) ĊĊĠĠĠ Ġlateinit Ġvar Ġcompany : ĠCompany ĊĊĠĠĠ Ġ// company _ users ĊĠĠĠ Ġprivate Ġvar Ġ_ off ices : ĠMutable LiveData < List < Office >> Ġ= Ġcompany Repository . off ices ĊĠĠĠ Ġval Ġoff ices : ĠLive Data < List < Office >> Ġget () Ġ= Ġ_ off ices ĊĊĠĠĠ Ġ// add _ suc ces ĊĠĠĠ Ġprivate Ġval Ġ_ add Suc ces Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġadd Suc ces : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ add Suc ces ĊĊĠĠĠ Ġ// remove _ suc ces ĊĠĠĠ Ġprivate Ġval Ġ_ remove Suc ces Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġremove Suc ces : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ remove Suc ces ĊĊĠĠĠ Ġ// edit _ suc ces ĊĠĠĠ Ġprivate Ġval Ġ_ edit Suc ces Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġedit Suc ces : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ edit Suc ces ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ ĠviewModel Job . cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetCurrent Company ( company : ĠCompany ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . company Ġ= Ġcompany ĊĠĠĠĠĠĠĠ Ġget Off ices () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Off ices () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompany Repository . get Off ices ( company . company Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ off ices Ġ= Ġcompany Repository . off ices ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Office ( office Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ remove Suc ces . post Value ( company Repository . remove Office ( company . company Id , Ġoffice Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Off ices () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Office ( a : ĠAddress ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ add Suc ces . post Value ( company Repository . add Office ( company . company Id , Ġa )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Off ices () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit Company Name ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhelper Ġ= ĠCompany ( company . company Id , Ġs ) ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( company Repository . update Company ( helper )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ edit Suc ces . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompany . name Ġ= Ġs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ edit Suc ces . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ