Добавьте файлы проекта.

This commit is contained in:
Daria
2021-10-19 06:04:52 +03:00
parent 6ee25d0f59
commit eab3081ec2
187 changed files with 100839 additions and 0 deletions

View File

@@ -0,0 +1,220 @@
using Newtonsoft.Json;
using SvetoforVKBot.Models.Updates;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.SqlClient;
using System.Linq;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using VkNet;
using VkNet.Enums.SafetyEnums;
using VkNet.Model.Attachments;
using VkNet.Model.Keyboard;
using VkNet.Model.RequestParams;
namespace SvetoforVKBot.Models.Commands.Admin
{
public class SelectTestNotifyCommand : Command
{
public override string Name => "/test";
public override void Execute(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
{
var chatId = update.@object.message.from_id;
MessagesSendParams @params = new MessagesSendParams();
var keyboardBuilder = new KeyboardBuilder().Clear();
List<UserObject> users = new List<UserObject>();
List<int> chatIds = new List<int>();
string name = "";
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
{
Dictionary<int, string> tracks = new Dictionary<int, string>(7);
tracks.Add(1, "Оптимизация питания");
tracks.Add(2, "Снижение жировой массы");
tracks.Add(3, "Увеличение мышечной массы");
tracks.Add(4, "Персональный режим");
//-- Вот этот запрос лучше сработает на стороне
db.Database.ExecuteSqlCommand("UPDATE Users SET choosenProducts = @choosenProducts, cart = @cart;",
new object[] {
new SqlParameter("@choosenProducts", "[]"),
new SqlParameter("@cart", "{\"orders\":[]}")
});
//--
var user = db.Users.Single(usr => usr.chatId == 59111081);
int id = user.id;
string fio = user.fio;
var birthday = user.birthday;
var jsPhones = JsonConvert.DeserializeObject<List<string>>(user.phone);
int choosenTrack = user.track;
int height = user.height;
int weight = user.weight;
int gender = user.gender; // 1 - М / 2 - Ж
var activityCoef = user.activityCoef;
//--
if ((DateTime.Now.Month >= birthday.Month) && (DateTime.Now.Day >= birthday.Day))
age = DateTime.Now.Year - birthday.Year;
else
age = DateTime.Now.Year - 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;
int nextDay = curDay + 1;
if (nextDay == 8)
nextDay = 1;
//if (weight == 0 || 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 (gender == 1)
{
genderCoef = 5;
}
else
{
genderCoef = -161;
}
switch (choosenTrack)
{
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 * weight) + (6.25 * height) - (5 * age) + genderCoef) * activityCoef) * colorPercent * dayCoef);
kkalResultHigh = Math.Round(kkalResult * 1.2);
kkalResultLow = Math.Round(kkalResult * 0.9);
//if (i == nextDay)
if (i == curDay)
{
curDayKkal = kkalResult;
}
}
#endregion ccalCalculator
//-- неожиданно пришлось преобразовывать типы данных к инту от double)
var curChatIdUser = db.Users.Single(usr => usr.chatId == chatId);
curChatIdUser.kkal = Convert.ToInt32(curDayKkal);
db.SaveChanges();
//@params.Message = "🌙Добрый вечер!\n" +
// $"Ваша норма калорий на завтра: {Math.Round(curDayKkal * 0.9)} - {Math.Round(curDayKkal * 1.2)}\n" +
// "Мы подготовили для Вас блюда👇🏻";
@params.Message = "☀Доброе утро!\n" +
$"Ваша норма калорий на сегодня: {Math.Round(curDayKkal * 0.9)} - {Math.Round(curDayKkal * 1.2)}\n" +
"Мы подготовили для Вас блюда👇🏻\n\n" +
"Меню также доступно в Личном кабинете в разделе \"Дневной рацион\"";
keyboardBuilder
.AddButton($"Завтрак (до {Math.Round(curDayKkal * 1.2 * 0.3)} ккал)", "selectPersonalMenu-1-" + Math.Round(curDayKkal), KeyboardButtonColor.Primary)
.AddLine()
.AddButton($"Обед (до {Math.Round(curDayKkal * 1.2 * 0.4)} ккал)", "selectPersonalMenu-2-" + Math.Round(curDayKkal), KeyboardButtonColor.Primary)
.AddLine()
.AddButton($"Перекус (до {Math.Round(curDayKkal * 1.2 * 0.1)} ккал)", "selectPersonalMenu-3-" + Math.Round(curDayKkal), KeyboardButtonColor.Primary)
.AddLine()
.AddButton($"Ужин (до {Math.Round(curDayKkal * 1.2 * 0.3)} ккал)", "selectPersonalMenu-4-" + Math.Round(curDayKkal), KeyboardButtonColor.Primary)
.AddLine()
.AddButton("Личный кабинет", "startPL", KeyboardButtonColor.Default)
.SetInline();
@params.Keyboard = keyboardBuilder.Build();
@params.UserId = 59111081; //10160301;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
catch (Exception ee)
{
@params.Message = "Ошибка в SelectTestNotifyCommand: " + ee.Message;
@params.Attachments = null;
@params.Keyboard = null;
@params.UserId = 59111081;
@params.RandomId = GetRandomId();
client.Messages.SendAsync(@params);
}
}
public override void ExecutePL(RootObject update, VkApi client, SvetoforVKBot.Data.SvetoforVKBotEntities db)
{
}
}
}