示例#1
0
        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);
        }
示例#2
0
        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));
        }