/// <summary>
        /// Creates a new quest
        /// </summary>
        /// <param name="quest">Quest</param>
        /// <returns>Quest filled with data</returns>
        public async Task <AikaQuest> CreateQuest(AikaQuest quest)
        {
            quest.Id = Guid.NewGuid().ToString();
            await _QuestCollection.InsertOneAsync(quest);

            return(quest);
        }
        /// <summary>
        /// Deletes a quest
        /// </summary>
        /// <param name="quest">Quest to delete</param>
        /// <returns>Task</returns>
        public async Task DeleteQuest(AikaQuest quest)
        {
            AikaQuest existingQuest = await GetQuestById(quest.Id);

            if (existingQuest == null)
            {
                throw new NullReferenceException();
            }

            IMongoCollection <AikaQuest> recyclingBin = _Database.GetCollection <AikaQuest>(AikaQuestRecyclingBinCollectionName);
            await recyclingBin.InsertOneAsync(existingQuest);

            DeleteResult result = await _QuestCollection.DeleteOneAsync(q => q.Id == quest.Id);
        }
        /// <summary>
        /// Returns a quest by the id
        /// </summary>
        /// <param name="id">Id of the quest</param>
        /// <returns>Quest</returns>
        public async Task <AikaQuest> GetQuestById(string id)
        {
            AikaQuest quest = await _QuestCollection.Find(q => q.Id == id).FirstOrDefaultAsync();

            return(quest);
        }
 /// <summary>
 /// Updates a quest
 /// </summary>
 /// <param name="quest">Quest to update</param>
 /// <returns>Task</returns>
 public async Task UpdateQuest(AikaQuest quest)
 {
     ReplaceOneResult result = await _QuestCollection.ReplaceOneAsync(q => q.Id == quest.Id, quest);
 }