package Ġcom . example . tab l ere gistration . activity Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroid . widget . Adapter View . On ItemSelected Listener Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . example . tab l ere gistration . R Ċ import Ġcom . example . tab l ere gistration . model . Table ViewModel ĊĊ Ċ class ĠAdd Customer Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtable ViewModel : ĠTable ViewModel ĊĠĠĠ Ġprivate Ġval ĠCHAN NEL _ ID Ġ= Ġ" com . example . tab l ere gistration " ĊĠĠĠ Ġprivate Ġval ĠNOT IFICATION _ ID Ġ= Ġ 1 2 3 4 5 ĊĊĠĠĠ Ġprivate Ġval Ġactivity Title Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < TextView >( R . id . activity _ title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtable Spinner Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < Spinner >( R . id . tables _ spinner ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadd Customer Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . add _ customer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcustomer Name Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < EditText >( R . id . customer _ name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ add _ customer ) ĊĊĠĠĠĠĠĠĠ Ġtable ViewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠViewModel Provider . Android ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). get ( Table ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġtable ViewModel . tables . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( this , ĠR . layout . support _ simple _ spinner _ dropdown _ item , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set DropDown View Resource ( R . layout . support _ simple _ spinner _ dropdown _ item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Spinner . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtable Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠOn ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠAdapter View <* >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Id : ĠInt Ġ= Ġ 1 Ġ+ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable ViewModel . setSelected Table ( table Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Table Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable ViewModel . setSelected Table ( default Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Customer . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustomer Name Ġ= Ġcustomer Name . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( table ViewModel . is Table Full ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Table Ġis Ġfully Ġoccupied ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" Five Ġcustomers Ġare Ġallowed Ġper Ġtable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" OK ") Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . dismiss () Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable ViewModel . save Customer ( customer Name Ġ= Ġcustomer Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ"$ customer Name Ġhas Ġbeen Ġadded Ġto Ġtable ", Toast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Notification Channel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Notification ( customer Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġactivity Title . text Ġ= ĠgetString ( R . string . add _ customer ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Notification ( customer Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent : ĠPending Intent Ġ= ĠPending Intent . getActivity ( this , Ġ 0 , Ġintent , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( this , ĠCHAN NEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ launcher _ foreground ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" New ĠCustomer ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ("$ customer Name Ġhas Ġbeen Ġadded Ġto Ġtable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġintent Ġthat Ġwill Ġfire Ġwhen Ġthe Ġuser Ġt aps Ġthe Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĊĠĠĠĠĠĠĠ Ġwith ( Notification Manager Compat . from ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotification Id Ġis Ġa Ġunique Ġint Ġfor Ġeach Ġnotification Ġthat Ġyou Ġmust Ġdefine ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify ( NOTIFICATION _ ID , Ġbuilder . build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠNotification Channel , Ġbut Ġonly Ġon ĠAPI Ġ 2 6 + Ġbecause ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠNotification Channel Ġclass Ġis Ġnew Ġand Ġnot Ġin Ġthe Ġsupport Ġlibrary ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" Table ĠRegistration " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Text Ġ= Ġ" Table ĠRegistration ĠNotification " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( CHANNEL _ ID , Ġname , Ġimportance ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRegister Ġthe Ġchannel Ġwith Ġthe Ġsystem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager : ĠNotification Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }