/// <summary>
		/// Updates a question category.
		/// </summary>
		public async Task UpdateQuestionCategoryAsync(
			string classroomName,
			QuestionCategory questionCategory)
		{
			var classroom = await LoadClassroomAsync(classroomName);

			questionCategory.ClassroomId = classroom.Id;
			_dbContext.Update(questionCategory);

			await _dbContext.SaveChangesAsync();
		}
		public async Task<IActionResult> Create(QuestionCategory questionCategory)
		{
			if (ModelState.IsValid)
			{
				await QuestionCategoryService.CreateQuestionCategoryAsync
				(
					ClassroomName, 
					questionCategory
				);

				return RedirectToAction("Index");
			}
			else
			{
				return View("CreateEdit", questionCategory);
			}
		}
		public async Task<IActionResult> Edit(int? id, QuestionCategory questionCategory)
		{
			if (id != questionCategory.Id)
			{
				return NotFound();
			}

			if (ModelState.IsValid)
			{
				await QuestionCategoryService.UpdateQuestionCategoryAsync
				(
					ClassroomName, 
					questionCategory
				);

				return RedirectToAction("Index");
			}
			else
			{
				return View("CreateEdit", questionCategory);
			}
		}
        /// <summary>
        /// Adds a question category to the database.
        /// </summary>
        public TestDatabaseBuilder AddQuestionCategory(
            string classroomName,
            string categoryName,
            bool privateCategory = false)
        {
            var classroom = _buildContext.Classrooms
                .Single(c => c.Name == classroomName);

            var questionCategory = new QuestionCategory()
            {
                Name = categoryName,
                ClassroomId = classroom.Id,
                IsPrivate = privateCategory
            };

            _buildContext.QuestionCategories.Add(questionCategory);
            _buildContext.SaveChanges();

            return this;
        }