Files
Parasha/SvetoforVKBot/Models/Commands/LK/Tracks/SelectTrackCommand.cs
2021-10-19 06:04:52 +03:00

199 lines
13 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Data.SqlClient;
using SvetoforVKBot.Models.Updates;
using VkNet;
using VkNet.Enums.SafetyEnums;
using VkNet.Model.Keyboard;
using VkNet.Model.RequestParams;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Newtonsoft.Json;
using System.Linq;
namespace SvetoforVKBot.Models.Commands.LK.Tracks
{
public class SelectTrackCommand : Command
{
public override string Name => "{\"button\":\"selectTrack-";
public override void Execute(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
{
}
public override void ExecutePL(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
{
var chatId = update.@object.message.from_id;
MessagesSendParams @params = new MessagesSendParams();
Regex regex = new Regex("[^0-9]");
string msg = "";
var keyboardBuilder = new KeyboardBuilder().Clear();
int age = 0;
int genderCoef = 0;
double kkalResult = 0;
double colorPercent = 0;
double dayCoef = 0;
double curDayKkal = 0;
try
{
string[] payload = update.@object.message.payload.Split('-');
int track = Convert.ToInt32(regex.Replace(payload[1], ""));
Dictionary<int, string> colors = new Dictionary<int, string>(3);
colors.Add(1, "🟩"); //З
colors.Add(2, "🟦"); //C
colors.Add(3, "🟨"); //Ж
Dictionary<int, string> tracks = new Dictionary<int, string>(7);
tracks.Add(1, "Оптимизация питания");
tracks.Add(2, "Снижение жировой массы");
tracks.Add(3, "Увеличение мышечной массы");
tracks.Add(4, "Персональный режим");
//SqlCommand updTag = new SqlCommand("UPDATE Users SET track = @track WHERE chatId = @chatId;", Con);
//updTag.Parameters.AddWithValue("@chatId", chatId);
//updTag.Parameters.AddWithValue("@track", track);
//updTag.ExecuteNonQuery();
var user = db.Users.Single(usr => usr.chatId == chatId);
//SqlCommand getUser = new SqlCommand("SELECT * FROM Users WHERE chatId = @chatId;", Con);
//getUser.Parameters.AddWithValue("@chatId", chatId);
//SqlDataReader rgetUser = getUser.ExecuteReader();
//rgetUser.Read();
//int choosenTrack = Convert.ToInt32(rgetUser["track"]);
//rgetUser.Close();
////age = (DateTime.Today.Year - birthday.Year);
switch (track)
{
case 1:
@params.Message =
"Рекомендации для поддержания массы тела:" +
"\n\n" +
"Режим питания: 3 - 4 разовое питание, из них 3 основных приема пищи (завтрак, обед и ужин) и 1 дополнительный прием.\n" +
"Распределение объема пищи в течение дня должно быть следующим: завтрак 20-30%, обед 30-40%, полдник 5-10%, ужин 20-30%.\n" +
"В рационе питания должно быть на килограмм массы тела: белков 1,4-2,0 грамма, жиров 1,0-1,1 грамма и углеводов 2,4-3,0 грамма." +
"\n\n" +
"Жмите \"Рацион питания\", чтобы увидеть список рекомендуемых и нерекомендуемых продуктов.\n" +
"\"Примерное меню\" поможет Вам составить персональное меню." +
"\n\n" +
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
break;
case 2:
@params.Message =
"Рекомендации для снижения жировой массы тела:" +
"\n\n" +
"Режим питания: 4 - 5 разового питание, из них 3 основных приема пищи (завтрак, обед и ужин) и 1-2 дополнительных приема.\n" +
"Распределение объема пищи в течение дня должно быть следующим: завтрак 20-30%, обед 30-40%, полдник 5-10%, ужин 20-30%, второй завтрак (5-10%) и второй ужин (до 5%).\n" +
"В рационе питания должно быть на килограмм массы тела: белков 1,2-1,7 грамма, жиров 0,9-1,0 грамма и углеводов 2,0-2,6 грамма." +
"\n\n" +
"Жмите \"Рацион питания\", чтобы увидеть список рекомендуемых и нерекомендуемых продуктов.\n" +
"\"Примерное меню\" поможет Вам составить персональное меню." +
"\n\n" +
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
break;
case 3:
@params.Message =
"Рекомендации для набора мышечной массы тела:" +
"\n\n" +
"Режим питания: 4 - 5 разового питание, из них 3 основных приема пищи (завтрак, обед и ужин) и 1-2 дополнительных приема.\n" +
"Распределение объема пищи в течение дня должно быть следующим: завтрак 20-30%, обед 30-40%, полдник 5-10%, ужин 20-30%, второй завтрак (5-10%) и второй ужин (до 5%).\n" +
"В рационе питания должно быть на килограмм массы тела: белков 1,6-2,2 грамма, жиров 1,1-1,2 грамма и углеводов 2,8-3,4 грамма." +
"\n\n" +
"Жмите \"Рацион питания\", чтобы увидеть список рекомендуемых и нерекомендуемых продуктов.\n" +
"\"Примерное меню\" поможет Вам составить персональное меню." +
"\n\n" +
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
break;
case 4:
@params.Message =
"⚠Персональный режим определяется после консультации со специалистом.\n\n" +
"Консультация включает: \n\n" +
"- определение и оценка состава тела\n" +
"- коррекция рациона питания\n" +
"- оценка функционального состояния\n" +
"- психофизиологическое тестирование\n\n" +
"📍Консультации проводятся по субботам по адресу: г. Киров, ул. Молодой Гвардии, д.13.\n" +
"☎Тел. 70-81-22.\n" +
"Стоимость и условия по телефону. \n\n" +
"Специалист: Кадочникова Наталья Ивановна.\n\n" +
"Чтобы узнать подробнее, нажмите кнопку \"О специалисте\"\n\n" +
"Вы можете оформить заявку на запись. Для этого нажмите кнопку \"Оставить заявку\".\n" +
"Ваши данные будут отправлены менеджеру, с Вами свяжутся для уточнения даты и времени консультации.";
keyboardBuilder
.AddButton("Оставить заявку", "selectSubmitConsultation", KeyboardButtonColor.Positive)
.AddLine()
.AddButton("О специалисте", "selectMoreAboutSpec", KeyboardButtonColor.Primary)
.AddLine()
.AddButton("Назад", "startPL", KeyboardButtonColor.Default);
@params.Keyboard = keyboardBuilder.Build();
@params.UserId = chatId;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
return;
}
//keyboardBuilder
// .AddButton("💬Консультация", "selectLiveConsultation", KeyboardButtonColor.Primary)
// .AddLine()
// //.AddButton(cons, "selectGotConsultation", KeyboardButtonColor.Primary)
// //.AddLine()
// .AddButton("Назад", "selectCalculatorCcal", KeyboardButtonColor.Default);
if (track != 4) // && choosenTrack == 0)
{
if (user.track != track)
{
keyboardBuilder
.AddButton(colors[track] + "Выбрать этот трек", "selectChooseTrack-" + track, KeyboardButtonColor.Positive)
.AddLine();
}
keyboardBuilder
.AddButton("Рацион питания", "selectRation-" + track, KeyboardButtonColor.Primary)
//.AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
.AddLine()
.AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
.AddLine()
.AddButton("Назад", "startPL", KeyboardButtonColor.Default);
}
//else if (track != 0 && choosenTrack != 0)
//{
// keyboardBuilder
// .AddButton("Рацион питания", "selectRation-" + track, KeyboardButtonColor.Primary)
// //.AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
// .AddLine()
// .AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
// .AddLine()
// .AddButton("Назад", "startPL", KeyboardButtonColor.Default);
//}
@params.Keyboard = keyboardBuilder.Build();
@params.UserId = chatId;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
catch (Exception ee)
{
@params.Message = "‼Ошибка в SelectTrackCommand: " + ee.Message;
@params.Attachments = null;
@params.Keyboard = null;
@params.UserId = 59111081;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
}
}