package Ġcom . k re ait . bots . agile . domain . slack . stand up Definition . leave . dialog . open Ċ Ċ import Ġcom . k re ait . bots . agile . domain . common . data . Stand up Definition Ċ import Ġcom . k re ait . bots . agile . domain . common . data . Stand up Definition Repository Ċ import Ġcom . k re ait . bots . agile . domain . common . service . Message Context Ċ import Ġcom . k re ait . bots . agile . domain . common . service . Slack Message Sender Ċ import Ġcom . k re ait . bots . agile . domain . common . service . UserService Ċ import Ġcom . k re ait . bots . agile . domain . response . ResponseType Ċ import Ġcom . k re ait . slack . api . contract . jackson . Slack Command Ċ import Ġcom . k re ait . slack . api . contract . jackson . group . dialog . Options Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠLeave Slash CommandHandler Ġ@ Autowired Ġconstructor ( private Ġval Ġleave Dialog Opening Service : ĠLeave Dialog Opening Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġstand up Definition Repository : ĠStand up Definition Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠuserService : ĠUserService , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmessage Sender : ĠSlack Message Sender ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( Leave Slash CommandHandler :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Leave Slash Command ( slack Command : ĠSlack Command , ĠaccessToken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġslack Command . userId ĊĠĠĠĠĠĠĠ Ġval Ġteam Id Ġ= Ġslack Command . team Id ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġleave Options ( team Id , ĠuserId , ĠaccessToken ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( options . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . leave Dialog Opening Service . open Stand up Leave Dialog ( options , Ġslack Command . trigger Id , Ġslack Command . userId , ĠaccessToken ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . message Sender . send Ep hemeral Message ( ResponseType . NO _ STAND UP S _ FOUND , Ġmessage Context Ġ= ĠMessage Context . of ( slack Command ), Ġtoken Ġ= ĠaccessToken ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ[ List < Options >] Ġwith ĠStand ups Ġnames Ġwhere Ġuser Ġis Ġpart Ġof Ġthe Ġstand up Ġand Ġfor Ġgiven ĠTeam / Workspace ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġleave Options ( team Id : ĠString , ĠuserId : ĠString , ĠaccessToken : ĠString ): ĠList < Options > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stand up Definition Repository . find ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Broadcast Channels Ġ= ĠuserService . conversation List ( accessToken , ĠuserId ). map Ġ{ Ġit . id Ġ}. toSet (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Team Id Ġ= Ġteam Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith UserId Ġ= ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Status Ġ= Ġset Of ( Stand up Definition . Status . ACTIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). map Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOptions ( if Ġ( it . name . length Ġ> Ġ 7 5 ) Ġ"${ it . name . substring ( 0 , Ġ 7 1 )} ..." Ġelse Ġit . name , Ġit . id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ