package Ġcom . ort . last w olf . application . coordinator Ċ Ċ import Ġcom . ort . db fl ute . all common . C Def Ċ import Ġcom . ort . last w olf . application . service . Ability Service Ċ import Ġcom . ort . last w olf . application . service . Char ach ip Service Ċ import Ġcom . ort . last w olf . application . service . Com ing Out Service Ċ import Ġcom . ort . last w olf . application . service . Commit Service Ċ import Ġcom . ort . last w olf . application . service . Message Service Ċ import Ġcom . ort . last w olf . application . service . Player Service Ċ import Ġcom . ort . last w olf . application . service . V illage Service Ċ import Ġcom . ort . last w olf . application . service . Vote Service Ċ import Ġcom . ort . last w olf . domain . model . ability . Ability Type Ċ import Ġcom . ort . last w olf . domain . model . char ach ip . Char a Ċ import Ġcom . ort . last w olf . domain . model . char ach ip . Char as Ċ import Ġcom . ort . last w olf . domain . model . commit . Commit Ċ import Ġcom . ort . last w olf . domain . model . message . Message Ċ import Ġcom . ort . last w olf . domain . model . message . Message Content Ċ import Ġcom . ort . last w olf . domain . model . my self . participant . Sit uation As Participant Ċ import Ġcom . ort . last w olf . domain . model . player . Player Ċ import Ġcom . ort . last w olf . domain . model . skill . Skill Ċ import Ġcom . ort . last w olf . domain . model . skill . Skill Request Ċ import Ġcom . ort . last w olf . domain . model . v illage . V illage Ċ import Ġcom . ort . last w olf . domain . model . v illage . V illage Create Resource Ċ import Ġcom . ort . last w olf . domain . model . v illage . ability . V illage Abilities Ċ import Ġcom . ort . last w olf . domain . model . v illage . ability . V illage Ability Ċ import Ġcom . ort . last w olf . domain . model . v illage . participant . V illage Participant Ċ import Ġcom . ort . last w olf . domain . model . v illage . vote . V illage Vote Ċ import Ġcom . ort . last w olf . domain . model . v illage . vote . V illage Votes Ċ import Ġcom . ort . last w olf . domain . service . ability . Ability Domain Service Ċ import Ġcom . ort . last w olf . domain . service . coming _ out . Com ing Out Domain Service Ċ import Ġcom . ort . last w olf . domain . service . commit . Commit Domain Service Ċ import Ġcom . ort . last w olf . domain . service . creator . Creator Domain Service Ċ import Ġcom . ort . last w olf . domain . service . day change . Roll Calling Domain Service Ċ import Ġcom . ort . last w olf . domain . service . part icip ate . Part icip ate Domain Service Ċ import Ġcom . ort . last w olf . domain . service . roll _ call . Roll Call Domain Service Ċ import Ġcom . ort . last w olf . domain . service . say . Say Domain Service Ċ import Ġcom . ort . last w olf . domain . service . skill . Skill Request Domain Service Ċ import Ġcom . ort . last w olf . domain . service . v illage . V illage Setting Domain Service Ċ import Ġcom . ort . last w olf . domain . service . vote . Vote Domain Service Ċ import Ġcom . ort . last w olf . fw . exception . Last w olf Business Exception Ċ import Ġcom . ort . last w olf . fw . security . Last w olf User Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . transaction . annotation . Transactional ĊĊ Ċ @ Service Ċ class ĠV illage Coordinator ( ĊĠĠĠ Ġ// Ġapplication Ġservice ĊĠĠĠ Ġprivate Ġval Ġday Change Coordinator : ĠDay Change Coordinator , ĊĠĠĠ Ġprivate Ġval Ġv illage Service : ĠV illage Service , ĊĠĠĠ Ġprivate Ġval Ġplayer Service : ĠPlayer Service , ĊĠĠĠ Ġprivate Ġval Ġmessage Service : ĠMessage Service , ĊĠĠĠ Ġprivate Ġval Ġchar ach ip Service : ĠChar ach ip Service , ĊĠĠĠ Ġprivate Ġval Ġability Service : ĠAbility Service , ĊĠĠĠ Ġprivate Ġval Ġvote Service : ĠV ote Service , ĊĠĠĠ Ġprivate Ġval Ġcommit Service : ĠCommit Service , ĊĠĠĠ Ġprivate Ġval Ġcoming Out Service : ĠCom ing Out Service , ĊĠĠĠ Ġ// Ġdomain Ġservice ĊĠĠĠ Ġprivate Ġval Ġparticip ate Domain Service : ĠPart icip ate Domain Service , ĊĠĠĠ Ġprivate Ġval Ġroll Calling Domain Service : ĠRoll Calling Domain Service , ĊĠĠĠ Ġprivate Ġval Ġroll Call Domain Service : ĠRoll Call Domain Service , ĊĠĠĠ Ġprivate Ġval Ġskill Request Domain Service : ĠSkill Request Domain Service , ĊĠĠĠ Ġprivate Ġval Ġcommit Domain Service : ĠCommit Domain Service , ĊĠĠĠ Ġprivate Ġval Ġsay Domain Service : ĠS ay Domain Service , ĊĠĠĠ Ġprivate Ġval Ġability Domain Service : ĠAbility Domain Service , ĊĠĠĠ Ġprivate Ġval Ġvote Domain Service : ĠV ote Domain Service , ĊĠĠĠ Ġprivate Ġval Ġcreator Domain Service : ĠCreator Domain Service , ĊĠĠĠ Ġprivate Ġval Ġv illage Setting Domain Service : ĠV illage Setting Domain Service , ĊĠĠĠ Ġprivate Ġval Ġcoming Out Domain Service : ĠCom ing Out Domain Service Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ åıĤ åĬł èĢħ åıĸå¾Ĺ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Ġv illage ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĿ ĳ åıĤ åĬł èĢħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind Participant ( v illage : ĠV illage , Ġuser : ĠLast w olf User ?): ĠV illage Participant ? Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . participants . findBy Player Id ( player . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ çĻ»éĮ² ç¢ºèªį ĊĠĠĠĠ Ġ* Ġ@ param Ġparam V illage Ġv illage ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconfirm V illage ( param V illage : ĠV illage , Ġuser : ĠLast w olf User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ä½ľæĪĲ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġplayer . assert Create V illage ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ çĻ»éĮ² ĊĠĠĠĠ Ġ* Ġ@ param Ġparam V illage Ġv illage ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĿ ĳ ID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġregister V illage ( param V illage : ĠV illage , Ġuser : ĠLast w olf User ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ä½ľæĪĲ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġplayer . assert Create V illage ( user ) ĊĠĠĠĠĠĠĠ Ġ// Ġ æĿ ĳ ãĤĴ çĻ»éĮ² ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġregister V illage ( param V illage ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv illage . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ è¨Ńå®ļ å¤īæĽ´ ç¢ºèªį ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġassert Modify Setting ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer , ĊĠĠĠĠĠĠĠ Ġresource : ĠV illage Create Resource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! creator Domain Service . convert ToS it uation ( v illage , Ġplayer ). is Available Modify Setting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠLast w olf Business Exception (" è¨Ńå®ļ ãĤĴ å¤īæĽ´ ãģ§ãģį ãģ¾ãģĽãĤĵ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġv illage Setting Domain Service . assert Modify ( v illage , Ġresource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ è¨Ńå®ļ å¤īæĽ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġmodify Setting ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġplayer : ĠPlayer , ĊĠĠĠĠĠĠĠ Ġresource : ĠV illage Create Resource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Modify Setting ( v illage , Ġplayer , Ġresource ) ĊĠĠĠĠĠĠĠ Ġ// Ġ å¤īæĽ´ ãģª ãģĹ ãģ® åł´åĲĪ ãĤĤ ãģĤãĤĭ ĊĠĠĠĠĠĠĠ Ġv illage Setting Domain Service . create Modify Message ( v illage , Ġresource )?. let Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Service . register Message ( v illage , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchanged V illage Ġ= ĠV illage . create For Update ( v illage , Ġresource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! resource . setting . rule . is Available Skill Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged V illage Ġ= Ġchanged V illage . change All Skill Request Le f to ver () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Service . update V illage Difference ( v illage , Ġchanged V illage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ çĤ¹ åĳ¼ éĸĭå§ĭ Ġ*/ ĊĠĠĠ Ġfun Ġstart Roll Call ( v illage Id : ĠInt , Ġuser : ĠLast w olf User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĸĭå§ĭ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġroll Calling Domain Service . assert Start Roll Call ( v illage , Ġplayer ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĸĭå§ĭ ĊĠĠĠĠĠĠĠ Ġval Ġchanged V illage Ġ= Ġv illage . start Roll Call () ĊĠĠĠĠĠĠĠ Ġv illage Service . update V illage Difference ( v illage , Ġchanged V illage ) ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ĊĠĠĠĠĠĠĠ Ġmessage Service . register Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . create Public System Message (" çĤ¹ åĳ¼ ãģĮ éĸĭå§ĭ ãģķãĤĮ ãģ¾ãģĹãģŁ ãĢĤ \ n åıĤ åĬł èĢħ ãģ¯ éĢ² è¡Į æ¬ Ħ ãģ® ãĢĮ æºĸ åĤ Ļ å®Į äºĨ ãĢį ãĥľ ãĤ¿ ãĥ³ ãĤĴ æĬ ¼ ãģĹãģ¦ãģıãģłãģķãģĦ ãĢĤ ", Ġv illage . days . latest Day (). id , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ çĤ¹ åĳ¼ ãĤĴ ãĤĦ ãĤģ ãĤĭ Ġ*/ ĊĠĠĠ Ġfun Ġcancel Roll Call ( v illage Id : ĠInt , Ġuser : ĠLast w olf User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġ// Ġä¸Ń æŃ¢ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġroll Calling Domain Service . assert Cancel Roll Call ( v illage , Ġplayer ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĸĭå§ĭ ĊĠĠĠĠĠĠĠ Ġval Ġchanged V illage Ġ= Ġv illage . cancel Roll Call () ĊĠĠĠĠĠĠĠ Ġv illage Service . update V illage Difference ( v illage , Ġchanged V illage ) ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ĊĠĠĠĠĠĠĠ Ġmessage Service . register Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage . create Public System Message (" çĤ¹ åĳ¼ ãģĮ ä¸Ń æŃ¢ ãģķãĤĮ ãĢģ åħ¨ åĵ ¡ ãģ® æºĸ åĤ Ļ å®Į äºĨ çĬ¶æħĭ ãģĮ è§£ éĻ¤ ãģķãĤĮ ãģ¾ãģĹãģŁ ãĢĤ ", Ġv illage . days . latest Day (). id , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ ãģ« åıĤ åĬł ãģ§ãģįãĤĭ ãģĭ ãĥģ ãĤ§ ãĥĥãĤ¯ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġchar a Id Ġchar a Id ĊĠĠĠĠ Ġ* Ġ@ param Ġfirst Request Skill Ġ å½ ¹ èģ · ç¬¬ 1 å¸ĮæľĽ ĊĠĠĠĠ Ġ* Ġ@ param Ġsecond Request Skill Ġ å½ ¹ èģ · ç¬¬ 2 å¸ĮæľĽ ĊĠĠĠĠ Ġ* Ġ@ param Ġpassword Ġ åħ¥ æĿ ĳ ãĥĳ ãĤ¹ ãĥ¯ ãĥ¼ãĥī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġassert Part icip ate ( ĊĠĠĠĠĠĠĠ Ġv illage Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġuser : ĠLast w olf User , ĊĠĠĠĠĠĠĠ Ġchar a Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġfirst Request Skill : ĠC Def . Skill Ġ= ĠC Def . Skill . ãģĬ ãģ¾ ãģĭ ãģĽ , ĊĠĠĠĠĠĠĠ Ġsecond Request Skill : ĠC Def . Skill Ġ= ĠC Def . Skill . ãģĬ ãģ¾ ãģĭ ãģĽ , ĊĠĠĠĠĠĠĠ Ġpassword : ĠString ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åıĤ åĬł ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer Ġ= Ġplayer Service . find Player ( user ) ĊĊĠĠĠĠĠĠĠ Ġparticip ate Domain Service . assert Part icip ate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar a Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Request Skill , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Request Skill , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ ãģ« åıĤ åĬł ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġplayer Id Ġplayer Id ĊĠĠĠĠ Ġ* Ġ@ param Ġchar a Id Ġchar a Id ĊĠĠĠĠ Ġ* Ġ@ param Ġfirst Request Skill Ġ å½ ¹ èģ · ç¬¬ 1 å¸ĮæľĽ ĊĠĠĠĠ Ġ* Ġ@ param Ġsecond Request Skill Ġ å½ ¹ èģ · ç¬¬ 2 å¸ĮæľĽ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġparticip ate ( ĊĠĠĠĠĠĠĠ Ġv illage Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġplayer Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġchar a Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġfirst Request Skill : ĠC Def . Skill Ġ= ĠC Def . Skill . ãģĬ ãģ¾ ãģĭ ãģĽ , ĊĠĠĠĠĠĠĠ Ġsecond Request Skill : ĠC Def . Skill Ġ= ĠC Def . Skill . ãģĬ ãģ¾ ãģĭ ãģĽ ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ æĿ ĳ åıĤ åĬł èĢħ çĻ»éĮ² ĊĠĠĠĠĠĠĠ Ġvar Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġchanged V illage : ĠV illage Ġ= Ġv illage . part icip ate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Id Ġ= Ġplayer Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar a Id Ġ= Ġchar a Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Request Skill Ġ= Ġfirst Request Skill , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Request Skill Ġ= Ġsecond Request Skill ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġv illage Ġ= Ġv illage Service . update V illage Difference ( v illage , Ġchanged V illage ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant Ġ= Ġv illage . participants . first By Player Id ( player Id ) ĊĠĠĠĠĠĠĠ Ġval Ġchar a : ĠChar a Ġ= Ġchar ach ip Service . find Char a ( char a Id ) ĊĠĠĠĠĠĠĠ Ġ// Ġ{ N } äºº çĽ® ãĢģ { ãĤŃ ãĥ£ ãĥ© åĲį } Ġãģ¨ ãĥ¦ãĥ¼ãĤ¶ãĥ¼ åħ¥åĬĽ ãģ® çĻº è¨Ģ ĊĠĠĠĠĠĠĠ Ġmessage Service . register Part icip ate Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Ġ= Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= Ġparticipant , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar a Ġ= Ġchar a ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å½ ¹ èģ · å¸ĮæľĽ å¤īæĽ´ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġfirst Request Skill Ġ ç¬¬ 1 å¸ĮæľĽ ĊĠĠĠĠ Ġ* Ġ@ param Ġsecond Request Skill Ġ ç¬¬ 2 å¸ĮæľĽ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchange Skill Request ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġfirst Request Skill : ĠString , Ġsecond Request Skill : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ å½ ¹ èģ · å¸ĮæľĽ å¤īæĽ´ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġskill Request Domain Service . assert Skill Request ( v illage , Ġparticipant , Ġfirst Request Skill , Ġsecond Request Skill ) ĊĠĠĠĠĠĠĠ Ġ// Ġ å½ ¹ èģ · å¸ĮæľĽ å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġval Ġchanged V illage : ĠV illage Ġ= Ġv illage . change Skill Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant !!. id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Def . Skill . code Of ( first Request Skill ) !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Def . Skill . code Of ( second Request Skill ) !! ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġv illage Service . update V illage Difference ( v illage , Ġchanged V illage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĤ¹ åĳ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġroll Call ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġdo Roll call : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĤ¹ åĳ¼ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġroll Call Domain Service . assert Roll Call ( v illage , Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĤ¹ åĳ¼ ĊĠĠĠĠĠĠĠ Ġv illage Service . update V illage Difference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage . roll Call ( participant !!. id , Ġdo Roll call ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĢĢ æĿ ĳ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġleave ( v illage Id : ĠInt , Ġuser : ĠLast w olf User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĢĢ æĿ ĳ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġparticip ate Domain Service . assert Leave ( v illage , Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĢĢ æĿ ĳ ĊĠĠĠĠĠĠĠ Ġval Ġupdated V illage : ĠV illage Ġ= Ġv illage Service . update V illage Difference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage . leave Participant ( participant !!. id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĢĢ æĿ ĳ ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ĊĠĠĠĠĠĠĠ Ġmessage Service . register Leave Message ( updated V illage , Ġparticipant . char a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĿ ĳ ãĤĴ éĸĭå§ĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġstart V illage ( v illage Id : ĠInt , Ġuser : ĠLast w olf User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĸĭå§ĭ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġcreator Domain Service . assert Start V illage ( v illage , Ġplayer ) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĸĭå§ĭ ĊĠĠĠĠĠĠĠ Ġday Change Coordinator . start V illage ( v illage Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĻº è¨Ģ ãģ§ãģįãĤĭ ãģĭ ç¢ºèªį ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconfirm ToS ay ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġmessage Text : ĠString , Ġmessage Type : ĠString , Ġis Strong : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Content : ĠMessage Content Ġ= ĠMessage Content . invoke ( message Type , Ġmessage Text , Ġis Strong ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġassert Say ( v illage Id , Ġuser , Ġmessage Content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfirm To Creator Say ( v illage : ĠV illage , Ġmessage Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Content : ĠMessage Content Ġ= ĠMessage Content . invoke ( C Def . MessageType . æĿ ĳ å»º ãģ¦ çĻº è¨Ģ . code (), Ġmessage Text , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġsay Domain Service . assert Creator Say ( v illage , Ġmessage Content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĻº è¨Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġsay ( ĊĠĠĠĠĠĠĠ Ġv illage Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġuser : ĠLast w olf User , ĊĠĠĠĠĠĠĠ Ġmessage Text : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage Type : ĠString , ĊĠĠĠĠĠĠĠ Ġis Strong : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Content : ĠMessage Content Ġ= ĠMessage Content . invoke ( message Type , Ġmessage Text , Ġis Strong ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġassert Say ( v illage Id , Ġuser , Ġmessage Content ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant Ġ= Ġfind Participant ( v illage , Ġuser ) !! ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠMessage Ġ= ĠMessage . create Say Message ( participant , Ġv illage . days . latest Day (). id , Ġmessage Content ) ĊĠĠĠĠĠĠĠ Ġmessage Service . register Message ( v illage , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġcreator Say ( v illage : ĠV illage , Ġmessage Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Content : ĠMessage Content Ġ= ĠMessage Content . invoke ( C Def . MessageType . æĿ ĳ å»º ãģ¦ çĻº è¨Ģ . code (), Ġmessage Text , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġsay Domain Service . assert Creator Say ( v illage , Ġmessage Content ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĻº è¨Ģ ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠMessage Ġ= ĠMessage . create Creator Say Message ( message Text , Ġv illage . days . latest Day (). id ) ĊĠĠĠĠĠĠĠ Ġmessage Service . register Message ( v illage , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ èĥ½åĬĽ ãĤ»ãĥĥãĥĪ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Id Ġ å¯¾è±¡ æĿ ĳ åıĤ åĬł èĢħ ID ĊĠĠĠĠ Ġ* Ġ@ param Ġability TypeCode Ġ èĥ½åĬĽ ç¨® åĪ¥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġset Ability ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġtarget Id : ĠInt ?, Ġability TypeCode : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ èĥ½åĬĽ ãĤ»ãĥĥãĥĪ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġability Type Ġ= ĠAbility Type ( ability TypeCode ) ĊĠĠĠĠĠĠĠ Ġval Ġabilities Ġ= Ġability Service . find V illage Abilities ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġability Domain Service . assert Ability ( v illage , Ġparticipant , Ġtarget Id , Ġability Type , Ġabilities ) ĊĠĠĠĠĠĠĠ Ġ// Ġ èĥ½åĬĽ ãĤ»ãĥĥãĥĪ ĊĠĠĠĠĠĠĠ Ġval Ġv illage Ability Ġ= ĠV illage Ability ( v illage . days . latest Day (). id , Ġparticipant !!. id , Ġtarget Id , Ġability Type ) ĊĠĠĠĠĠĠĠ Ġability Service . update Ability ( v illage , Ġv illage Ability ) ĊĠĠĠĠĠĠĠ Ġmessage Service . register Ability Set Message ( v illage , Ġparticipant , Ġv illage Ability ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĬ ķ ç¥¨ ãĤ»ãĥĥãĥĪ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Id Ġ å¯¾è±¡ æĿ ĳ åıĤ åĬł èĢħ ID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġset Vote ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġtarget Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠæĬ ķ ç¥¨ ãĤ»ãĥĥãĥĪ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġvote Domain Service . assert Vote ( v illage , Ġparticipant , Ġtarget Id ) ĊĠĠĠĠĠĠĠ Ġ// ĠæĬ ķ ç¥¨ ĊĠĠĠĠĠĠĠ Ġval Ġv illage Vote Ġ= ĠV illage Vote ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage . days . latest Day (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant !!. id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvote Service . update Vote ( v illage , Ġv illage Vote ) ĊĠĠĠĠĠĠĠ Ġ// ĠæĬ ķ ç¥¨ ãĤ³ ãĥŁ ãĥĥãĥĪ ĊĠĠĠĠĠĠĠ Ġday Change Coordinator . day Change IfNeeded ( v illage Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĤ³ ãĥŁ ãĥĥãĥĪ ãĤ»ãĥĥãĥĪ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġdo Commit ĠãĤ³ ãĥŁ ãĥĥãĥĪ ãģĻãĤĭ ãģĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġset Commit ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġdo Commit : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥŁ ãĥĥãĥĪ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġcommit Domain Service . assert Commit ( v illage , Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥŁ ãĥĥãĥĪ ĊĠĠĠĠĠĠĠ Ġval Ġcommit Ġ= ĠCommit ( v illage . days . latest Day (). id , Ġparticipant !!. id , Ġdo Commit ) ĊĠĠĠĠĠĠĠ Ġcommit Service . update Commit ( v illage , Ġcommit ) ĊĠĠĠĠĠĠĠ Ġ// Ġmessage Service . register Commit Message ( v illage , Ġparticipant . char a , Ġdo Commit ) ĊĠĠĠĠĠĠĠ Ġ// Ġ æĹ¥ ä»ĺ æĽ´æĸ° ĊĠĠĠĠĠĠĠ Ġif Ġ( do Commit ) Ġday Change Coordinator . day Change IfNeeded ( v illage . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĤ « ãĥŁ ãĥ³ãĤ° ãĤ¢ ãĤ¦ ãĥĪ ãĤ»ãĥĥãĥĪ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Id Ġv illage Id ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġskill Ġskill ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transactional ( rollback For Ġ= Ġ[ Exception :: class , ĠLast w olf Business Exception :: class ]) ĊĠĠĠ Ġfun Ġset Com ing Out ( v illage Id : ĠInt , Ġuser : ĠLast w olf User , Ġskill : ĠSkill ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥŁ ãĥ³ãĤ° ãĤ¢ ãĤ¦ ãĥĪ ãģ§ãģį ãģªãģĦ çĬ¶ æ³ ģ ãģª ãĤī ãĤ¨ãĥ© ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġcoming Out Domain Service . assert Com ing Out ( v illage , Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥŁ ãĥ³ãĤ° ãĤ¢ ãĤ¦ ãĥĪ ĊĠĠĠĠĠĠĠ Ġif Ġ( skill Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoming Out Service . delete Com ing Out ( participant !!. id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġcoming Out Service . register Com ing Out ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant !!. id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskill ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmessage Service . register Com ing Out Message ( v illage , Ġparticipant . char a , Ġskill ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĤ åĬł çĬ¶ æ³ ģ ãĤĦ åı¯èĥ½ ãģª ãĤ¢ãĤ¯ ãĤ·ãĥ§ãĥ³ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠ Ġ* Ġ@ param Ġv illage Ġv illage ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Ġuser ĊĠĠĠĠ Ġ* Ġ@ param Ġchar as Ġchar as ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind Action Sit uation ( ĊĠĠĠĠĠĠĠ Ġv illage : ĠV illage , ĊĠĠĠĠĠĠĠ Ġuser : ĠLast w olf User ?, ĊĠĠĠĠĠĠĠ Ġchar as : ĠChar as ĊĠĠĠ Ġ): ĠS it uation As Participant Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠPlayer ? Ġ= Ġif Ġ( user Ġ== Ġnull ) Ġnull Ġelse Ġplayer Service . find Player ( user ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġskill Request : ĠSkill Request ? Ġ= Ġparticipant ?. skill Request ĊĠĠĠĠĠĠĠ Ġval Ġvotes : ĠV illage Votes Ġ= Ġvote Service . find V illage Votes ( v illage . id ) ĊĠĠĠĠĠĠĠ Ġval Ġcommit : ĠCommit ? Ġ= Ġcommit Service . find Commit ( v illage , Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġval Ġabilities : ĠV illage Abilities Ġ= Ġability Service . find V illage Abilities ( v illage . id ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠS it uation As Participant ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticip ate Ġ= Ġparticip ate Domain Service . convert ToS it uation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv illage , Ġparticipant , Ġplayer , Ġchar as ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroll Call Ġ= Ġroll Call Domain Service . convert ToS it uation ( v illage , Ġparticipant ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskill Request Ġ= Ġskill Request Domain Service . convert ToS it uation ( v illage , Ġparticipant , Ġskill Request ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Ġ= Ġcommit Domain Service . convert ToS it uation ( v illage , Ġparticipant , Ġcommit ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoming Out Ġ= Ġcoming Out Domain Service . convert ToS it uation ( v illage , Ġparticipant ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsay Ġ= Ġsay Domain Service . convert ToS it uation ( v illage , Ġparticipant ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġability Ġ= Ġability Domain Service . convert ToS it uation List ( v illage , Ġparticipant , Ġabilities ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvote Ġ= Ġvote Domain Service . convert ToS it uation ( v illage , Ġparticipant , Ġvotes ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreator Ġ= Ġcreator Domain Service . convert ToS it uation ( v illage , Ġplayer ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAss ist ĠLogic ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ============ ĊĠĠĠ Ġprivate Ġfun Ġregister V illage ( param V illage : ĠV illage ): ĠV illage Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ æĿ ĳ ãĤĴ çĻ»éĮ² ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . register V illage ( param V illage ) ĊĠĠĠĠĠĠĠ Ġ// Ġ æĿ ĳ ä½ľæĪĲ æĻĤ ãģ® ãĤ· ãĤ¹ãĥĨãĥł ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ ãĤĴ çĻ»éĮ² ĊĠĠĠĠĠĠĠ Ġmessage Service . register Initial Message ( v illage ) ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ Ģ ãĥŁ ãĥ¼ãĤ Ń ãĥ£ ãĥ© ãĤĴ åıĤ åĬł ãģķ ãģĽ ãĤĭ ĊĠĠĠĠĠĠĠ Ġparticip ate Dummy Char a ( v illage . id , Ġv illage ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv illage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparticip ate Dummy Char a ( v illage Id : ĠInt , Ġv illage : ĠV illage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdummy Player Id Ġ= Ġ 1 Ġ// Ġ åĽºå®ļ ĊĠĠĠĠĠĠĠ Ġthis . part icip ate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv illage Id Ġ= Ġv illage Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Id Ġ= Ġdummy Player Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar a Id Ġ= Ġv illage . setting . char ach ip . dummy Char a Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Say ( v illage Id : ĠInt , Ġuser : ĠLast w olf User ?, Ġmessage Content : ĠMessage Content ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv illage : ĠV illage Ġ= Ġv illage Service . find V illage ( v illage Id ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipant : ĠV illage Participant ? Ġ= Ġfind Participant ( v illage , Ġuser ) ĊĠĠĠĠĠĠĠ Ġval Ġlatest Day Message List : ĠList < Message > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Service . find Part icip ate Day Message List ( v illage Id , Ġv illage . days . latest Day (), Ġparticipant ) ĊĠĠĠĠĠĠĠ Ġsay Domain Service . assert Say ( v illage , Ġparticipant , Ġparticipant ?. char a , Ġlatest Day Message List , Ġmessage Content ) ĊĠĠĠ Ġ} Ċ } Ċ