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); }
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); }