public static string GetStatsText(ExamSettings settings, ChatRoom chat) => RenderStats(settings, chat) + $"```\r\n" + Render7WeeksCalendar(settings, chat.User.LastDaysStats.Select(d => new CalendarItem(d.Date, d.LearningDone, d.GameScoreChanging)).ToArray(), chat.Texts) + $"```\r\n" + $"\r\n" + $"*{RenderRecomendations(chat.User, chat.Texts)}*";
public LearnBotCommandHandler( UserService userService, UsersWordsService usersWordsService, ExamSettings examSettings) { _userService = userService; _usersWordsService = usersWordsService; _examSettings = examSettings; }
public ExamFlow( ChatIO chatIo, UsersWordsService usersWordsService, ExamSettings examSettings) { _chatIo = chatIo; _usersWordsService = usersWordsService; _examSettings = examSettings; }
public ExamFlow( ChatRoom chat, UserService userService, UsersWordsService usersWordsService, ExamSettings examSettings) { Chat = chat; _userService = userService; _usersWordsService = usersWordsService; _examSettings = examSettings; }
private static string Render7WeeksCalendar( ExamSettings examSettings, CalendarItem[] items, IInterfaceTexts texts) { var today = DateTime.Today; var offsets = items.ToDictionary( i => (int)(today - i.Date.Date).TotalDays, k => k.ExamsCount / (double)examSettings.ExamsCountGoalForDay ); //7 weeks. 42-49 days var minDay = today.AddDays(-49); var undoneInLastWeek = 0; if (minDay.DayOfWeek != DayOfWeek.Sunday) { undoneInLastWeek = (7 - (int)minDay.DayOfWeek); } var sb = new StringBuilder("----------------------\r\n"); for (int day = 0; day < 7; day++) { sb.Append(texts.ShortDayNames[day] + " "); for (int week = 7; week > 0; week--) { var offset = 7 * week - undoneInLastWeek - day - 1; if (offset < 0) { sb.Append(Empty); } else if (offsets.TryGetValue(offset, out var v)) { var symbol = v < 0.1 ? S1 : v < 0.2 ? S2 : v < 0.5 ? S3 : v < 1.0 ? S4 : v <= 2.0 ? S5 : S6; sb.Append(symbol); } else { sb.Append(S0); } } sb.Append("\r\n"); } sb.Append("----------------------\r\n "); sb.Append($"{texts.less} {S1}{S2}{S3}{S4}{S5} {texts.more}\r\n"); return(sb.ToString()); }
private static string RenderStats(ExamSettings settings, ChatRoom chat) { var lastMonth = chat.User.GetLastMonth(); var lastDay = chat.User.GetToday(); var statsText = $"{chat.Texts.StatsYourStats}: \r\n```\r\n" + $" {chat.Texts.StatsWordsAdded}: {chat.User.WordsCount}\r\n" + $" {chat.Texts.StatsLearnedWell}: {chat.User.CountOf((int)WordLeaningGlobalSettings.LearnedWordMinScore, 10)}\r\n" + $" {chat.Texts.StatsScore}: {(int)chat.User.GamingScore}\r\n```\r\n" + $"{chat.Texts.StatsThisMonth}:\r\n```" + $" {chat.Texts.StatsWordsAdded}: {lastMonth.WordsAdded}\r\n" + $" {chat.Texts.StatsLearnedWell}: {lastMonth.WordsLearnt}\r\n" + $" {chat.Texts.StatsExamsPassed}: {lastMonth.LearningDone}\r\n" + $" {chat.Texts.StatsScore}: {(int)lastMonth.GameScoreChanging}\r\n```\r\n" + $"{chat.Texts.StatsThisDay}:\r\n```" + $" {chat.Texts.StatsWordsAdded}: {lastDay.WordsAdded}\r\n" + $" {chat.Texts.StatsLearnedWell}: {lastDay.WordsLearnt}\r\n" + $" {chat.Texts.StatsExamsPassed}: {lastDay.LearningDone}/{settings.ExamsCountGoalForDay}\r\n" + $" {chat.Texts.StatsScore}: {(int)lastDay.GameScoreChanging}\r\n```\r\n" + $" {chat.Texts.StatsActivityForLast7Weeks}:\r\n"; return(statsText); }
public StatsBotCommandHandler(ExamSettings settings) { _settings = settings; }