Example #1
0
        private async Task <Message> SendTask(TaskDTO task, ProgressDTO userProgress, Chat chat, UserEntity user, TelegramBotClient client,
                                              ServiceManager serviceManager)
        {
            var progress      = PrepareProgress(serviceManager.Logger, userProgress);
            var isLevelSolved = IsLevelSolved(userProgress);

            var answers = task.Answers.Select((e, index) => (letter: DialogMessages.Alphabet[index], answer: $"{e}"))
                          .ToList();
            var answerBlock = PrepareAnswers(answers, serviceManager.Logger);

            var message = FormatMessage(task, progress, answerBlock, isLevelSolved, serviceManager);

            serviceManager.Logger.LogInformation($"messageToSend : {message}");

            var keyboard = PrepareButtons(user, task, serviceManager.Logger, answers);

            var taskMessage = await client.SendTextMessageAsync(chat.Id, message,
                                                                ParseMode.Markdown);

            var reportCallback = taskMessage.MessageId.CreateMessageReportCallback(topicDto.Id, levelDto.Id);
            var reportButton   = new[]
            {
                InlineKeyboardButton
                .WithCallbackData(ButtonNames.Report, reportCallback)
            };
            var keyboardWithReport = new InlineKeyboardMarkup(keyboard.InlineKeyboard.Append(reportButton));
            await client.EditMessageReplyMarkupAsync(chat.Id, taskMessage.MessageId, keyboardWithReport);

            return(taskMessage);
        }
Example #2
0
        private static string PrepareProgress(ILogger logger, ProgressDTO userProgress)
        {
            logger.LogInformation($"Progress: {userProgress.TasksSolved}:{userProgress.TasksCount}");
            var progressBar = new CircleProgressBar();
            var progress    = progressBar.GenerateProgressBar(userProgress.TasksSolved, userProgress.TasksCount);

            return(progress);
        }
Example #3
0
        public bool SubmitProgress(Guid userId, ProgressDTO progressDTO)
        {
            ChapterProgress progress = chapterRepository.GetChapterProgress(userId, progressDTO.ChapterId);

            if (progress == null)
            {
                return(chapterRepository.CreateProgress(new ChapterProgress
                {
                    UserId = userId,
                    ChapterId = progressDTO.ChapterId,
                    Score = progressDTO.Score
                }));
            }
            else
            {
                progress.Score = Math.Max(progress.Score, progressDTO.Score);
                return(chapterRepository.UpdateProgress(progress));
            }
        }
        public IEnumerable <ProgressDTO> GetProgressByUser(int id)
        {
            var categoriesFromDb = dbContext
                                   .Categories
                                   .ToList();

            var progresses       = new List <ProgressDTO>();
            var progressesFromDb = dbContext
                                   .Progresses
                                   .ToList();

            foreach (var categoryFromDb in categoriesFromDb)
            {
                var coursesProgresses = new List <CourseProgressDTO>();
                var progress          = new ProgressDTO
                {
                    CategoryName = categoryFromDb.Name
                };

                foreach (var course in categoryFromDb.Courses.Where(c => c.Users.Any(uc => uc.Id == id)))
                {
                    var lastCompletedStage = progressesFromDb
                                             .Where(p => p.CourseId == course.Id && p.CategoryId == categoryFromDb.Id && p.UserId == id)
                                             .Select(cs => cs.StageId)
                                             .FirstOrDefault();

                    var courseProgress = new CourseProgressDTO
                    {
                        CourseName         = course.Name,
                        StageNames         = course.Stages.Select(s => s.Name).ToList(),
                        LastCompletedStage = course.Stages.Where(s => s.Id == lastCompletedStage).Select(s => s.Nr).FirstOrDefault()
                    };

                    coursesProgresses.Add(courseProgress);
                }
                progress.Progresses = coursesProgresses;

                progresses.Add(progress);
            }

            return(progresses);
        }
 public void UpdateProgress(ProgressDTO progressDto)
 {
     new ClientImagingServices().UpdateProgress(Convert.ToInt32(progressDto.taskId), progressDto.progress,
                                                progressDto.progressType);
 }
Example #6
0
 private bool IsLevelSolved(ProgressDTO progress)
 {
     return(progress.TasksCount == progress.TasksSolved);
 }