public static async void Ask(Question question, Message message, TelegramBotClient Bot) { using IServiceScope scope = _provider.CreateScope(); var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var chatId = message.Chat.Id; var userId = message.From.Id; var questionToSend = _context.Questions.Where(c => c.Id == question.Id).FirstOrDefault(); await Bot.SendTextMessageAsync( chatId : chatId, text : questionToSend.Text ); var history = new QuestionTreeHistory() { Id = Guid.NewGuid(), CreateDate = DateTimeOffset.Now, QuestionId = question.Id, // ScenarioId = question.ScenarioId, UserId = userId }; _context.Add(history); _context.SaveChanges(); }
private static void AddValue(Update update, ApplicationDbContext _context, QuestionTreeHistory lastAskedQuestionOfScenario, Question question, Param param, ParamValue paramValue) { var paramValueId = Guid.NewGuid(); if (param.HasUnit) { if (paramValue != null && !string.IsNullOrEmpty(paramValue.Value)) { paramValue.Unit = update.Message.Text; } } if (paramValue == null) { var paramVlaue = new ParamValue() { Id = paramValueId, ParamId = param.Id, QuestionId = question.Id, Value = update.Message.Text, MedcinId = lastAskedQuestionOfScenario.MedcinId, DateTimeCreate = DateTimeOffset.Now }; _context.Add(paramVlaue); var medcinParam = new MedcinParam() { Id = Guid.NewGuid(), MedcinId = lastAskedQuestionOfScenario.MedcinId, ParamsValueId = paramValueId }; _context.Add(medcinParam); } }
//private static IServiceProvider _provider; //public AddMedcine(IServiceProvider serviceProvider) //{ // _provider = serviceProvider; //} public static async Task NewMedcine(Update update, TelegramBotClient Bot, IServiceProvider _provider) { using IServiceScope scope = _provider.CreateScope(); var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); var message = update.Message; var scenario = new Scenario() { Id = Guid.NewGuid(), Type = ScenarioType.AddMedcine, Finished = false, //QuestionTreeId = Guid.Parse("guid добавления лекарства"), StartDate = DateTimeOffset.Now, UserId = message.From.Id }; _context.Add(scenario); var medcine = new Medcin() { Id = Guid.NewGuid() }; _context.Add(medcine); var firstQuestion = _context.Questions .Include(c => c.QuestionTree) .Where(c => c.IsFirst == true) .Where(c => c.QuestionTree.Type == QuestionTreeType.AddMedcine) .FirstOrDefault(); await Bot.SendTextMessageAsync( chatId : message.Chat.Id, text : firstQuestion.Text ); var history = new QuestionTreeHistory() { Id = Guid.NewGuid(), CreateDate = DateTimeOffset.Now, QuestionId = firstQuestion.Id, //QuestionTreeId = scenario.QuestionTreeId, UserId = message.From.Id, MedcinId = medcine.Id, ScenarioId = scenario.Id }; _context.Add(history); _context.SaveChanges(); }
private static async Task AskNextQuestion(Guid scenarioId, Guid medcinId, Update update, Guid nextQuestionId, TelegramBotClient Bot, ApplicationDbContext _context) { var chatId = update.Message.Chat.Id; var userId = update.Message.From.Id; var question = _context.Questions .Where(c => c.Id == nextQuestionId) .FirstOrDefault(); if (/*question.Type == QuestionType.Parametr & */ question.ScenarioType == QuestionScenarioType.Simple) { if (question.ResponseType == ResponseType.Text) { await Bot.SendTextMessageAsync( chatId : chatId, text : question.Text ); } else { var answers = JsonConvert.DeserializeObject <List <string> >(question.Answers.ToString()); var keys = new KeyboardButton[answers.Count()]; for (var i = 0; i < answers.Count(); i++) { keys[i] = new KeyboardButton(answers[i]); } var replyKeyboardMarkup = new ReplyKeyboardMarkup(keys, true, true); await Bot.SendTextMessageAsync( chatId : chatId, text : question.Text, replyMarkup : replyKeyboardMarkup); } } else if (question.ScenarioType == QuestionScenarioType.Complex) { var answers = JsonConvert.DeserializeObject <List <string> >(question.Answers.ToString()); var keys = new List <KeyboardButton>(); foreach (var answer in answers) { var key = new KeyboardButton(answer); keys.Add(key); } var replyKeyboardMarkup = new ReplyKeyboardMarkup(keys, true, true); await Bot.SendTextMessageAsync( chatId : chatId, text : "Choose", replyMarkup : replyKeyboardMarkup); } var history = new QuestionTreeHistory() { Id = Guid.NewGuid(), CreateDate = DateTimeOffset.Now, MedcinId = medcinId, ScenarioId = scenarioId, QuestionId = question.Id, UserId = userId }; _context.Add(history); _context.SaveChanges(); }