public void SetStartProcessBody(long chatId, StartProcessBody startProcessBody) { repo[chatId] = startProcessBody; }
public Task <StartProcessResult> StartProcessAsync(StartProcessBody body, Auth auth) { return(restClient.ExecuteWithAuth <StartProcessResult>($"/api/rest/Workflow/StartProcessAsync", body, RestSharp.Method.POST, auth)); }
public override async Task HandleCommandState(long identifier, string chatState, object message, string data) { var m = message as Message; var auth = authRepository.GetCurrentAuth(identifier); switch (chatState) { case chooseProcess: { var processId = long.Parse(data); var context = await botWebApiService.GetProcessContext(processId); processContextRepository.SetCurrentProcessContext(identifier, context, null); // Должны были выбрать процесс - это токен var body = new StartProcessBody { ProcessHeaderId = long.Parse(data), ProcessName = "FromBot", Context = new ExpandoObject() }; startProcessRepository.SetStartProcessBody(identifier, body); if (context.Count == 0) { await AllDone(identifier); break; } else { if (processId == 102) { ((ICollection <KeyValuePair <string, object> >)body.Context).Add(new KeyValuePair <string, object>("Bot", true)); } await WriteContext(identifier, m, null); chatRepository.SetState(identifier, this, writeContext); break; } // Хардкод на 1 процесс //if (processId == 102) //{ // ((ICollection<KeyValuePair<string, object>>)body.Context).Add(new KeyValuePair<string, object>("Bot", true)); // await ((ITelegramBotClient)BotService.Client).SendTextMessageAsync(identifier, "Введите дату начала в формате ДД.ММ.ГГГГ ЧЧ:ММ"); // chatRepository.SetState(identifier, this, startDate); //} //else //{ // await AllDone(identifier); //} //break; } case startDate: { var current = startProcessRepository.GetCurrentStartProcessBody(identifier); if (current != null) { if (DateTime.TryParse(m.Text, out DateTime date)) { ((ICollection <KeyValuePair <string, object> >)current.Context).Add(new KeyValuePair <string, object>("DateStart", date)); await((ITelegramBotClient)BotService.Client).SendTextMessageAsync(identifier, "Введите дату окончания в формате ДД.ММ.ГГГГ ЧЧ:ММ"); chatRepository.SetState(identifier, this, endDate); } else { await((ITelegramBotClient)BotService.Client).SendTextMessageAsync(identifier, "Дата не распознана, введите корректно"); } } break; } case endDate: { var current = startProcessRepository.GetCurrentStartProcessBody(identifier); if (current != null) { if (DateTime.TryParse(m.Text, out DateTime date)) { ((ICollection <KeyValuePair <string, object> >)current.Context).Add(new KeyValuePair <string, object>("DateEnd", date)); await((ITelegramBotClient)BotService.Client).SendTextMessageAsync(identifier, "Введите причину отгула"); chatRepository.SetState(identifier, this, reason); } else { await((ITelegramBotClient)BotService.Client).SendTextMessageAsync(identifier, "Дата не распознана, введите корректно"); } } break; } case reason: { var current = startProcessRepository.GetCurrentStartProcessBody(identifier); if (current != null) { ((ICollection <KeyValuePair <string, object> >)current.Context).Add(new KeyValuePair <string, object>("Reason", m.Text)); chatRepository.SetState(identifier, this, startProcessQuestion); await AllDone(identifier); } break; } case startProcessQuestion: { await AllDone(identifier); break; } case startProcess: { await StartProcess(identifier, data); break; } case writeContext: { await WriteContext(identifier, m, m.Text); break; } default: { chatRepository.ResetState(identifier); break; } } }