public async Task <List <UserAchievementDto> > GetAllUserAchievements(int userId) { var userAchievements = await _mimoDbContext.UserAchievements .Include(ua => ua.AchievementFk) .Include(ua => ua.AchievementFk.AchievementTypeFk) .Where(ua => ua.UserId == userId) .ToListAsync(); List <UserAchievementDto> userAchievementDtos = new List <UserAchievementDto>(); foreach (var userAchievement in userAchievements) { UserAchievementDto userAchievementDto = new UserAchievementDto { AchievementId = userAchievement.AchievementId, AchievementTypeName = userAchievement.AchievementFk.AchievementTypeFk.AchievementTypeName, Completed = userAchievement.Completed, Id = userAchievement.Id, Progress = userAchievement.Progress, UserId = userAchievement.UserId }; userAchievementDtos.Add(userAchievementDto); } return(userAchievementDtos); }
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); } }
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); }