public async Task <IEnumerable <LevelMetricQueryResult> > SetResultsAsync(int userId, params LevelMetricQuery[] cardGameScores) { // set sore; IEnumerable <LevelMetricQueryResult> levelScores = cardGameScores.Select(c => gameScoreService.GetLevelScore(c.ToLevelResult())).ToHashSet(); // save score to storage await gameScoreService.UploadScoreAsync(userId, levelScores).ConfigureAwait(false); // Calculate word metric; IKnowledgeQualifier[] knowledgeQualifiers = cardGameScores.Select(k => new CardGameKnowledge(k) as IKnowledgeQualifier).ToArray(); // update words pairs license in store await knowledgeUpdateService.UpdateKnowledge(userId, knowledgeQualifiers).ConfigureAwait(false); return(levelScores); }
public async Task <IActionResult> UploadScore(IEnumerable <LevelResult> levelResults) { int authorizedId = User.GetUserId(); IEnumerable <LevelMetricQueryResult> answers = levelResults.Select(lr => gameScoreService.GetLevelScore(lr)); if (answers.Where(a => a.LevelId < 0).Count() > 0) { return(Ok(answers)); } try { await gameScoreService.UploadScoreAsync(authorizedId, answers); } catch (ArgumentNullException e) { return(BadRequest(e.Message)); } return(Ok(answers)); }