Добавьте файлы проекта.
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
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 SelectChooseTrackCommand : Command
|
||||
{
|
||||
public override string Name => "{\"button\":\"selectChooseTrack-";
|
||||
|
||||
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, "Персональный режим");
|
||||
|
||||
var user = db.Users.Single(usr => usr.chatId == chatId);
|
||||
user.track = track;
|
||||
db.SaveChanges();
|
||||
|
||||
/*
|
||||
SqlCommand getUser = new SqlCommand("SELECT * FROM Users WHERE chatId = @chatId;", Con);
|
||||
getUser.Parameters.AddWithValue("@chatId", chatId);
|
||||
SqlDataReader rgetUser = getUser.ExecuteReader();
|
||||
rgetUser.Read();
|
||||
string fio = rgetUser["fio"].ToString();
|
||||
int weight = Convert.ToInt32(rgetUser["weight"]);
|
||||
int height = Convert.ToInt32(rgetUser["height"]);
|
||||
int gender = Convert.ToInt32(rgetUser["gender"]);
|
||||
var birthday = DateTime.Parse(rgetUser["birthday"].ToString());
|
||||
var activityCoef = Convert.ToDouble(rgetUser["activityCoef"]);
|
||||
List<int> sportDays = JsonConvert.DeserializeObject<List<int>>(rgetUser["sportDays"].ToString());
|
||||
rgetUser.Close();
|
||||
age = (DateTime.Today.Year - birthday.Year);
|
||||
*/
|
||||
|
||||
|
||||
@params.Message = $"{colors[track]} Вы выбрали трек {tracks[track]}! В личном кабинете для Вас доступны рекомендации и калькулятор калорий.";
|
||||
|
||||
//keyboardBuilder
|
||||
// .AddButton("💬Консультация", "selectLiveConsultation", KeyboardButtonColor.Primary)
|
||||
// .AddLine()
|
||||
// //.AddButton(cons, "selectGotConsultation", KeyboardButtonColor.Primary)
|
||||
// //.AddLine()
|
||||
// .AddButton("Назад", "selectCalculatorCcal", KeyboardButtonColor.Default);
|
||||
|
||||
keyboardBuilder
|
||||
.AddButton("Личный кабинет", "startPL", KeyboardButtonColor.Positive);
|
||||
@params.Keyboard = keyboardBuilder.Build();
|
||||
@params.UserId = chatId;
|
||||
@params.RandomId = GetRandomId();
|
||||
client.Messages.SendAsync(@params);
|
||||
}
|
||||
catch (Exception ee)
|
||||
{
|
||||
@params.Message = "‼Ошибка в SelectChooseTrackCommand: " + ee.Message;
|
||||
@params.Attachments = null;
|
||||
@params.Keyboard = null;
|
||||
@params.UserId = 59111081;
|
||||
@params.RandomId = GetRandomId();
|
||||
client.Messages.SendAsync(@params);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,316 @@
|
||||
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 SelectExampleMenuCommand : Command
|
||||
{
|
||||
public override string Name => "{\"button\":\"selectExampleMenu-";
|
||||
|
||||
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;
|
||||
double kkalResultLow = 0;
|
||||
double kkalResultHigh = 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, "Персональный режим");
|
||||
|
||||
|
||||
var user = db.Users.Single(usr => usr.chatId == chatId);
|
||||
List<int> sportDays = JsonConvert.DeserializeObject<List<int>>(user.sportDays);
|
||||
|
||||
//SqlCommand getUser = new SqlCommand("SELECT * FROM Users WHERE chatId = @chatId;", Con);
|
||||
//getUser.Parameters.AddWithValue("@chatId", chatId);
|
||||
//SqlDataReader rgetUser = getUser.ExecuteReader();
|
||||
//rgetUser.Read();
|
||||
////string fio = rgetUser["fio"].ToString();
|
||||
//int choosenTrack = Convert.ToInt32(rgetUser["track"]);
|
||||
//int height = Convert.ToInt32(rgetUser["height"]);
|
||||
//int weight = Convert.ToInt32(rgetUser["weight"]);
|
||||
//int gender = Convert.ToInt32(rgetUser["gender"]); // 1 - М / 2 - Ж
|
||||
//var birthday = DateTime.Parse(rgetUser["birthday"].ToString());
|
||||
//var activityCoef = Convert.ToDouble(rgetUser["activityCoef"]);
|
||||
//List<int> sportDays = JsonConvert.DeserializeObject<List<int>>(rgetUser["sportDays"].ToString());
|
||||
//rgetUser.Close();
|
||||
|
||||
//age = (DateTime.Today.Year - birthday.Year);
|
||||
|
||||
if ((DateTime.Now.Month >= user.birthday.Month) && (DateTime.Now.Day >= user.birthday.Day))
|
||||
age = DateTime.Now.Year - user.birthday.Year;
|
||||
else
|
||||
age = DateTime.Now.Year - user.birthday.Year - 1;
|
||||
|
||||
#region ccalCalculator
|
||||
Dictionary<int, string> days = new Dictionary<int, string>(7);
|
||||
days.Add(1, "Понедельник");
|
||||
days.Add(2, "Вторник");
|
||||
days.Add(3, "Среда");
|
||||
days.Add(4, "Четверг");
|
||||
days.Add(5, "Пятница");
|
||||
days.Add(6, "Суббота");
|
||||
days.Add(7, "Воскресенье");
|
||||
|
||||
Dictionary<int, string> gend = new Dictionary<int, string>(3);
|
||||
gend.Add(0, "Мужской");
|
||||
gend.Add(1, "Мужской");
|
||||
gend.Add(2, "Женский");
|
||||
|
||||
int curDay = (int)DateTime.Now.DayOfWeek;
|
||||
if (curDay == 0) curDay = 7;
|
||||
|
||||
if (user.weight == 0 || user.height == 0)
|
||||
{
|
||||
keyboardBuilder
|
||||
.AddButton("📝Редактировать данные", "selectEditData-0", KeyboardButtonColor.Primary)
|
||||
.AddLine()
|
||||
.AddButton("Назад", "startPL", KeyboardButtonColor.Default);
|
||||
|
||||
@params.Message = "Не хватает данных о росте/весе.\n" +
|
||||
"Нажмите \"📝Редактировать данные\" и заполните показатели.";
|
||||
|
||||
@params.Keyboard = keyboardBuilder.Build();
|
||||
@params.UserId = chatId;
|
||||
@params.RandomId = GetRandomId();
|
||||
client.Messages.SendAsync(@params);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (user.gender == 1)
|
||||
{
|
||||
genderCoef = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
genderCoef = -161;
|
||||
}
|
||||
switch (track)
|
||||
{
|
||||
case 1: //не изменяя веса
|
||||
colorPercent = 1;
|
||||
break;
|
||||
case 2:
|
||||
colorPercent = 0.75; //1 - 15%
|
||||
break;
|
||||
case 3:
|
||||
colorPercent = 1.2; //1 - 15%
|
||||
break;
|
||||
default:
|
||||
colorPercent = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 1; i <= 7; i++)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 2:
|
||||
dayCoef = 0.8;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
dayCoef = 1.2;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
dayCoef = 0.9;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
dayCoef = 1.1;
|
||||
break;
|
||||
|
||||
default:
|
||||
dayCoef = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
kkalResult = Math.Round((((10 * user.weight) + (6.25 * user.height) - (5 * age) + genderCoef) * user.activityCoef) * colorPercent * dayCoef);
|
||||
kkalResultHigh = Math.Round(kkalResult * 1.2);
|
||||
kkalResultLow = Math.Round(kkalResult * 0.9);
|
||||
|
||||
if (i == curDay)
|
||||
{
|
||||
//@params.Message += $"⭐ {days[i]}: {kkalResultLow}-{kkalResultHigh} ккал\n";
|
||||
curDayKkal = kkalResult;
|
||||
}
|
||||
//else
|
||||
//@params.Message += $"{days[i]}: {kkalResultLow}-{kkalResultHigh} ккал\n";
|
||||
}
|
||||
#endregion ccalCalculator
|
||||
double belki_opt = 0;
|
||||
double zhiry_opt = 0;
|
||||
double uglevody_opt = 0;
|
||||
|
||||
switch (track)
|
||||
{
|
||||
case 1:
|
||||
//Распределение объема пищи в течение дня должно быть следующим: завтрак – 20-30%, обед – 30-40%, полдник – 5-10%, ужин – 20-30%.
|
||||
//В рационе питания должно быть на килограмм массы тела: белков 1,4-2,0 грамма, жиров 1,0-1,1 грамма и углеводов 2,4-3,0 грамма.
|
||||
@params.Message =
|
||||
"Примерное меню" +
|
||||
"\n\n" +
|
||||
$"Пол: {gend[user.gender]} | Возраст: {age}\n" +
|
||||
$"Рост: {user.height} см | Масса тела: {user.weight} кг\n\n" +
|
||||
//"Активность: низкая (1-3 тренировки в неделю)\n" +
|
||||
$"Рекомендуемая норма КБЖУ:\n" +
|
||||
$"Калории {curDayKkal*0.9} - {curDayKkal*1.2}\n" +
|
||||
$"Белки {user.weight *1.4}-{user.weight *2} грамм\n" +
|
||||
$"Жиры {user.weight}-{user.weight *1.1} грамм\n" +
|
||||
$"Углеводы {user.weight *2.4}-{user.weight *3} грамм\n\n" +
|
||||
$"Завтрак (Максимальное количество калорий {curDayKkal*0.3})\n" +
|
||||
$"Белки – {user.weight * 2 * 0.3}, Жиры - {user.weight * 1.1 * 0.3}, Углеводы – {user.weight *3 * 0.3}.\n" +
|
||||
$"Рисовая каша на молоке 310 грамм, яблоко 340 грамм, черный кофе без сахара 400 грамм\n\n" +
|
||||
$"Обед (Максимальное количество калорий {curDayKkal * 0.4})\n" +
|
||||
$"Белки – {user.weight * 2 * 0.4}, Жиры - {user.weight * 1.1 * 0.4}, Углеводы – {user.weight * 3 * 0.4}.\n" +
|
||||
$"Борщ 380 грамм, бифштекс классический 90 грамм, картофельное пюре 120 грамм, винегрет 140 грамм, морс 220 грамм\n\n" +
|
||||
$"Полдник (Максимальное количество калорий {curDayKkal * 0.1})\n" +
|
||||
$"Белки – {user.weight * 2 * 0.1}, Жиры - {user.weight * 1.1 * 0.1}, Углеводы – {user.weight * 3 * 0.1}.\n" +
|
||||
$"Творожная запеканка 130 грамм, сметана 20% 10 грамм, яйцо 80 грамм, апельсиновый сок 270 грамм\n\n" +
|
||||
$"Ужин (Максимальное количество калорий {curDayKkal * 0.2})\n" +
|
||||
$"Белки – {user.weight * 2 * 0.2}, Жиры - {user.weight * 1.1 * 0.2}, Углеводы – {user.weight * 3 * 0.2}.\n" +
|
||||
$"Минтай отварной 290 грамм, рис белый вареный 80 грамм, салат из белокочанной капусты с морковью 120 грамм, чай зеленый без сахара 150 грамм\n" +
|
||||
$"\n" +
|
||||
//$"Всего: Калории 2083, Белки 124, Жиры 75, Углеводы 208\n\n" +
|
||||
$"Блюда, рекомендованные для оптимизации питания, в комбинате общественного питания промаркированы зеленым цветом." +
|
||||
$"\n\n" +
|
||||
$"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//Распределение объема пищи в течение дня должно быть следующим: завтрак – 20-30%, обед – 30-40%, полдник – 5-10%, ужин – 20-30%, второй завтрак (5-10%) и второй ужин (до 5%).
|
||||
//В рационе питания должно быть на килограмм массы тела: белков 1,2 - 1,7 грамма, жиров 0,9 - 1,0 грамма и углеводов 2,0 - 2,6 грамма.
|
||||
@params.Message =
|
||||
"Примерное меню" +
|
||||
"\n\n" +
|
||||
$"Пол: {gend[user.gender]} | Возраст: {age}\n" +
|
||||
$"Рост: {user.height} см | Масса тела: {user.weight} кг\n\n" +
|
||||
//"Активность: низкая (1-3 тренировки в неделю)\n" +
|
||||
$"Рекомендуемая норма КБЖУ:\n" +
|
||||
$"Калории {curDayKkal * 0.9} - {curDayKkal * 1.2}\n" +
|
||||
$"Белки {user.weight * 1.2}-{user.weight * 1.7} грамм\n" +
|
||||
$"Жиры {user.weight *0.9}-{user.weight} грамм\n" +
|
||||
$"Углеводы {user.weight * 2}-{user.weight * 2.6} грамм\n\n" +
|
||||
$"Первый завтрак (Максимальное количество калорий {curDayKkal * 0.3})\n" +
|
||||
$"Белки – {user.weight * 1.7 * 0.3}, Жиры - {user.weight * 0.3}, Углеводы – {user.weight * 2.6 * 0.3}.\n" +
|
||||
$"Омлет 230 грамм, яблоко 300 грамм, черный кофе без сахара 400 грамм\n" +
|
||||
$"Второй завтрак (Максимальное количество калорий {curDayKkal * 0.1}) " +
|
||||
$"Белки – {user.weight * 1.7 * 0.3}, Жиры - {user.weight * 0.3}, Углеводы – {user.weight * 2.6 * 0.3}.\n" +
|
||||
$"Сырники 110 грамм, сметана 20% 10 грамм, яйцо 70 грамм, апельсиновый сок 240 грамм\n\n" +
|
||||
$"Обед (Максимальное количество калорий {curDayKkal * 0.4})\n" +
|
||||
$"Белки – {user.weight * 1.7 * 0.4}, Жиры - {user.weight * 0.4}, Углеводы – {user.weight * 2.6 * 0.4}.\n" +
|
||||
$"Борщ 340 грамм, семга стейк на гриле 120 грамм, рис белый вареный 80 грамм, салат из белокочанной капусты с морковью 180 грамм, хлеб зерновой 25 грамм, морс 200 грамм\n\n" +
|
||||
$"Полдник (Максимальное количество калорий {curDayKkal * 0.05})\n" +
|
||||
$"Белки – {user.weight * 1.7 * 0.1}, Жиры - {user.weight * 0.1}, Углеводы – {user.weight * 2.6 * 0.1}.\n" +
|
||||
$"Творожная запеканка 130 грамм, сметана 20% 10 грамм, яйцо 80 грамм, апельсиновый сок 270 грамм\n\n" +
|
||||
$"Ужин (Максимальное количество калорий {curDayKkal * 0.3})\n" +
|
||||
$"Белки – {user.weight * 1.7 * 0.2}, Жиры - {user.weight * 0.2}, Углеводы – {user.weight * 2.6 * 0.2}.\n" +
|
||||
"Говядина вареная 80 грамм, картофель вареный 90 грамм, салат цезарь с креветками 80 грамм, хлеб зерновой 25 грамм, чай черный без сахара 150 грамм\n\n" +
|
||||
//"Всего: Калории 1904, Белки 101, Жиры 78, Углеводы 170" +
|
||||
//"\n\n" +
|
||||
"Блюда, рекомендованные для оптимизации питания, в комбинате общественного питания промаркированы зеленым цветом." +
|
||||
"\n\n" +
|
||||
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
break;
|
||||
|
||||
case 3:
|
||||
@params.Message =
|
||||
"Примерное меню" +
|
||||
"\n\n" +
|
||||
$"Пол: {gend[user.gender]} | Возраст: {age}\n" +
|
||||
$"Рост: {user.height} см | Масса тела: {user.weight} кг\n\n" +
|
||||
//"Активность: низкая (1-3 тренировки в неделю)\n" +
|
||||
"Рекомендуемая норма КБЖУ: Калории 2474-2824 Белки 112-156 грамм, Жиры 77-84 грамм, Углеводы 196-238 грамм\n" +
|
||||
"Первый завтрак (Максимальное количество калорий 677) Калории - 554, Белки – 24, Жиры -24, Углеводы – 60.\n" +
|
||||
"Рисовая каша на молоке 370 грамм, яйцо 120 грамм, черный кофе без сахара 400 грамм\n" +
|
||||
"Второй завтрак (Максимальное количество калорий 649) Калории - 618, Белки - 35, Жиры - 19, Углеводы – 70\n" +
|
||||
"Сырники 240 грамм, сметана 20% 10 грамм, апельсиновый сок 320 грамм\n" +
|
||||
"Обед (Максимальное количество калорий 931) Калории - 837, Белки - 41, Жиры - 35, Углеводы - 84\n" +
|
||||
"Борщ 400 грамм, стейк из филе куриного 120 грамм, гречневая каша 80 грамм, кетчуп 30 грамм, салат овощной 350 грамм, чай черный без сахара 150 грамм\n" +
|
||||
"Ужин (Максимальное количество калорий 564) Калории - 447, Белки - 65, Жиры - 7, Углеводы – 25\n" +
|
||||
"Треска отварная 350 грамм, рис белый вареный 90 грамм, салат греческий 80 грамм, чай зеленый 150 грамм\n" +
|
||||
"\n" +
|
||||
"Всего: Калории 2456, Белки 165, Жиры 85, Углеводы 239" +
|
||||
"\n\n" +
|
||||
"Блюда, рекомендованные для оптимизации питания, в комбинате общественного питания промаркированы зеленым цветом." +
|
||||
"\n\n" +
|
||||
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
break;
|
||||
}
|
||||
|
||||
if (track != 4 && user.track == 0)
|
||||
{
|
||||
keyboardBuilder
|
||||
.AddButton(colors[track] + "Выбрать этот трек", "selectChooseTrack-" + track, KeyboardButtonColor.Positive)
|
||||
.AddLine()
|
||||
.AddButton("Рацион питания", "selectRation-" + track, KeyboardButtonColor.Primary)
|
||||
//.AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
|
||||
.AddLine()
|
||||
.AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
|
||||
.AddLine()
|
||||
.AddButton("Назад", "selectTrack-" + track, KeyboardButtonColor.Default);
|
||||
}
|
||||
else if (track != 0 && user.track != 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 = "‼Ошибка в SelectExampleMenuCommand: " + ee.Message;
|
||||
@params.Attachments = null;
|
||||
@params.Keyboard = null;
|
||||
@params.UserId = 59111081;
|
||||
@params.RandomId = GetRandomId();
|
||||
client.Messages.SendAsync(@params);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
197
SvetoforVKBot/Models/Commands/LK/Tracks/SelectRationCommand.cs
Normal file
197
SvetoforVKBot/Models/Commands/LK/Tracks/SelectRationCommand.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
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 SelectRationCommand : Command
|
||||
{
|
||||
public override string Name => "{\"button\":\"selectRation-";
|
||||
|
||||
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, "Персональный режим");
|
||||
|
||||
var user = db.Users.Single(usr => usr.chatId == chatId);
|
||||
|
||||
switch (track)
|
||||
{
|
||||
case 1:
|
||||
@params.Message =
|
||||
"Необходимо свести к минимуму в рационе питания:" +
|
||||
"\n" +
|
||||
"• жирное мясо;\n" +
|
||||
"• майонез, сливочные соусы;\n" +
|
||||
"• консервы и соления;\n" +
|
||||
"• копчености;\n" +
|
||||
"• фастфуд;\n" +
|
||||
"• белый хлеб и выпечку;\n" +
|
||||
"• кондитерские изделия;\n" +
|
||||
"• пакетированные соки;\n" +
|
||||
"• газированную воду;\n" +
|
||||
"• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
|
||||
"\n\n" +
|
||||
"Как можно чаще на столе должны быть:" +
|
||||
"\n" +
|
||||
"• свежие фрукты и овощи,\n" +
|
||||
"• молочные продукты,\n" +
|
||||
"• цельнозерновой хлеб,\n" +
|
||||
"• белое мясо,\n" +
|
||||
"• рыба и морепродукты,\n" +
|
||||
"• каши,\n" +
|
||||
"• свежевыжатые соки,\n" +
|
||||
"• орехи и семечки, \n" +
|
||||
"• сухофрукты,\n" +
|
||||
"• яйца,\n" +
|
||||
"• твердый сыр,\n" +
|
||||
"• растительные масла (оливковое, льняное и т.д.)" +
|
||||
"\n\n" +
|
||||
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@params.Message =
|
||||
"Необходимо свести к минимуму в рационе питания:" +
|
||||
"\n" +
|
||||
"• жирное мясо;\n" +
|
||||
"• майонез, сливочные соусы;\n" +
|
||||
"• консервы и соления;\n" +
|
||||
"• копчености;\n" +
|
||||
"• фастфуд;\n" +
|
||||
"• белый хлеб и выпечку;\n" +
|
||||
"• кондитерские изделия;\n" +
|
||||
"• пакетированные соки;\n" +
|
||||
"• газированную воду;\n" +
|
||||
"• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
|
||||
"\n\n" +
|
||||
"Как можно чаще на столе должны быть:" +
|
||||
"\n" +
|
||||
"• свежие фрукты и овощи,\n" +
|
||||
"• молочные продукты,\n" +
|
||||
"• цельнозерновой хлеб,\n" +
|
||||
"• белое мясо,\n" +
|
||||
"• рыба и морепродукты,\n" +
|
||||
"• каши,\n" +
|
||||
"• свежевыжатые соки,\n" +
|
||||
"• орехи и семечки, \n" +
|
||||
"• сухофрукты,\n" +
|
||||
"• яйца,\n" +
|
||||
"• твердый сыр,\n" +
|
||||
"• растительные масла (оливковое, льняное и т.д.)" +
|
||||
"\n\n" +
|
||||
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
@params.Message =
|
||||
"Необходимо свести к минимуму в рационе питания:" +
|
||||
"\n" +
|
||||
"• жирное мясо;\n" +
|
||||
"• майонез, сливочные соусы;\n" +
|
||||
"• консервы и соления;\n" +
|
||||
"• копчености;\n" +
|
||||
"• фастфуд;\n" +
|
||||
"• белый хлеб и выпечку;\n" +
|
||||
"• кондитерские изделия;\n" +
|
||||
"• пакетированные соки;\n" +
|
||||
"• газированную воду;\n" +
|
||||
"• лакомства из пакетов (чипсы, снеки, сухарики с добавками). " +
|
||||
"\n\n" +
|
||||
"Как можно чаще на столе должны быть:" +
|
||||
"\n" +
|
||||
"• свежие фрукты и овощи,\n" +
|
||||
"• молочные продукты,\n" +
|
||||
"• цельнозерновой хлеб,\n" +
|
||||
"• белое мясо,\n" +
|
||||
"• рыба и морепродукты,\n" +
|
||||
"• каши,\n" +
|
||||
"• свежевыжатые соки,\n" +
|
||||
"• орехи и семечки, \n" +
|
||||
"• сухофрукты,\n" +
|
||||
"• яйца,\n" +
|
||||
"• твердый сыр,\n" +
|
||||
"• растительные масла (оливковое, льняное и т.д.)" +
|
||||
"\n\n" +
|
||||
"Если Вас не устраивает данный рацион и Вам необходима индивидуальная консультация специалиста, то выберете трек \"Персональный режим\"";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (track != 4 && user.track == 0)
|
||||
{
|
||||
keyboardBuilder
|
||||
.AddButton(colors[track] + "Выбрать этот трек", "selectChooseTrack-" + track, KeyboardButtonColor.Positive)
|
||||
.AddLine()
|
||||
.AddButton("Примерное меню", "selectExampleMenu-" + track, KeyboardButtonColor.Primary)
|
||||
.AddLine()
|
||||
.AddButton("Персональный режим", "selectTrack-4", KeyboardButtonColor.Primary)
|
||||
.AddLine()
|
||||
.AddButton("Назад", "selectTrack-" + track, KeyboardButtonColor.Default);
|
||||
}
|
||||
else if (track != 0 && user.track != 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 = "‼Ошибка в SelectRationCommand: " + ee.Message;
|
||||
@params.Attachments = null;
|
||||
@params.Keyboard = null;
|
||||
@params.UserId = 59111081;
|
||||
@params.RandomId = GetRandomId();
|
||||
client.Messages.SendAsync(@params);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
199
SvetoforVKBot/Models/Commands/LK/Tracks/SelectTrackCommand.cs
Normal file
199
SvetoforVKBot/Models/Commands/LK/Tracks/SelectTrackCommand.cs
Normal file
@@ -0,0 +1,199 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user