コード例 #1
0
        public async Task <LearnerLeaderBoard> AddAsync(
            LearnerLeaderBoard leaderBoard)
        {
            var learnerContainer =
                _cosmosDatabase.Containers["leaderboards"];

            var leaderBoardDocument =
                await learnerContainer.Items.CreateItemAsync <LearnerLeaderBoard>(
                    leaderBoard.Id.ToString(),
                    leaderBoard);

            return(leaderBoardDocument.Resource);
        }
コード例 #2
0
        public async Task <LearnerLeaderBoard> AddAsync(
            Guid learnerId,
            Guid leaderBoardId)
        {
            var leaderBoardContainer =
                _cosmosDatabase.Containers["leaderboards"];

            var leaderBoardDocument =
                await leaderBoardContainer.Items.ReadItemAsync <LeaderBoard>(
                    leaderBoardId.ToString(),
                    leaderBoardId.ToString());

            if (leaderBoardDocument == null)
            {
                throw new NullReferenceException("Leader Board does not exist.");
            }

            var learnerContainer =
                _cosmosDatabase.Containers["learners"];

            var learnerDocument =
                await learnerContainer.Items.ReadItemAsync <Learner>(
                    learnerId.ToString(),
                    learnerId.ToString());

            if (learnerDocument == null)
            {
                throw new NullReferenceException("Learner does not exist.");
            }

            var learner =
                learnerDocument.Resource;

            var learnerLeaderBoard =
                new LearnerLeaderBoard(
                    leaderBoardDocument.Resource);

            if (learner.LeaderBoards.All(x => x.Id != leaderBoardId))
            {
                learner.LeaderBoards.Add(
                    learnerLeaderBoard);

                await learnerContainer.Items.ReplaceItemAsync(
                    learnerId.ToString(),
                    learnerId.ToString(),
                    learner);
            }

            return(learnerLeaderBoard);
        }