private async Task <HttpStatusCode> UpdateLessonCountAchievement(AchievementDto achievementDto, int userId, List <UserAchievementDto> userAchievementDtos)
        {
            UserAchievementDto lessonCountUserAchievementDto = userAchievementDtos
                                                               .Where(uad => uad.AchievementId == achievementDto.Id)
                                                               .FirstOrDefault();

            if (lessonCountUserAchievementDto == null)
            {
                PostUserAchievementDto postUserAchievementDto = new PostUserAchievementDto
                {
                    AchievementId = achievementDto.Id,
                    Completed     = achievementDto.RequiredCount == 1,
                    Progress      = 1,
                    UserId        = userId
                };

                return(await _userAchievementsService.PostUserAchievement(postUserAchievementDto));
            }
            else
            {
                await _userAchievementsService.ProgressUserAchievement(achievementDto, userId);

                return(HttpStatusCode.OK);
            }
        }
        public async Task <HttpStatusCode> PostUserAchievement(PostUserAchievementDto input)
        {
            UserAchievement userAchievement = new UserAchievement
            {
                UserId        = input.UserId,
                AchievementId = input.AchievementId,
                Completed     = input.Completed,
                Progress      = input.Progress
            };

            await _mimoDbContext.UserAchievements.AddAsync(userAchievement);

            await _mimoDbContext.SaveChangesAsync();

            return(HttpStatusCode.OK);
        }
        private async Task <HttpStatusCode> HandleNewUserAchievement(AchievementDto achievementDto, int userId, List <UserAchievementDto> userAchievementDtos)
        {
            UserAchievementDto userAchievementDto = userAchievementDtos
                                                    .Where(uad => uad.AchievementId == achievementDto.Id)
                                                    .FirstOrDefault();

            if (userAchievementDto == null)
            {
                PostUserAchievementDto postUserAchievementDto = new PostUserAchievementDto
                {
                    AchievementId = achievementDto.Id,
                    Completed     = false,
                    Progress      = 0,
                    UserId        = userId
                };

                return(await _userAchievementsService.PostUserAchievement(postUserAchievementDto));
            }

            return(HttpStatusCode.OK);
        }