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 Newtonsoft.Json; using VkNet.Enums.Filters; using VkNet.Model.Attachments; using System.Collections.Generic; using System.Threading; using SvetoforVKBot.Models.Dop; using SvetoforVKBot.Models.Commands.LK; using SvetoforVKBot.Models.Commands.LK.SportsLK; using System.Collections.ObjectModel; using System.Linq; namespace SvetoforVKBot.Models.Commands { public class StartCommand : Command { public override string Name => "Начать"; 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(); string tag = ""; string utm = ""; try { var ids = new long[] { chatId }; var user = client.Users.Get(ids, ProfileFields.Sex); var gender = Convert.ToInt32(user[0].Sex); var listButtons = new List>(); Uri URL = new Uri("https://www.vyatsu.ru/"); #region UTM /* utm = update.@object.message.@ref; if (utm != "" && utm != null) { if (int.TryParse(utm, out int refer)) { if (refer != chatId) { int referId = 1; //Проверяем приглашали ли этого пользователя раннее getUser = new SqlCommand("SELECT referId FROM Users WHERE chatId = @chatId;", Con); getUser.Parameters.AddWithValue("@chatId", chatId); rgetUser = getUser.ExecuteReader(); rgetUser.Read(); int uReferId = Convert.ToInt32(rgetUser["referId"]); rgetUser.Close(); if (uReferId == 0) // 0 - не приглашали { //Ищем пользователя, который пригласил SqlCommand getRefer = new SqlCommand("SELECT chatId FROM Users WHERE chatId = @refer;", Con); getRefer.Parameters.AddWithValue("@refer", refer); SqlDataReader rgetRefer = getRefer.ExecuteReader(); if (rgetRefer.HasRows) // если пользователь существует { rgetRefer.Close(); SqlCommand updReferId = new SqlCommand("UPDATE Users SET referId = @referId WHERE chatId = @chatId;", Con); updReferId.Parameters.AddWithValue("@chatId", chatId); updReferId.Parameters.AddWithValue("@referId", refer); updReferId.ExecuteNonQuery(); selectQuestRoom.ExecutePL(update, client, Con); return; } else rgetRefer.Close(); } else { selectQuestRoom.ExecutePL(update, client, Con); return; } } else { selectQuestRoom.ExecutePL(update, client, Con); return; } } SourceUpdate sourceUpdate = new SourceUpdate(); sourceUpdate.Execute(update, client, Con); switch (utm) { case "afisha": SelectEventsCommand selectEvents = new SelectEventsCommand(); selectEvents.ExecutePL(update, client, Con); return; case "quest": selectQuestRoom.ExecutePL(update, client, Con); return; case "project": SelectProjectOfficeCommand selectProjectOffice = new SelectProjectOfficeCommand(); selectProjectOffice.ExecutePL(update, client, Con); return; case "faq": SelectOSCommand selectOS = new SelectOSCommand(); selectOS.ExecutePL(update, client, Con); return; } } */ #endregion UTM var getUser = db.Users.Single(usr => usr.chatId == chatId); int reg = getUser.reg; int admin = getUser.admin; int activityKind = getUser.activityKind; getUser.tag = "Старт"; db.SaveChanges(); switch (reg) { case 1: if (activityKind == 2 || activityKind == 3) { ShowLKCommand showLK = new ShowLKCommand(); showLK.Execute(update, client, db); } else // спортсмены { ShowLKCommand showLK = new ShowLKCommand(); showLK.Execute(update, client, db); //ShowSportsLKCommand showSportsLK = new ShowSportsLKCommand(); //showSportsLK.Execute(update, client, Con); } return; default: @params.Message = "Добрый день, " + user[0].FirstName + "!" + "\n\n" + "🍏Проект \"Здоровое питание\" – это доступная возможность для каждого студента, сотрудника и любого желающего " + "улучшить свою жизнь, здоровье и самочувствие." + "\n\n" + "👉🏻Проект направлен на формирование культуры правильного питания, мотивации к регулярным занятиям физическими упражнениями. " + "Для участников проекта разработано меню правильного питания, будет осуществляться исследование морфофункционального " + "состояния участников, разрабатываться комплекс физических упражнений." + "\n\n" + "💬Участники проекта будут обеспечены консультационной поддержкой от организаторов."; //keyboardBuilder // .AddButton("🚦Принять участие", "selectAgreement", KeyboardButtonColor.Positive); //✅ selectAgreement //.AddLine() var row2 = new List() { new MessageKeyboardButton() { Action = new MessageKeyboardButtonAction(){ Label = "🚦Принять участие", Payload = "{\"button\":\"selectParticipate\"}", //selectAgreement Type = KeyboardButtonActionType.Text}, Color = KeyboardButtonColor.Positive } }; listButtons.Add(new ReadOnlyCollection(row2)); //.AddButton("❔Вопросы и ответы", "selectInProgress", KeyboardButtonColor.Primary); //var row = new List() //{ // new MessageKeyboardButton() { // Action = new MessageKeyboardButtonAction(){ // Type = KeyboardButtonActionType.OpenLink, // Link = URL, // Label = "Узнать подробнее", // Payload = "{\"button\":\"selectOpenSheet\"}" // }, // } //}; //listButtons.Add(new ReadOnlyCollection(row)); if (chatId == 59111081 || chatId == 10160301 || chatId == 369217524 || chatId == 178385801) { var row3 = new List() { new MessageKeyboardButton() { Action = new MessageKeyboardButtonAction(){ Type = KeyboardButtonActionType.Text, Label = "Администратору", Payload = "{\"button\":\"selectAdminMenu\"}" }, Color = KeyboardButtonColor.Default } }; listButtons.Add(new ReadOnlyCollection(row3)); //keyboardBuilder // .AddLine() // .AddButton("Администратору", "selectAdminMenu", KeyboardButtonColor.Default); } var buttons = new ReadOnlyCollection>(listButtons); var keyboard = new MessageKeyboard() { Buttons = buttons, OneTime = false }; @params.Keyboard = keyboard; @params.UserId = chatId; @params.RandomId = GetRandomId(); client.Messages.SendAsync(@params); return; } } catch (Exception ee) { @params.Message = "‼Ошибка в StartCommand: " + 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) { } } }