Example #1
0
        private static async Task <Guid?> EvaluateChatScenarioFormulaResult(DatabaseContext dbContext, long idGroup, Guid idSubscriber, Guid uniqueId, ChatScenarios chatScenario)
        {
            var answers = await dbContext.SubscriberChatReplies
                          .Where(x => x.IdSubscriber == idSubscriber)
                          .Where(x => x.ChatScenarioContent.IdChatScenario == chatScenario.Id)
                          .Where(x => x.UniqueId == uniqueId)
                          .OrderBy(x => x.ChatScenarioContent.Step)
                          .ToArrayAsync();

            string text = null;
            int    var0 = 0, var1 = 0, var2 = 0;
            double var4 = 0;

            bool isInvalid = !int.TryParse(answers[0].Text, out var0) ||
                             !int.TryParse(answers[1].Text, out var1) ||
                             !int.TryParse(answers[2].Text, out var2) ||
                             !double.TryParse(answers[4].Text.Split(' ').FirstOrDefault().Replace('.', ','), out var4);

            if (isInvalid)
            {
                text = "Направильно введены данные";
            }
            else
            {
                text = $"Ваша дневная норма калорий (DCI) = {(var0 * 10 + var1 * 6.25 - var2 * 5 + (answers[3].Text.ToLower() == "мужчина" ? 5 : -161)) * var4}\n" +
                       $"Индекс массы тела (ИМТ) = {var0 / (((double)var1 / 100) * ((double)var1 / 100)):N2}";
            }

            var answerMessage = new Messages()
            {
                IdGroup  = idGroup,
                Text     = text,
                Keyboard = "{\"one_time\":true,\"buttons\":[[{\"action\":{\"type\":\"text\",\"label\":\"Начать\"},\"color\":\"primary\"}]]}"
            };

            await dbContext.Messages.AddAsync(answerMessage);

            await dbContext.SaveChangesAsync();

            if (!isInvalid)
            {
                await dbContext.FilesInMessage.AddAsync(new FilesInMessage()
                {
                    IdFile    = Guid.Parse("6b898bee-d40b-4e50-56b8-08d61fded974"),
                    IdMessage = answerMessage.Id
                });

                await dbContext.SaveChangesAsync();
            }
            return(answerMessage.Id);
        }
Example #2
0
        private static async Task <Guid?> ChatScenarioReply(DatabaseContext dbContext, long idGroup, Guid idSubscriber, ChatScenarios chatScenario)
        {
            var isInProgress = await dbContext.SubscribersInChatProgress.AnyAsync(x => x.IdSubscriber == idSubscriber && x.ChatScenarioContent.IdChatScenario == chatScenario.Id);

            if (isInProgress)
            {
                return(null);
            }

            var firstChatContent = await dbContext.ChatScenarioContents
                                   .Where(x => x.IdChatScenario == chatScenario.Id)
                                   .OrderBy(x => x.Step)
                                   .FirstOrDefaultAsync();

            if (firstChatContent == null)
            {
                return(null);
            }

            await dbContext.History_SubscribersInChatScenariosContents.AddAsync(new History_SubscribersInChatScenariosContents()
            {
                Dt                    = DateTime.UtcNow,
                IdSubscriber          = idSubscriber,
                IdChatScenarioContent = firstChatContent.Id
            });

            await dbContext.SubscribersInChatProgress.AddAsync(new SubscribersInChatProgress()
            {
                DtAdd                 = DateTime.UtcNow,
                IdSubscriber          = idSubscriber,
                IdChatScenarioContent = firstChatContent.Id,
                UniqueId              = Guid.NewGuid()
            });

            await dbContext.SaveChangesAsync();

            return(firstChatContent.IdMessage);
        }