@@ -21,6 +21,7 @@ private enum State
2121 AddIssueSetIssueProjectId ,
2222 AddIssueSetIssueSubject ,
2323 AddIssueSetIssueDescription ,
24+ AddIssueSetTrackerId ,
2425 }
2526
2627 private readonly ITelegramBotClient _telegramBotClient ;
@@ -87,6 +88,13 @@ public async Task Process(Message message)
8788 if ( _state == State . AddIssueSetIssueDescription )
8889 {
8990 _createIssueModel . issue . description = message . Text ;
91+ await ChangeState ( message , State . AddIssueSetTrackerId ) ;
92+ return ;
93+ }
94+
95+ if ( _state == State . AddIssueSetTrackerId )
96+ {
97+ _createIssueModel . issue . tracker_id = int . Parse ( message . Text ) ;
9098 await AddIssue ( message ) ;
9199 await ChangeState ( message , State . Command ) ;
92100 return ;
@@ -111,6 +119,11 @@ private async Task ChangeState(Message message, State state)
111119 {
112120 await ReplyMessage ( message , "Issue Description:\n " ) ;
113121 }
122+ else if ( state == State . AddIssueSetTrackerId )
123+ {
124+ await ReplyWithTrackerList ( message ) ;
125+ await ReplyMessage ( message , "Tracker Id:\n " ) ;
126+ }
114127 else if ( state == State . SearchProjects )
115128 {
116129 await ReplyMessage ( message , "Search pattern (type * for all):\n " ) ;
@@ -155,6 +168,14 @@ private async Task ReplyWithProjectList(Message message, string searchPattern)
155168 await ChangeState ( message , State . Command ) ;
156169 }
157170
171+ private async Task ReplyWithTrackerList ( Message message )
172+ {
173+ var trackers = await _redmineApiClient . GetTrackers ( ) ;
174+ var trackersStr = string . Join ( "\n " , trackers . OrderBy ( r => r . Id ) . Select ( r => $ "{ r . Id } ) { r . Name } ") ) ;
175+
176+ await ReplyMessage ( message , $ "Trackers:\n { trackersStr } ") ;
177+ }
178+
158179 private async Task AddIssue ( Message message )
159180 {
160181 var response = await _redmineApiClient . AddIssue ( _createIssueModel ) ;
0 commit comments