private async Task <Teachers> ConfirmTeacherPasswordAsync(string key) { if (await GoogleSpreadsheetController.ConnectToSheetsAsync() == true) { GoogleSpreadsheetController.TeacherInformation teacherInformation = new GoogleSpreadsheetController.TeacherInformation(); var datas = await teacherInformation.GetSheetDataAsync(). ContinueWith <IList <IList <object> > >(t => teacherInformation.GetTeacherInformation().Result); foreach (var data in datas) { if (data.Count == 4 && key == data[1].ToString()) { var teacher = new Teachers() { FullName = data[2].ToString(), Subjects = data[3].ToString() }; return(teacher); } } User.TypeUser = await ConfirmUserRoleAsync(key); if (User.TypeUser != null && User.TypeUser == TypeUser.Pupil.ToString()) // if pupil { User.State = RegistrationStateMachine.EnterName.ToString(); await BalDbController.ChangeUserStateAsync(User.State, User.ChatId) .ContinueWith(_ => BalDbController.AddPupilAsync(User.ChatId).Wait()) .ContinueWith(_ => BalDbController.UpdateUserDataAsync(User).Wait()); } } return(null); }
public static async Task <string[]> GenerateLessonMessage(UserInfo user, GoogleSpreadsheetController.SchedulerSheet schedulerSheet, ISchedulerController scheduler, string day, int lesson) { await schedulerSheet.GetSheetDataAsync(); var formattingData = await scheduler.FormatingDataFromGSAsync(scheduler : await schedulerSheet.GetScheduler()); string answer = " Невдалось знайти урок."; string callBackData = default; if (user.TypeUser == TypeUser.Teacher.ToString()) { var teacherInfo = await BalDbController.GetTeacherInformationAsync(user.ChatId); var schedulerDay = await scheduler.GetConcreteDayInformationAsync( scheduler : await scheduler.GetConcreteWeekInformationAsync(teacherInfo.Teachers.First().FullName), dayOfWeek : day); string title = $"{new SendPupilsMessage().Name}{lesson} урок у {ConverteEngMonthToUkr(day, LanguageCases.Rodovyy).Result}:\n"; int pointLesson = lesson * 3; string @class = schedulerDay[pointLesson]; callBackData = @class; string subject = schedulerDay[pointLesson + 1]; string classRoom = schedulerDay[pointLesson + 2]; string timeLesson = timeLessons[lesson]; string body = $"🕐 Час: {timeLesson}\n" + $"📚 Предмет: {subject}\n" + $"💡 Клас: {@class}\n" + $"🏴 Кабінет: {classRoom}\n"; answer = title + body; } if (user.TypeUser == TypeUser.Pupil.ToString()) { var pupilInfo = await BalDbController.GetPupilInformationAsync(user.ChatId); var schedulerDay = await scheduler.GetConcreteDayInformationAsync( scheduler : await scheduler.GetConcreteWeekInformationAsync(pupilInfo.Pupils.First().Class), dayOfWeek : day); string title = $"{new SendTeacherMessage().Name}{lesson} урок у {ConverteEngMonthToUkr(day, LanguageCases.Rodovyy).Result}:\n"; int pointLesson = lesson * 3; string subject = schedulerDay[pointLesson]; string nameTeacher = schedulerDay[pointLesson + 1]; callBackData = nameTeacher; string classRoom = schedulerDay[pointLesson + 2]; string timeLesson = timeLessons[lesson]; string body = $"🕐 Час: {timeLesson}\n" + $"📚 Предмет: {subject}\n" + $"💡 Вчитель: {nameTeacher}\n" + $"🏴 Кабінет: {classRoom}\n"; answer = title + body; } return(new[] { answer, callBackData }); }
public override async Task <dynamic> Execute(Message message, TelegramBotClient client, UserInfo userInformation) { userInformation.TypeUser = TypeUser.Guest.ToString(); userInformation.State = RegistrationStateMachine.None.ToString(); await BalDbController.UpdateUserDataAsync(userInformation); await client.SendTextMessageAsync(userInformation.ChatId, text : $"Ви увійшли як гість. Щоб зареєструватись - відправте команду {RegistrationCommandText}", replyMarkup : new ReplyKeyboardRemove()); await Task.Run(() => new MainMenuCommand().Execute(null, client, userInformation)); // go to main menu return(true); }
internal override async Task Execute(CallbackQuery message, TelegramBotClient client, UserInfo userInformation) { if (message.Data is null) { return; } var pupils = await BalDbController.GetPupilsAsync(message.Data); string responceMessage; if (pupils is null || pupils.Count < 1) { responceMessage = $"Повідомленя неможливо надіслати *{message.Data}* класу. Жоден учень не зареєстрований у системі."; }
public override async Task <dynamic> Execute(Message message, TelegramBotClient botClient, UserInfo userInformation) { if (userInformation != null) { if (userInformation.IsRegistred == true || userInformation.TypeUser == TypeUser.Guest.ToString()) // Main Menu { await Task.Run(() => new MainMenuCommand().Execute(null, botClient, userInformation)); // go to main menu return(true); } } else // Hello start message && Create data user in db { await botClient.SendTextMessageAsync(message.Chat.Id, text : "Привіт! Я радий, що ти вирішив мене запустити 🙂 Через декілька секунд я почну тобі допомогати. Зачекай будь ласка ⏳", parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : new ReplyKeyboardRemove()); await BalDbController.CreateUserInDbAsync(new UserInfo() { ChatId = message.Chat.Id, NameTelegram = message.Chat.FirstName + " " + message.Chat.LastName }); } // Start- State Machine Registration ReplyKeyboardMarkup registrationKeyboard = new ReplyKeyboardMarkup(new List <KeyboardButton>() { new KeyboardButton() { Text = RegistartionButtonText }, new KeyboardButton() { Text = LoginGuestButtonText } }) { ResizeKeyboard = true }; await botClient.SendTextMessageAsync(message.Chat.Id, text : $"Нажаль, не можу знайти Вас у системі. Якщо Ви вже зареєстровані - напишіть адміністратору - {AppSettings.Admin}. Або зареєструйтесь для повноцінного користування ботом 🤖👌", parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : registrationKeyboard); return(true); }
internal override async Task Execute(CallbackQuery message, TelegramBotClient client, UserInfo userInformation) { if (message.Data != null) { Registration_State_Machine.RegistrationState.DecipherRegistartionResult(message.Data, out long pupilChatId, out bool resultRegistration); var user = await BalDbController.GetUserInformationAsync(pupilChatId); if (user.IsRegistred == true) //-V3080 { return; } Registration_State_Machine.RegistrationState registration = new Registration_State_Machine.RegistrationState(client, userInformation) { StateRegistration = Registration_State_Machine.RegistrationStateMachine .WaitingForConfirmation }; string messageCreator = resultRegistration == true ? $"Користувач chatId: {pupilChatId} [{user.NameUser}](tg://user?id={pupilChatId}) додан до системи" : $"Користувачеві chatId: {pupilChatId} [{user.NameUser}](tg://user?id={pupilChatId}) відмовлено"; await client.SendTextMessageAsync(chatId : AppSettings.ChatIdCreator, text : messageCreator, parseMode : ParseMode.Markdown); string messageAdmin = resultRegistration ? $"Користувач: [{user.NameUser}](tg://user?id={pupilChatId}) додан до системи" : $"Користувачеві: [{user.NameUser}](tg://user?id={pupilChatId}) відмовлено"; await client.SendTextMessageAsync(chatId : userInformation.ChatId, text : messageAdmin, ParseMode.Markdown); await registration.HandleStateRegistrationAsync(new Message() { Text = resultRegistration.ToString(), Chat = new Chat() { Id = pupilChatId } }); } }
internal override async Task Execute(CallbackQuery message, TelegramBotClient client, UserInfo userInformation) { if (message.Data is null) { return; } var teacher = await BalDbController.GetTeacherInformationAsync(message.Data); var responceMessage = teacher == null ? $"Повідомленя неможливо надіслати вчителю *{message.Data}*. Вчитель не зареєстрований у системі." : "Введіть текст повідомлення: "; await client.SendTextMessageAsync(chatId : userInformation.ChatId, text : responceMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); userInformation.State = SendMessagesCommand.SendMessageState.FromPupilToTeacher.ToString() + "_" + message.Data; await BalDbController.ChangeUserStateAsync(userInformation.State, userInformation.ChatId); }
public async Task Execute(Message message, TelegramBotClient client, UserInfo user) { if (message is null || client is null || user is null) { return; } string state = user.State.Split("_").First(); string data = user.State.Split("_").Last(); if (state == SendMessageState.FromPupilToClassmates.ToString()) // From pupil to classmates { user = await BalDbController.GetPupilInformationAsync(user.ChatId); var classmates = await BalDbController.GetPupilsAsync(user.Pupils.First().Class); string userMessage = $"Повідомлення від _{user.NameUser}_:\n*{message.Text}*"; if (classmates != null) { foreach (var pupil in classmates) { if (pupil.ChatId == user.ChatId) { await client.SendTextMessageAsync(chatId : user.ChatId, text : "Повідомлення однокласникам надіслано."); continue; } await client.SendTextMessageAsync(pupil.ChatId, text : userMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } } } if (state == SendMessageState.FromTeacherToPupils.ToString()) // From teacher to pupils { var pupils = await BalDbController.GetPupilsAsync(data); string teacherMessage = $"Повідомлення від вчителя _{user.NameUser}_:\n*{message.Text}*"; foreach (var pupil in pupils) { await client.SendTextMessageAsync(chatId : pupil.ChatId, text : teacherMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } await client.SendTextMessageAsync(chatId : user.ChatId, text : $"Ваше повідомлення надіслано _{pupils.Count}_ учням(ю) *{data}* класу.", parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } if (state == SendMessageState.FromPupilToTeacher.ToString()) { var teacher = await BalDbController.GetTeacherInformationAsync(data); user = await BalDbController.GetPupilInformationAsync(user.ChatId); string pupilMessage = $"Повідомлення від учня {user.Pupils.First().Class} класу [{user.NameUser}](tg://user?id={user.ChatId}): *{message.Text}*"; await client.SendTextMessageAsync(chatId : teacher.ChatId, text : pupilMessage, parseMode : ParseMode.Markdown); await client.SendTextMessageAsync(chatId : user.ChatId, text : $"Ваше повідомлення надіслано вчителю _{teacher.NameUser}_", parseMode : ParseMode.Markdown); } await BalDbController.ChangeUserStateAsync(SendMessageState.Sended.ToString(), user.ChatId); }
internal async Task HandleStateRegistrationAsync(Message message) { string userMessage = message.Text; if (StateRegistration == default) { StateRegistration = (RegistrationStateMachine)Enum.Parse(typeof(RegistrationStateMachine), User.State); } switch (StateRegistration) { case RegistrationStateMachine.None: // S-0 { StateRegistration = RegistrationStateMachine.EnterRole; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-1) var answerText = $"Якщо Ви учень ліцею, ведіть пароль, для користуванням ботом. Його можна отримати у класного керівника або написавши адміністратору {AppSettings.Admin}. Якщо Ви вчитель - натисніть кнопку *{TeacherButtonText}* - щоб перейти далі."; await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : answerText, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup : new ReplyKeyboardMarkup(new List <KeyboardButton>() { new KeyboardButton() { Text = TeacherButtonText } }) { ResizeKeyboard = true }); break; } case RegistrationStateMachine.EnterRole: // S-1 // connect to db { if (userMessage == TeacherButtonText) // if Teacher { StateRegistration = RegistrationStateMachine.EnterTeacherPassword; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-2) await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : $@"Адміністратор боту <a href= ""tg://user?id=363574232"">{AppSettings.NameAdmin}</a> надасть Вам унікальний пароль. Зверніться будь ласка до нього.", parseMode : Telegram.Bot.Types.Enums.ParseMode.Html, replyMarkup : new ReplyKeyboardRemove()); return; } // if pupil User.TypeUser = await ConfirmUserRoleAsync(userMessage); // Confirm password from pupil if (User.TypeUser != null) { StateRegistration = RegistrationStateMachine.EnterName; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-2) await BalDbController.AddPupilAsync(User.ChatId) .ContinueWith(_ => BalDbController.UpdateUserDataAsync(User)); await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : $"Вітаємо! Ви успішно авторизувались у системі, як учень ліцею. Як до Вас звертатись? (Напишіть своє прізвище, ім'я, по-батькові українською мовою)", replyMarkup : new ReplyKeyboardRemove()); } else { await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : @"Секретний ключ не підійшов 😢 Спробуйте будь-ласка ще раз 🙂", replyMarkup : new ReplyKeyboardRemove()); } break; } case RegistrationStateMachine.EnterTeacherPassword: // S-2 { if (userMessage == null) { return; } string responceMessage = default; var teacher = await ConfirmTeacherPasswordAsync(userMessage); if (teacher == null) { responceMessage = User.TypeUser == TypeUser.Pupil.ToString() ? $"Вітаємо! Ви успішно авторизувались у системі, як учень ліцею. Як до Вас звертатись? (Напишіть своє прізвище, ім'я, по-батькові українською мовою)" : "Пароль не підійшов. Спробуйте будь ласка ще."; await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : responceMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); return; } responceMessage = $"Вітаємо! Ви зареєструвалися у системі як: *{teacher.FullName}*.\nПредмет, який викладаєте: *{teacher.Subjects}*."; User.NameUser = teacher.FullName; User.TypeUser = TypeUser.Teacher.ToString(); User.Teachers.Add(teacher); if (await BalDbController.AddTeacherAsync(User.ChatId) == true) // if teacher add complete { StateRegistration = RegistrationStateMachine.EnterPhone; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-3) await BalDbController.UpdateUserDataAsync(User); await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : responceMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : $"{User.NameUser} теперь введіть свій телефон або надішліть його", replyMarkup : new ReplyKeyboardMarkup(new KeyboardButton() { Text = SendPhoneButtonText, RequestContact = true }) { ResizeKeyboard = true }); } else { responceMessage = "Вчитель з таким паролем вже зареєстрований у системі."; await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : responceMessage, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } } break; case RegistrationStateMachine.EnterName: // S-3 { User.NameUser = userMessage; StateRegistration = RegistrationStateMachine.EnterPhone; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-4) await BalDbController.UpdateUserDataAsync(User); // Send user name in db await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : $"{User.NameUser} теперь введіть свій телефон або надішліть його", replyMarkup : new ReplyKeyboardMarkup(new KeyboardButton() { Text = SendPhoneButtonText, RequestContact = true }) { ResizeKeyboard = true }); break; } case RegistrationStateMachine.EnterPhone: // S-4 { User.Phone = message.Text ?? message.Contact.PhoneNumber; await BalDbController.UpdateUserDataAsync(User); // Send user phone to db var botMessage = $"Сталася помилка при регістрації. Напишіть адміну -> {AppSettings.Admin}"; IReplyMarkup keyboard = new ReplyKeyboardRemove(); StateRegistration = RegistrationStateMachine.EnterClass; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-5) await BalDbController.UpdateUserDataAsync(User); // Send user name in db if (User.TypeUser == TypeUser.Teacher.ToString()) { botMessage = $"Якщо Ви маєте класне керівництво - введіть будь ласка Ваш клас: (Наприклад *5А* чи *8Г*).\nЯкщо у вас немає класу - натисніть кнопку {NotClassmatesTeacherButtonText}"; keyboard = new ReplyKeyboardMarkup(new KeyboardButton(NotClassmatesTeacherButtonText)) { ResizeKeyboard = true }; } if (User.TypeUser == TypeUser.Pupil.ToString()) { botMessage = @"Введіть клас, в якому навчаєтесь. Пам'ятайте, змінити потім клас буде неможливо! Наприклад: *11А* чи *9Б*"; } await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : botMessage, replyMarkup : keyboard, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); break; } case RegistrationStateMachine.EnterClass: // S-5 { string botMessage = default; // Check correct input class { string pattern = @"^[0-9A-ZА-ЯЁ]{2,3}$"; if (Regex.IsMatch(message.Text, pattern) == false && Regex.IsMatch(message.Text, NotClassmatesTeacherButtonText) == false) { await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : "Неправильно введений клас. Спробуйте ще раз. (_Приклад: 5А, 11Б_)", parseMode : ParseMode.Markdown); return; } } if (User.TypeUser == TypeUser.Teacher.ToString()) // if teacher { User = await BalDbController.GetTeacherInformationAsync(User.ChatId); User.Teachers.First().Class = message.Text == NotClassmatesTeacherButtonText ? "--" : message.Text; string name = $"\nПрізвище, ім'я, по-батькові: *{User.NameUser}*"; string phone = $"\nНомер телефону: *{User.Phone}*"; string subject = $"\nПредмет: *{User.Teachers.First().Subjects}*"; string @class = $"\nКласне керівництво: *{User.Teachers.First().Class}*"; botMessage = $"Будь-ласка перевірте введену інформацію.{name}{phone}{subject}{@class}\nЯкщо вона правильна - натисніть {CorrectInformationUserButtonText}, якщо ні - {InCorrectInformationUserButtonText}"; } if (User.TypeUser == TypeUser.Pupil.ToString()) // if pupil { User.Pupils.Add(new Pupils() { Class = message.Text }); string name = $"\nПрізвище, ім'я, по-батькові: *{User.NameUser}*"; string phone = $"\nНомер телефону: *{User.Phone}*"; string @class = $"\nКлас: *{User.Pupils.First().Class}*"; botMessage = $"Будь-ласка перевірте введену інформацію.{name}{phone}{@class}\nЯкщо вона правильна - натисніть {CorrectInformationUserButtonText}, якщо ні - {InCorrectInformationUserButtonText}"; } await BalDbController.UpdateUserDataAsync(User); StateRegistration = RegistrationStateMachine.CheckInformation; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Next state (s-6) await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : botMessage, replyMarkup : new ReplyKeyboardMarkup(new List <KeyboardButton>() { new KeyboardButton() { Text = CorrectInformationUserButtonText }, new KeyboardButton() { Text = InCorrectInformationUserButtonText } }) { ResizeKeyboard = true }, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); break; } case RegistrationStateMachine.CheckInformation: // S-6 { if (userMessage == CorrectInformationUserButtonText) { StateRegistration = RegistrationStateMachine.WaitingForConfirmation; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); // Check for admin confirm string adminMessage = default; string name = default; string phone = default; string @class = default; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(new List <InlineKeyboardButton>() { new InlineKeyboardButton() { Text = ConfirmRegistrationButtonText, CallbackData = EncryptionRegistartionResult(User.ChatId, true) }, new InlineKeyboardButton() { Text = NotConfirmRegistrationButtonText, CallbackData = EncryptionRegistartionResult(User.ChatId, false) } }); if (User.TypeUser == TypeUser.Pupil.ToString()) { var info = await BalDbController.GetPupilInformationAsync(User.ChatId); name = $"\nУчень: [{User.NameUser}](tg://user?id={User.ChatId})"; phone = $"\nНомер телефону: *{info.Phone}*"; @class = $"\nКлас: *{info.Pupils.First().Class}*"; adminMessage = $"{new ConfirmPupilRegistration().Name}{name}{phone}{@class}\n"; } if (User.TypeUser == TypeUser.Teacher.ToString()) { var info = await BalDbController.GetTeacherInformationAsync(User.ChatId); name = $"\nВчитель: [{User.NameUser}](tg://user?id={User.ChatId})"; phone = $"\nНомер телефону: *{info.Phone}*"; @class = $"\nКласний керівник: *{info.Teachers.First().Class}*"; string subject = $"\nПредмет: *{info.Teachers.First().Subjects}*"; adminMessage = $"{new ConfirmPupilRegistration().Name}{name}{phone}{@class}{subject}\n"; } await BotClient.SendTextMessageAsync(User.ChatId, text : "Запит на реєстрацію відправлено. Чекайте сповіщення про результат 🙂", replyMarkup : new ReplyKeyboardRemove()); var admins = await GetAdmins(); foreach (var admin in admins) { await BotClient.SendTextMessageAsync(admin.ChatId, text : adminMessage, replyMarkup : inlineKeyboard, parseMode : Telegram.Bot.Types.Enums.ParseMode.Markdown); } break; } if (userMessage == InCorrectInformationUserButtonText) { string responceMessage = "default"; IReplyMarkup keyboard = new ReplyKeyboardRemove(); if (User.TypeUser == TypeUser.Pupil.ToString()) { StateRegistration = RegistrationStateMachine.EnterName; // Return to S-3 State responceMessage = $"Як до Вас звертатись? (Напишіть своє прізвище, ім'я, по-батькові українською мовою)"; } if (User.TypeUser == TypeUser.Teacher.ToString()) { StateRegistration = RegistrationStateMachine.EnterPhone; // Return to S-4 State responceMessage = $@"Адміністратор боту <a href= ""tg://user?id=363574232"">{AppSettings.NameAdmin}</a> надасть Вам унікальний пароль. Зверніться будь ласка до нього."; } await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), User.ChatId); await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : responceMessage, replyMarkup : keyboard); } break; } case RegistrationStateMachine.WaitingForConfirmation: // S-7 { if (bool.TryParse(message.Text, out bool result) == true) { if (Convert.ToBoolean(message.Text) == false) // if registred not confirm { var requestUser = await BalDbController.GetUserInformationAsync(message.Chat.Id); await BotClient.SendTextMessageAsync(chatId : requestUser.ChatId, text : "Нажаль, Вам відмовлено в реєстрації за введеними даними. Виправте данні, та спробуйте ще раз."); string responceMessage = "default"; IReplyMarkup keyboard = new ReplyKeyboardRemove(); if (requestUser.TypeUser == TypeUser.Pupil.ToString()) { StateRegistration = RegistrationStateMachine.EnterName; // Return to S-3 State responceMessage = $"Як до Вас звертатись? (Напишіть своє прізвище, ім'я, по-батькові українською мовою)"; } if (requestUser.TypeUser == TypeUser.Teacher.ToString()) { StateRegistration = RegistrationStateMachine.EnterTeacherPassword; // Return to S-4 State responceMessage = $@"Адміністратор боту <a href= ""tg://user?id=363574232"">{AppSettings.NameAdmin}</a> надасть Вам унікальний пароль. Зверніться будь ласка до нього."; } await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), requestUser.ChatId); await BotClient.SendTextMessageAsync(chatId : requestUser.ChatId, text : responceMessage, replyMarkup : keyboard, parseMode : ParseMode.Html); return; } else // true { var requestUser = await BalDbController.GetUserInformationAsync(message.Chat.Id); StateRegistration = RegistrationStateMachine.Registred; await BalDbController.ChangeUserStateAsync(StateRegistration.ToString(), requestUser.ChatId); // Finaly state requestUser.IsRegistred = true; await BalDbController.UpdateUserDataAsync(requestUser); if (requestUser.TypeUser == TypeUser.Teacher.ToString()) { var teacherInfo = await BalDbController.GetTeacherInformationAsync(requestUser.ChatId); if (teacherInfo.Teachers.First().Class == "--") { break; } else { var pupils = await BalDbController.GetPupilsAsync(teacherInfo.Teachers.First().Class); // Add pupils chatId her classmatesTeacher if (pupils != null && pupils.Count > 0) { foreach (var pupil in pupils) { var pupilInfo = await BalDbController.GetPupilInformationAsync(pupil.ChatId); pupilInfo.Pupils.First().ClassromTeacherId = teacherInfo.Teachers.First().Id; await BalDbController.UpdateUserDataAsync(pupilInfo); } } } } if (requestUser.TypeUser == TypeUser.Pupil.ToString()) // Add teacher Id to pupil { var pupilInfo = await BalDbController.GetPupilInformationAsync(requestUser.ChatId); var teacherChatId = await BalDbController.GetClassmateTeacherAsync(pupilInfo.Pupils.First().Class); if (teacherChatId != default) { pupilInfo.Pupils.First().ClassromTeacherId = BalDbController.GetTeacherInformationAsync(teacherChatId).Result.Teachers.First().Id; await BalDbController.UpdateUserDataAsync(pupilInfo); } } await BotClient.SendTextMessageAsync(chatId : requestUser.ChatId, text : $"Ваш профіль підтверджено! Вітаємо у системі 🥳", replyMarkup : new ReplyKeyboardRemove()); await Task.Run(() => new MainMenuCommand().Execute(null, BotClient, requestUser)); // go to main menu break; } } else { await BotClient.SendTextMessageAsync(chatId : User.ChatId, text : $"Вашу заявку ще не підтвердили... Будь ласка зачекайте ⏳", replyMarkup : new ReplyKeyboardRemove()); break; } } default: break; } }
public static async Task <string> CreateDayScheduler(ISchedulerController scheduler, UserInfo userInformation, string day) { if (day.ToLowerInvariant() == DayOfWeek.Saturday.ToString().ToLowerInvariant() || day.ToLowerInvariant() == DayOfWeek.Sunday.ToString().ToLowerInvariant()) { return("Насолоджуйтесь вихідним 🌞"); } string title = $"Розклад на {ConverteEngMonthToUkr(day, LanguageCases.Rodovyy).Result}:\n"; string bodyAnswer = default; string answer = default; string subject = default; string classroom = default; string uniqueCommand = default; int lesson = default; if (userInformation.TypeUser == TypeUser.Teacher.ToString()) { var teacherInfo = await BalDbController.GetTeacherInformationAsync(userInformation.ChatId); var schedulerDay = await scheduler.GetConcreteDayInformationAsync( scheduler : await scheduler.GetConcreteWeekInformationAsync(teacherInfo.Teachers.First().FullName), dayOfWeek : day); if (schedulerDay == null) { return("Невдалось завантажити розклад. "); } for (int lessonPointer = 0; lessonPointer < schedulerDay.Count; lessonPointer += 3) { string @class = default; if (schedulerDay[lessonPointer] == String.Empty || schedulerDay[lessonPointer] == "-") { subject = "Вікно 🙂"; @class = String.Empty; classroom = String.Empty; uniqueCommand = String.Empty; } else { @class = $"Кл.: {schedulerDay[lessonPointer]}"; subject = $" {schedulerDay[lessonPointer + 1]}"; classroom = $" Каб.: {schedulerDay[lessonPointer + 2]}."; uniqueCommand = $"\nДетальніше -->" + $" {new SchedulerUniqueCommand.Teacher().Name }{lesson}{day.ToLower()}_scheduler"; } bodyAnswer += $"{smileNumber[lesson]} {@class}{subject}{classroom}{uniqueCommand}\n"; lesson++; } answer = title + bodyAnswer; return(answer); } if (userInformation.TypeUser == TypeUser.Pupil.ToString()) { var pupilInfo = await BalDbController.GetPupilInformationAsync(userInformation.ChatId); var schedulerDay = await scheduler.GetConcreteDayInformationAsync( scheduler : await scheduler.GetConcreteWeekInformationAsync(pupilInfo.Pupils.First().Class), dayOfWeek : day); if (schedulerDay == null) { return("Невдалось завантажити розклад. "); } string teacher = default; for (int lessonPointer = 0; lessonPointer < schedulerDay.Count; lessonPointer += 3) { if (schedulerDay[lessonPointer] == String.Empty) { subject = " Уроку немає 🙂"; teacher = String.Empty; classroom = String.Empty; uniqueCommand = String.Empty; } else { subject = $" {schedulerDay[lessonPointer]}"; teacher = $" Вч.: {schedulerDay[lessonPointer + 1]}"; classroom = $" Каб.: {schedulerDay[lessonPointer + 2]}."; uniqueCommand = $"\nДетальніше -->" + $" /p{lesson}{day.ToLower()}_scheduler"; } bodyAnswer += $"{smileNumber[lesson]} {subject}{classroom}{uniqueCommand}\n"; lesson++; } answer = title + bodyAnswer; return(answer); } return("Невдалось завантажити розклад. "); }