package Ġcom . example . test gradle . ui . fragment Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġcom . example . test gradle . databinding . Fragment Add Update Binding Ċ import Ġcom . example . test gradle . models . Employee Ċ import Ġcom . example . test gradle . viewModel . Employee ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġandroid . widget . Array Adapter Ċ import Ġcom . example . test gradle . util . Enum Employee Assignment Ċ import Ġcom . example . test gradle . util . Utility Ċ import Ġjava . util .* ĊĊ Ċ @ Android EntryPoint Ċ class ĠAdd Update Fragment Ġ: ĠFragment () Ġ{ ĊĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠFragment Add Update Binding ĊĠĠĠ Ġval Ġemployee ViewModel : ĠEmployee ViewModel Ġby Ġactivity ViewModels () ĊĠĠĠĠ Ġvar Ġemployee : ĠEmployee ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠ Ġbinding Ġ= Ġ ĠFragment Add Update Binding . inflate ( layout Inflater , container , false ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġobserve Data () ĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġobserve Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġemployee ViewModel . selected Item . observe ( require Activity (), Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ observe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Data () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ dropdown _ item _ 1 line , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Employee Assignment . values () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . et Date . setText ( Utility . getCurrent Date ()) ĊĠĠĠĠĠĠĠ Ġbinding . et Assignment . setAdapter ( adapter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġc . get ( Calendar . YEAR ) ĊĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġc . get ( Calendar . MONTH ) ĊĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġc . get ( Calendar . DAY _ OF _ MONTH ) ĊĊĠĠĠĠĠĠĠ Ġbinding . et Date . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd pd Ġ= ĠDate Picker Dialog ( require Context (), Ġ{ Ġ_, Ġyear , Ġ_, Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay ĠSelected Ġdate Ġin ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Date . setText ("$ day OfMonth -${ month Ġ+ Ġ 1 }- $ year ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġyear , Ġmonth , Ġday ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd pd . show () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . et Assignment . setOnClickListener Ġ{ Ġbinding . et Assignment . show DropDown () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Submit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! validate Data ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshould Insert Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( employee Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee Ġ= ĠEmployee () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Insert Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee Ġ= ĠEmployee ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee !!. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Name . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Email . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Phone . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Age . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Department . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Assignment . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Salary . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Date . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Address . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Insert ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee ViewModel . insert ( employee !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemployee ViewModel . update ( employee !! ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġpopulate Data (){ ĊĠĠĠĠĠĠĠ Ġbinding . et Name . setText ( employee !!. name ) ĊĠĠĠĠĠĠĠ Ġbinding . et Email . setText ( employee !!. email ) ĊĠĠĠĠĠĠĠ Ġbinding . et Age . setText ( employee !!. age ) ĊĠĠĠĠĠĠĠ Ġbinding . et Department . setText ( employee !!. department ) ĊĠĠĠĠĠĠĠ Ġbinding . et Salary . setText ( employee !!. salary ) ĊĠĠĠĠĠĠĠ Ġbinding . et Assignment . setText ( employee !!. assignment ) ĊĠĠĠĠĠĠĠ Ġbinding . et Date . setText ( employee !!. date Of Employ ment ) ĊĠĠĠĠĠĠĠ Ġbinding . et Address . setText ( employee !!. address ) ĊĠĠĠĠĠĠĠ Ġbinding . et Phone . setText ( employee !!. phone ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Data () Ġ: Boolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" should Ġnot Ġbe Ġempty " ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . et Name . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Name Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Email . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Email Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! Utility . isValid Email ( binding . et Email . text . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Enter Ġa Ġvalid Ġemail Ġaddress ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Phone . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Phone Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Department . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Department Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Age . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Age Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Salary . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Salary Ġ$ message ", require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Address . text . toString (). isEmpty ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠUtility . show Toast (" Address Ġ$ message ", require Context ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ; ĊĠĠĠ Ġ} Ċ Ċ }