private void EditSubject() { if (CurrentSubject != null) { ValidationResult <string> vrNameSubject; ValidationResult <string> vrTeacher; if (!(vrNameSubject = Subject.ValidateName(this.NombreAsignatura, CurrentSubject.Id)).IsSuccess) { MessageBox.Show(vrNameSubject.AllErrors); } if (!(vrTeacher = Subject.ValidateTeacher(this.Profesor)).IsSuccess) { MessageBox.Show(vrTeacher.AllErrors); } if (vrNameSubject.IsSuccess && vrTeacher.IsSuccess) { var subjectToUpdate = CurrentSubject.Clone(); subjectToUpdate.Name = vrNameSubject.ValidatedResult; subjectToUpdate.Teacher = vrTeacher.ValidatedResult; var sr = subjectToUpdate.Save(); if (sr.IsSuccess) { MessageBox.Show($"Asignatura editada correctamente"); CurrentSubject = sr.Entity; } else { MessageBox.Show($"Uno o más errores han ocurrido y la asignatura no se ha editar correctamente: {sr.AllErrors}"); } } Clear(); GetSubjects(); } else { MessageBox.Show("Se tiene que seleccionar una asignatura antes de editarla"); } }
public virtual string GetTitle() { ArgumentValidator.IsNotNull("CurrentSubject", CurrentSubject); ArgumentValidator.IsNotNull("CurrentSubjectInstance", CurrentInstance); string title = string.Empty; string label = CurrentSubject.GetSubjectLabelByLanguage(CurrentUserContext.CurrentLanguage.Id); if (CurrentInstance.IsNew) { title = string.Format("{0}: {1} {2}", label, UILabelDef.InstanceNewLabel, label); } else { title = string.Format("{0}: {1}", label, CurrentInstance.Display); } return(title); }
private void SubjectChecker() { if (SelectedSubject == null) { SaveSubject(); } else { if (CurrentSubject.Equals(SelectedSubject)) { MessageBox.Show("You have not made any changes to this entry"); } else { UpdateSubject(); } } SelectedSubject = null; CurrentSubject = null; SubjView.Close(); }
static async void BotOnMessageReceived(object sender, MessageEventArgs MessageEventArgs) { Telegram.Bot.Types.Message msg = MessageEventArgs.Message; if (msg == null || msg.Type != MessageType.Text) { return; } string Answer = "Server Error"; if (System.DateTime.UtcNow.Subtract(msg.Date).TotalMinutes > 3) { await BOT.SendTextMessageAsync(msg.Chat.Id, Answer); return; } if (UserList.ContainsKey(msg.Chat.Id)) { UserList[msg.Chat.Id].LastAccess = DateTime.Now; } if (!IsRegistered(msg.Chat.Id)) { if (!UserList.ContainsKey(msg.Chat.Id)) { UserList.Add(msg.Chat.Id, new User()); } Answer = Registration(msg); //регистрация студента }//prev command was /findteacher else if (UserList[msg.Chat.Id].ident == 4) { if (!NameMatches.ContainsKey(msg.Chat.Id)) { var lst = ReturnTeachersId(msg.Text); if (lst.Length == 1) { Answer = LessonTechToStr(TeacherMethods.GetCurrentLesson(lst[0].id), true); UserList[msg.Chat.Id].ident = 3; } else if (lst.Length > 1) { NameMatches.Add(msg.Chat.Id, lst); var s = $"Найдено несколько совпадений:\n"; for (var i = 0; i < lst.Length; i++) { s = s + $"{i + 1}) {lst[i].name}\n"; } s = s + "Ввведи номер выбранного преподавателя."; Answer = s; } else { Answer = "Ошибка, преподаватель не найден! Попробуй ещё раз."; } } else { if (int.TryParse(msg.Text, out int n) && n - 1 < NameMatches[msg.Chat.Id].Length && n - 1 >= 0) { var LCG = TeacherMethods.GetCurrentLesson(NameMatches[msg.Chat.Id][n - 1].id); Answer = LessonTechToStr(LCG, true); UserList[msg.Chat.Id].ident = 3; NameMatches.Remove(msg.Chat.Id); } else { Answer = "Ошибка, введён некорректный номер."; } } } else if (UserList[msg.Chat.Id].ident == 5) { bool onOrOff = msg.Text.ToLower() == "включить"; UserList[msg.Chat.Id].eveningNotify = onOrOff; UserList[msg.Chat.Id].ident = 3; Json_Data.WriteData(); string onOrOffMsg = onOrOff ? "включено" : "выключено"; Answer = $"Вечернее уведомление *{onOrOffMsg}*."; } else if (UserList[msg.Chat.Id].ident == 6) { bool onOrOff = msg.Text.ToLower() == "включить"; UserList[msg.Chat.Id].preLessonNotify = onOrOff; UserList[msg.Chat.Id].ident = 3; Json_Data.WriteData(); string onOrOffMsg = onOrOff ? "включено" : "выключено"; Answer = $"Уведомление за 15 минут до первой пары *{onOrOffMsg}*."; } else { try { switch (msg.Text.ToLower()) // Обработка команд боту { case "/next": case "ближайшая пара": if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher) { Answer = LessonToStr(StudentMethods.GetCurrentLesson(UserList[msg.Chat.Id].groupid), true); } else { Answer = LessonTechToStr(TeacherMethods.GetCurrentLesson(UserList[msg.Chat.Id].teacherId), true); } break; case "/findteacher": case "найти преподавателя": Answer = "Введи фамилию преподавателя"; UserList[msg.Chat.Id].ident = 4; break; case "/week": case "расписание на неделю": if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher) { Answer = WeekSchToStr(StudentMethods.GetWeekSchedule(UserList[msg.Chat.Id].groupid)); } else { Answer = WeekSchTechToStr(TeacherMethods.GetWeekSchedule(UserList[msg.Chat.Id].teacherId)); } break; case "/today": case "расписание на сегодня": if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher) { Answer = DaySchToStr(StudentMethods.GetTodaySchedule(UserList[msg.Chat.Id].groupid)); } else { Answer = DaySchTechToStr(TeacherMethods.GetTodaySchedule(UserList[msg.Chat.Id].teacherId)); } break; case "/tomorrow": case "расписание на завтра": if (UserList[msg.Chat.Id].Info != User.UserInfo.teacher) { Answer = DaySchToStr(StudentMethods.GetTomorrowSchedule(UserList[msg.Chat.Id].groupid)); } else { Answer = DaySchTechToStr(TeacherMethods.GetTomorrowSchedule(UserList[msg.Chat.Id].teacherId)); } break; case "/knowme": case "знаешь меня?": if (UserList[msg.Chat.Id].Info == User.UserInfo.teacher) { Answer = $"Вы {TeacherList[UserList[msg.Chat.Id].teacherId].name}"; //База старая, так что выводим только ФИО!!! } else { Answer = $"Вы {msg.Chat.FirstName.Replace("`","").Replace("_","").Replace("*","")} из группы {StudentMethods.groupIDToCourseGroup(UserList[msg.Chat.Id].groupid)}"; } break; case "/eveningnotify": Answer = $"Сейчас вечернее уведомление о завтрашней первой паре *{(UserList[msg.Chat.Id].eveningNotify? "включено" : "выключено")}*. \nНастройте его."; UserList[msg.Chat.Id].ident = 5; await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard); return; case "/prelessonnotify": Answer = $"Сейчас уведомление за 15 минут до первой пары *{(UserList[msg.Chat.Id].preLessonNotify ? "включено" : "выключено")}*. \nНастройте его."; UserList[msg.Chat.Id].ident = 6; await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : notifierKeyboard); return; case "/forget": case "забудь меня": UserList.Remove(msg.Chat.Id); Json_Data.WriteData(); Answer = "Я вас забыл! Для повторной регистрации пиши /start"; await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, replyMarkup : new ReplyKeyboardRemove()); return; case "помощь": case "/help": Answer = _help; break; case "/info": case "информация": Answer = "Меня создали Миша, Дима, Дима, Глеб, Никита, Ира, Максим в рамках проектной деятельности на ФИиИТ в 2018-2019 уч. году.\n" + "Я предоставляю доступ к интерактивному расписанию мехмата через платформу ботов Telegram.\n" + "Если обнаружили ошибку в расписании, проверьте, совпадает ли оно с указанным на schedule.sfedu.ru. " + "При сопададении, для исправления обратитесь в деканат, либо напишите на [email protected], в противном случае напишите [Михаилу](tg://user?id=61026374)."; break; case "/optionalcourses": case "факультативы": Answer = electivesStr; break; case "/curweek": Answer = $"Сейчас *{CurrentSubject.GetCurrentWeek().ToString()}* неделя."; break; case "/forceupdate": logger.Info($"Запрошено принудительное обновление расписаний, ID: {msg.Chat.Id}, @{msg.Chat.Username}."); TeachersInit(false); GradeInit(false); GroupShedListInit(false); TeachersShedInit(false); WeekInit(false); logger.Info($"Завершено принудительное обновление расписаний, ID: {msg.Chat.Id}, @{msg.Chat.Username}."); Answer = "Данные расписаний обновлены!"; break; default: Answer = "Введены неверные данные, повторите попытку."; break; } } catch (System.Net.WebException e) { logger.Error(e, "Catched exeption:"); Answer = "Ошибка! Вероятно, сервер интерактивного расписания недоступен. Пожалуйста, попробуйте повторить запрос позднее."; } } try { if (IsRegistered(msg.Chat.Id)) { await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, ParseMode.Markdown, replyMarkup : UserList[msg.Chat.Id].Info == User.UserInfo.teacher?teacherKeyboard : studentKeyboard); } else if (UserList[msg.Chat.Id].ident == 1) { await BOT.SendTextMessageAsync(msg.Chat.Id, Answer, replyMarkup : registrationKeyboard); } else { await BOT.SendTextMessageAsync(msg.Chat.Id, Answer); } } catch (Exception ex) when(ex is System.Net.Http.HttpRequestException && ex.Message.Contains("429")) { logger.Warn(ex, $"Сетевая ошибка при ответе @{msg.Chat.Username}"); } }