package Ġcom . deck . core . state less Ċ Ċ import Ġcom . deck . common . util . Generic Id Ċ import Ġcom . deck . common . util . Int Generic Id Ċ import Ġcom . deck . core . entity . Member Ċ Ċ public Ġinterface ĠStateless Member : ĠStateless Entity < Member > Ġ{ ĊĠĠĠ Ġpublic Ġval Ġid : ĠGeneric Id ĊĠĠĠ Ġpublic Ġval Ġteam : ĠStateless Team ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChanges Ġuser Ġnickname Ġto Ġ[ nickname ] Ġif Ġpresent , Ġotherwise Ġresets Ġuser Ġnickname . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnickname Ġnull Ġif Ġnickname Ġis Ġto Ġbe Ġreset , Ġor Ġnew Ġmember Ġnickname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġset Nick name ( nickname : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( nickname Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . rest . team Route . set Nick name ( team Id Ġ= Ġteam . id , Ġmember Id Ġ= Ġid , Ġnickname Ġ= Ġnickname ) ĊĠĠĠĠĠĠĠ Ġelse Ġclient . rest . team Route . reset Nick name ( team Id Ġ= Ġteam . id , Ġmember Id Ġ= Ġid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAssign s Ġspecified Ġ[ role Id ] Ġrole Ġto Ġthis Ġmember ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrole Id Ġrole Ġid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġadd Role ( role Id : ĠInt Generic Id ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġclient . rest . team Route . add Role ( team . id , Ġrole Id , Ġid ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġspecified Ġ[ role Id ] Ġrole Ġfrom Ġthis Ġmember ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrole Id Ġrole Ġid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġremove Role ( role Id : ĠInt Generic Id ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġclient . rest . team Route . remove Role ( team . id , Ġrole Id , Ġid ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetState (): ĠMember Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . entity Deleg ator . get Member ( id Ġ= Ġid , Ġteam Id Ġ= Ġteam . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Tri ed Ġto Ġaccess Ġan Ġinvalid Ġuser Ġstate ") ĊĠĠĠ Ġ} Ċ }