示例#1
0
        public IActionResult Post(QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }
            var quiz = DbContext.Quizzes.Where(q => q.Id ==
                                               model.Id).FirstOrDefault();

            if (quiz == null)
            {
                return(NotFound(new
                {
                    Error = String.Format("Quiz ID {0} has not been found",
                                          model.Id)
                }));
            }
            quiz.Title            = model.Title;
            quiz.Description      = model.Description;
            quiz.Text             = model.Text;
            quiz.Notes            = model.Notes;
            quiz.LastModifiedDate = quiz.CreatedDate;
            DbContext.SaveChanges();
            return(new JsonResult(quiz.Adapt <QuizViewModel>(),
                                  JsonSettings));
        }
示例#2
0
        // Return a collection of unique questions that the user
        private List <Question> getUsersQuestions(QuizViewModel quiz)
        {
            List <Question> questionPool   = _quizData.SelectQuestionsForTopic(quiz.TopicID).ToList();
            List <Question> UsersQuestions = questionPool.Where(q => q.Creator == _currentUser).ToList();

            return(UsersQuestions);
        }
示例#3
0
        public void PlayTest()
        {
            var answerCount = 0;
            var quiz = new QuizViewModel(QuizGenerator.Generate());
            var vm = new PlayViewModel(_locatorMock.Object, _quizMock.Object, _questionMock.Object, _answerMock.Object)
            {
                CurrentQuiz = quiz
            };

            // Verify that the quiz instance has been saved
            _quizMock.Verify(q => q.CreateInstance(It.IsAny<QuizInstance>()), Times.Exactly(1));

            // Iterate available questions
            foreach (var quizQuestion in quiz.QuizQuestions)
            {
                var question = quizQuestion.Question;
                answerCount += question.Answers.Count;

                Assert.AreEqual(question.QuestionId, vm.CurrentQuestion.QuestionId, $"QuestionID should be \"{question.QuestionId}\"");

                vm.SelectedAnswer = new AnswerViewModel(question.Answers.FirstOrDefault());
                vm.NextCommand.Execute(null);
            }

            // Verify that the quiz has ended
            Assert.AreEqual(true, vm.IsComplete, "Quiz should have ended by now");

            // Verify that all the questions have been saved
            _questionMock.Verify(q => q.CreateInstance(It.IsAny<QuestionInstance>()), Times.Exactly(quiz.QuizQuestionCount));

            // Verify that all the answers have been saved
            _answerMock.Verify(a => a.CreateInstance(It.IsAny<AnswerInstance>()), Times.Exactly(answerCount));
        }
示例#4
0
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }

            var quiz = DbContext.Quizzes.Where(q => q.Id == model.Id).FirstOrDefault();

            if (quiz == null)
            {
                return(NotFound(new
                {
                    Error = $"Quiz ID {model.Id} has not been found",
                }));
            }

            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Text        = model.Text;
            quiz.Notes       = model.Notes;

            quiz.LastModifiedDate = DateTime.Now;

            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            DbContext.SaveChanges();

            return(new JsonResult(
                       quiz.Adapt <QuizViewModel>(),
                       JsonSettings));
        }
        public async Task <ActionResult> Attempt(int QuizID)
        {
            var quiz = await db.Quizzes.FindAsync(QuizID);

            if (quiz == null || !quiz.IsActive)
            {
                return(HttpNotFound());
            }

            QuizViewModel model = new QuizViewModel();

            model.PageInfo = new PageInfo()
            {
                PageTitle       = string.Format("Quiz : {0}", quiz.Name),
                PageDescription = quiz.Description
            };

            model.ID           = quiz.ID;
            model.Name         = quiz.Name;
            model.Description  = quiz.Description;
            model.TimeDuration = quiz.TimeDuration;
            model.Hours        = quiz.TimeDuration.Hours;
            model.Minutes      = quiz.TimeDuration.Minutes;

            return(View(model));
        }
示例#6
0
 public void Add(QuizViewModel model)
 {
     if (model == null)
     {
         throw new HttpResponseException(HttpStatusCode.NoContent);
     }
 }
示例#7
0
        public IActionResult Post([FromBody] QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }

            var quiz = new Quiz();

            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Text        = model.Text;
            quiz.Notes       = model.Notes;

            quiz.CreatedDate      = DateTime.Now;
            quiz.LastModifiedDate = quiz.CreatedDate;

            quiz.UserId = DbContext.Users.Where(u => u.UserName == "Admin").FirstOrDefault().Id;

            DbContext.Quizzes.Add(quiz);
            DbContext.SaveChanges();

            return(new JsonResult(
                       quiz.Adapt <QuizViewModel>(),
                       JsonSettings));
        }
示例#8
0
        // GET: Quizs/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var quiz = await _quizData.Items
                       .Include(q => q.Topic)
                       .FirstOrDefaultAsync(m => m.QuizID == id);

            if (quiz == null)
            {
                return(NotFound());
            }
            QuizViewModel QVM = new QuizViewModel
            {
                QuizID            = quiz.QuizID,
                NumberOfQuestions = quiz.NumberOfQuestions,
                TopicDescription  = quiz.Topic.Description,
                Score             = quiz.Score,
                Questions         = _quizData.QuizQuestions(quiz.QuizID).ToList()
            };

            return(View(QVM));
        }
示例#9
0
        public async Task <QuizViewModel?> GetQuizAsync(string id)
        {
            var retrieveOperation = TableOperation.Retrieve <QuizEntity>(Quizzes, id);
            var result            = await _quizzesTable.ExecuteAsync(retrieveOperation);

            return(result.Result is QuizEntity entity?QuizViewModel.FromJson(entity.Json) : null);
        }
示例#10
0
        public async Task GetResultsAsync(string id)
        {
            if (id == HubConstants.Active)
            {
                var activeQuiz = await _quizDataContext.GetActiveQuizAsync();

                if (activeQuiz != null)
                {
                    await Groups.AddToGroupAsync(Context.ConnectionId, HubConstants.Active);

                    var quiz = QuizViewModel.FromJson(activeQuiz.Json);
                    id = quiz.ID;

                    var counter = await _quizDataContext.GetConnectionCountAsync();

                    await Clients.Caller.SendAsync(HubConstants.ConnectedMethod, new ConnectionViewModel()
                    {
                        Counter = counter
                    });
                }
            }

            await Groups.AddToGroupAsync(this.Context.ConnectionId, id);

            var resultsBuilder = new QuizResultBuilder(_quizDataContext);
            var results        = await resultsBuilder.GetResultsAsync(id);

            await Clients.Caller.SendAsync(HubConstants.ResultsMethod, results);
        }
示例#11
0
        public async Task <QuizViewModel?> ActivateQuizAsync(string id)
        {
            var retrieveOperation = TableOperation.Retrieve <QuizEntity>(Quizzes, id);
            var result            = await _quizzesTable.ExecuteAsync(retrieveOperation);

            if (!(result.Result is QuizEntity quizEntity))
            {
                // No quiz found so clear the current active quiz
                var retrieveActiveQuizOperation = TableOperation.Retrieve <QuizEntity>(Active, Active);
                var activeQuizResult            = await _quizzesTable.ExecuteAsync(retrieveActiveQuizOperation);

                if (activeQuizResult.Result is QuizEntity activeQuiz)
                {
                    var deleteOperation = TableOperation.Delete(activeQuiz);
                    await _quizzesTable.ExecuteAsync(deleteOperation);
                }
                return(null);
            }

            var quiz = QuizViewModel.FromJson(quizEntity.Json);

            if (quiz.Questions.Any(q => q.Parameters.ClearOnActivation))
            {
                await DeleteResponsesAsync(quiz.ID);
            }

            quizEntity.PartitionKey = quizEntity.RowKey = Active;
            var upsertOperation = TableOperation.InsertOrReplace(quizEntity);
            var upsertResult    = await _quizzesTable.ExecuteAsync(upsertOperation);

            return(quiz);
        }
示例#12
0
        public IActionResult EditQuiz(QuizViewModel vm)
        {
            var quizService = new QuestionService(CurrentUser.Id);

            quizService.UpdateTitle(vm.Quiz.Id, vm.Quiz.Title);
            return(RedirectToAction("EditQuiz", "User", new { id = vm.Quiz.Id }));
        }
示例#13
0
        public IActionResult AddQuestion(QuizViewModel vm)
        {
            var quizService = new QuestionService(CurrentUser.Id);

            quizService.InsertQuestion(vm.Quiz.Id, vm.NewQuestion);
            return(RedirectToAction("EditQuiz", "User", new { id = vm.Quiz.Id }));
        }
        public QuizViewModel GetQuizById(int quizId)
        {
            var quiz = this.applicationDbContext.Quizes
                       .Include(x => x.Questions)
                       .ThenInclude(x => x.Answers)
                       .FirstOrDefault(x => x.Id == quizId);

            var quizViewModel = new QuizViewModel
            {
                Id        = quizId,
                Title     = quiz.Title,
                Questions = quiz.Questions.Select(x => new QuestionViewModel
                {
                    Id      = x.Id,
                    Title   = x.Title,
                    Answers = x.Answers.Select(a => new AnswerViewModel
                    {
                        Id    = a.Id,
                        Title = a.Title
                    })
                              .ToList()
                })
                            .ToList()
            };

            return(quizViewModel);
        }
示例#15
0
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }

            var quiz = new Quiz
            {
                Title            = model.Title,
                Description      = model.Description,
                Text             = model.Text,
                Notes            = model.Notes,
                CreatedDate      = DateTime.Now,
                LastModifiedDate = DateTime.Now
            };

            //dummy until we retrieve the actual user
            //quiz.UserId = DbContext.Users.Where(u => u.UserName == "Admin").FirstOrDefault().Id;
            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            DbContext.Quizzes.Add(quiz);
            DbContext.SaveChanges();

            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#16
0
        public IActionResult Put([FromBody] QuizViewModel vm)
        {
            if (vm == null)
            {
                return(new StatusCodeResult(500));
            }

            var quiz = _context.Quizzes.Where(x => x.Id == vm.Id).FirstOrDefault();

            if (quiz == null)
            {
                return(NotFound(new
                {
                    Error = String.Format("Quiz {0} ID has not been found", vm.Id)
                }));
            }

            quiz.Title       = vm.Title;
            quiz.Description = vm.Description;
            quiz.Text        = vm.Text;
            quiz.Notes       = vm.Notes;

            quiz.LastModified = quiz.CreatedDate;

            _context.SaveChanges();

            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#17
0
        public IActionResult Post([FromBody] QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }
            var quiz = new Quiz();

            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Text        = model.Text;
            quiz.Notes       = model.Notes;


            quiz.CreatedDate      = DateTime.Now;
            quiz.LastModifiedDate = quiz.CreatedDate;

            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            DbContext.Quizzes.Add(quiz);

            DbContext.SaveChanges();

            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#18
0
        public async Task <QuizViewModel?> GetActiveQuizAsync()
        {
            var retrieveUserOperation = TableOperation.Retrieve <QuizEntity>(Active, Active);
            var result = await _quizzesTable.ExecuteAsync(retrieveUserOperation);

            return(result.Result is QuizEntity entity?QuizViewModel.FromJson(entity.Json) : null);
        }
示例#19
0
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }

            var quiz = DbContext.Quizzes.Where(q => q.Id == model.Id).FirstOrDefault();

            if (quiz == null)
            {
                return(NotFound(new { Error = string.Format("nie znaleziono quizu o id: {0}", model.Id) }));
            }

            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Notes       = model.Description;
            quiz.Text        = model.Text;

            quiz.LastModifiedDate = DateTime.Now;

            DbContext.SaveChanges();

            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#20
0
        // Set short answer questions
        public QuizViewModel SetQuestionsSAQuiz(QuizViewModel quizVM)
        {
            // Create a dictionary to help grade the quiz on server side
            Dictionary <int, string> valuePairs = new Dictionary <int, string>();

            // Set the displayed questions based on the boolean from the user
            // Populate the keys of the dictionary with the appropriate QuestionIDs
            if (quizVM.PrivateSource)
            {
                quizVM.Questions = getUsersQuestions(quizVM);
                foreach (var item in quizVM.Questions)
                {
                    valuePairs.Add(item.QuestionID, null);
                }
            }
            else
            {
                quizVM.Questions = getUniqueQuestions(quizVM);
                foreach (var item in quizVM.Questions)
                {
                    valuePairs.Add(item.QuestionID, null);
                }
            }
            // set the VM property to the new dictionary
            quizVM.QidGuess = valuePairs;

            return(quizVM);
        }
示例#21
0
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            // return a generic HTTP Status 500 (Server Error)
            // if the client payload is invalid.
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }
            // handle the insert (without object-mapping)
            var quiz = new Quiz
            {
                // properties taken from the request
                Title       = model.Title,
                Description = model.Description,
                Text        = model.Text,
                Notes       = model.Notes,
                // properties set from server-side
                CreatedDate = DateTime.Now
            };

            quiz.LastModifiedDate = quiz.CreatedDate;
            // Set a temporary author using the Admin user's userId
            // as user login isn't supported yet: we'll change this later on.
            // retrieve the current user's Id
            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            // add the new quiz
            DbContext.Quizzes.Add(quiz);
            // persist the changes into the Database.
            DbContext.SaveChanges();
            // return the newly-created Quiz to the client.
            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#22
0
        public IActionResult GenerateRecentlyAddedQuestionsQuiz()
        {
            List <QuestionDto> quiz = _quizService.GenerateRecentlyAddedQuestionsQuiz();
            var quizViewModel       = new QuizViewModel(quiz);

            return(View("Quiz", quizViewModel));
        }
示例#23
0
文件: Quiz.cs 项目: Mr-357/TestIT
        //copy constructor
        public Quiz(QuizViewModel model)
        {
            this.Name = model.Name;
            this.numberOfQustionsPerTry = model.NumberOdQuestionsPerTry;
            this.time = model.Time;

            this.Questions = new List <Question>();
            foreach (QuestionModel questionModel in model.Questions)
            {
                Question tempQuestion = new Question();
                tempQuestion.QuestionText = questionModel.QuestionText;
                tempQuestion.Points       = questionModel.Points;
                tempQuestion.Picture      = questionModel.PicturePath;
                foreach (BaseAnswerModel answer in questionModel.Answers)
                {
                    if (answer.type.Contains("text"))
                    {
                        TextAnswer temp = new TextAnswer(answer.text, answer.IsCorrect);
                        tempQuestion.Answers.Add(temp);
                    }
                    else if (answer.type.Contains("region"))
                    {
                        tempQuestion.Answers.Add(new RegionAnswer(answer.x1, answer.x2, answer.y1, answer.y2, answer.IsCorrect));
                    }
                }
                this.Questions.Add(tempQuestion);
            }
        }
        public QuizViewModel GetQuizById(int quizId)
        {
            var quiz = this.db.Quizes
                       .Include(x => x.Questions)
                       .ThenInclude(x => x.Answers)
                       .FirstOrDefault(x => x.Id == quizId);

            var quizViewModel = new QuizViewModel
            {
                Id        = quizId,
                Title     = quiz.Title,
                Questions = quiz.Questions.OrderBy(r => Guid.NewGuid()).Select(x => new QuestionViewModel
                {
                    Id      = x.Id,
                    Title   = x.Title,
                    Answers = x.Answers.OrderBy(r => Guid.NewGuid()).Select(a => new AnswerViewModel
                    {
                        Id    = a.Id,
                        Title = a.Title
                    })
                              .ToList()
                })
                            .ToList()
            };

            return(quizViewModel);
        }
示例#25
0
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            // return a generic HTTP Status 500 (Server Error)
            // if the client payload is invalid.
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }
            // handle the insert (without object-mapping)
            var quiz = new Quiz();

            // properties taken from the request
            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Text        = model.Text;
            quiz.Notes       = model.Notes;
            // properties set from server-side
            quiz.CreatedDate      = DateTime.Now;
            quiz.LastModifiedDate = quiz.CreatedDate;
            // Set a temporary author using the Admin user's userId
            // as user login isn't supported yet: we'll change this later on.
            quiz.UserId = DbContext.Users.Where(u => u.UserName == "Admin").FirstOrDefault().Id;
            // add the new quiz
            DbContext.Quizzes.Add(quiz);
            // persist the changes into the Database.
            DbContext.SaveChanges();
            // return the newly-created Quiz to the client.
            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#26
0
        public IActionResult Post([FromBody] QuizViewModel model)
        {
            // return a generic HTTP Status 500 (Server Error)
            // if the client payload is invalid.
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }
            // retrieve the quiz to edit
            var quiz = DbContext.Quizzes.Where(q => q.Id == model.Id).FirstOrDefault();

            // handle requests asking for non-existing quizzes
            if (quiz == null)
            {
                return(NotFound(new
                {
                    Error = String.Format("Quiz ID {0} has not been found", model.Id)
                }));
            }
            // handle the update (without object-mapping)
            // by manually assigning the properties
            // we want to accept from the request
            quiz.Title       = model.Title;
            quiz.Description = model.Description;
            quiz.Text        = model.Text;
            quiz.Notes       = model.Notes;
            // properties set from server-side
            quiz.LastModifiedDate = quiz.CreatedDate;
            // persist the changes into the Database.
            DbContext.SaveChanges();
            // return the updated Quiz to the client.
            return(new JsonResult(quiz.Adapt <QuizViewModel>(), JsonSettings));
        }
示例#27
0
        public IActionResult Put([FromBody]QuizViewModel model)
        {
            // return a generic HTTP status 500 (Server Error)
            // if the client payload is invalid.
            if (model == null) return new StatusCodeResult(500);

            // handle the insert (without object-mapping)
            // properties taken from the request
            var quiz = new Quiz
            {
                Title = model.Title,
                Description = model.Description,
                Text = model.Text,
                Notes = model.Notes
            };

            // properties taken from server-side
            quiz.CreatedDate = DateTime.Now;
            quiz.LastModifiedDate = quiz.CreatedDate;

            // retrieve the current user's Id
            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            // add the new quiz
            DbContext.Quizzes.Add(quiz);
            DbContext.SaveChanges();

            // return the newly-created Quiz to the client.
            return new JsonResult(quiz.Adapt<QuizViewModel>(), JsonSettings);
        }
示例#28
0
        public async Task <SelectList> GenerateQuizesDropdown(bool selectEmpty = false, string specificIdToSelect = null)
        {
            var allItems = await _quiz.GetAsync();

            var emptyQuiz = new QuizViewModel()
            {
                Id   = -1,
                Name = "*** Leave this for no Quiz assignment ***"
            };

            allItems.Add(emptyQuiz);
            var quizesDropdownValues = new SelectList(allItems, "Id", "Name");

            if (selectEmpty)
            {
                var selected = quizesDropdownValues.Where(x => x.Value == "-1").First();
                selected.Selected = true;
            }
            if (specificIdToSelect != null)
            {
                var selected = quizesDropdownValues.Where(x => x.Value == specificIdToSelect).First();
                selected.Selected = true;
            }

            return(quizesDropdownValues);
        }
示例#29
0
 public ActionResult Create(QuizViewModel model)
 {
     var user = User.Identity.GetUserId();
     if (ModelState.IsValid)
     {
         Quiz quiz = new Quiz
         {
             TutorialId = db.Tutorials.First(x => x.Title == model.TutorialSelection).ID,
             EducatorId = User.Identity.GetUserId(),
             Name = model.Name,
             Goal = model.Goal,
             Instruction = model.Instruction,
             DisplayedCode = model.DisplayedCode,
             ExpectedInput = model.ExpectedInput,
             ExpectedOutput = model.ExpectedOutput,
             ErrorMessage = model.ErrorMessage,
             Answer = model.Answer
         };
         db.Quiz.Add(quiz);
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     ViewData["TutorialSelection"] = new SelectList(db.Tutorials.Where(x => x.EducatorId == user).ToList(), "Title", "Title");
     return View();
 }
示例#30
0
        public ActionResult Index(QuizViewModel model, QuizAction action)
        {
            long   temp   = 0;
            string answer = this.Request.Form["Answer"];

            if (!string.IsNullOrEmpty(answer))
            {
                temp = int.Parse(this.Request.Form["Answer"]);
            }
            switch (action)
            {
            case QuizAction.Submit:
                model.ItemNumber++;
                model.UserAnswer.Add(temp);
                this.ModelState.Remove("ItemNumber");
                calculationService.Num1 = randomiserService.RanFunc();
                calculationService.Num2 = randomiserService.RanFunc();
                model.QuizQuestions.Add(calculationService.RandomFunction(calculationService.Num1, calculationService.Num2));
                model.QuizAnswer.Add(calculationService.RandomFunctionResult(calculationService.Num1, calculationService.Num2));
                return(this.View(model));

            case QuizAction.Finish:
                for (int i = 0; i < model.QuizAnswer.Count - 1; i++)
                {
                    if (model.UserAnswer[i] == model.QuizAnswer[i])
                    {
                        model.CorrectAnswers += 1;
                    }
                }
                return(this.View("Result", model));

            default:
                throw new ArgumentOutOfRangeException(nameof(action), action, null);
            }
        }
示例#31
0
        public async Task <bool> CreateQuizAsync(QuizViewModel quizViewModel, CancellationToken cancellationToken = default)
        {
            using (SqlConnection connection = new SqlConnection(DefaultDataConfig.ConnectionString))
            {
                int insertedRecord = 0;

                try
                {
                    SqlCommand command = new SqlCommand("qsp_createQuiz", connection);
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.AddWithValue("@Name", quizViewModel.Name);
                    command.Parameters.AddWithValue("@PassPercentage", quizViewModel.PassPercentage);

                    connection.Open();
                    insertedRecord = await command.ExecuteNonQueryAsync(cancellationToken);

                    return(true);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                finally
                {
                    connection.Close();
                }

                return(false);
            }
        }
        public IActionResult Put([FromBody] QuizViewModel model)
        {
            // return a generic HTTP Status 500 (Server Error)
            // if the client payload is invalid.
            if (model == null)
            {
                return(new StatusCodeResult(500));
            }

            // map the ViewModel to the Model
            var quiz = model.Adapt <Quiz>();

            // override those properties
            //   that should be set from the server-side only
            quiz.CreatedDate      = DateTime.Now;
            quiz.LastModifiedDate = quiz.CreatedDate;

            // Set a temporary author using the Admin user's userId
            // as user login isn't supported yet: we'll change this later on.

            quiz.UserId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            // add the new quiz
            DbContext.Quizzes.Add(quiz);
            // persist the changes into the Database.
            DbContext.SaveChanges();

            // return the newly-created Quiz to the client.
            return(new JsonResult(quiz.Adapt <QuizViewModel>(),
                                  JsonSettings));
        }
 private void AddQuiz()
 {
     try
     {
         Quiz Q = new Quiz();
         Q.Name = _QuizName;
         DbContext.Quizen.Add(Q);
         DbContext.SaveChanges();
         QuizViewModel QVM = new QuizViewModel(Q);
         this.Quizes.Add(QVM);
         RaisePropertyChanged("Quizes");
     }
     catch { }
 }
示例#34
0
 private void PlayRandom()
 {
     if (SelectedCategory == null) return;
     var quiz = new QuizViewModel
     {
         QuizId = 1337,
         Name = SelectedCategory.Name
     };
     var questions = _questionRepository.GetQuestions()
         .Where(q => q.CategoryId == SelectedCategory.CategoryId)
         .Select(qq => new QuizQuestion
         {
             QuizId = quiz.QuizId,
             Quiz = quiz,
             QuestionId = qq.QuestionId,
             Question = qq
         })
         .ToList();
     if (questions.Count < 2)
     {
         MessageBox.Show("De opgegeven categorie bevat niet genoeg vragen.");
         return;
     }
     quiz.QuizQuestions = questions;
     Play(quiz);
 }
示例#35
0
 void OnRemoveQuiz()
 {
     if(_windowService.AskConfirmation("Wil je deze Quiz echt verwijderen?", "EditorView"))
     {
         SelectedQuiz.RemoveQuizCommand.Execute(null);
         AllQuizes.Remove(SelectedQuiz);
         SelectedQuiz = new QuizViewModel(new Quiz() { Questions = new List<QuizQuestion>() }, _quizRepo, _questionRepo, _categoryRepo, _notificationService);
         RemoveQuizCommand.RaiseCanExecuteChanged();
     }
     
 }
示例#36
0
 void OnAddQuiz()
 {
     SelectedQuiz = new QuizViewModel(new Quiz() { Questions = new List<QuizQuestion>() }, _quizRepo, _questionRepo, _categoryRepo, _notificationService);
     AllQuizes.Add(SelectedQuiz);
     RaisePropertyChanged("CanEditQuiz");
 }
示例#37
0
        public EditorViewModel(IRepository<Quiz> quizRepo,
                               IRepository<Category> categoryRepo,
                               IRepository<Question> questionRepo,
                               INotificationService notificationService,
                               IWindowService windowService)
        {
            _windowService = windowService;
            _notificationService = notificationService;
            _quizRepo = quizRepo;
            _questionRepo = questionRepo;
            _categoryRepo = categoryRepo;

            AllQuizes = new ObservableCollection<QuizViewModel>();
            AllQuestions = new ObservableCollection<QuestionViewModel>();
            AllCategories = new ObservableCollection<CategoryViewModel>();

            notificationService.OnStartedLoading += NotificationService_OnLoadingChanged;
            notificationService.OnStoppedLoading += NotificationService_OnLoadingChanged;
            notificationService.OnNewDisplayMessage += NotificationService_OnNewDisplayMessage;
            notificationService.OnMessageReceived += NotificationService_OnMessageReceived;

            LoadingVisibility = Visibility.Hidden;
            NotificationVisibility = Visibility.Hidden;

            RemoveQuizCommand = new RelayCommand(OnRemoveQuiz, CanRemoveQuiz);
            AddQuizCommand = new RelayCommand(OnAddQuiz);
            RemoveQuestionCommand = new RelayCommand(OnRemoveQuestion, CanRemoveQuestion);
            AddQuestionCommand = new RelayCommand(OnAddQuestion);
            AddAnswerCommand = new RelayCommand(OnAddAnwer, CanAddAnswer);
            RemoveAnswerCommand = new RelayCommand(OnRemoveAnswer, CanRemoveAnswer);
            SaveQuestionCommand = new RelayCommand(OnSaveQuestion, CanSaveQuestion);
            CloseNotificationCommand = new RelayCommand(OnCloseNotification);

            Task.Run(() =>
            {
                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    LoadingVisibility = Visibility.Visible;
                });

                var allQuizes = new List<QuizViewModel>();
                var allQuestions = new List<QuestionViewModel>();
                var allCategories = new List<CategoryViewModel>();

                foreach (var quiz in _quizRepo.GetAllItems())
                {                
                    allQuizes.Add(new QuizViewModel(quiz, _quizRepo, _questionRepo, _categoryRepo, notificationService));
                }

                foreach (var question in _questionRepo.GetAllItems())
                {
                    allQuestions.Add(new QuestionViewModel(question, _questionRepo, _categoryRepo, _notificationService));
                }

                foreach (var categorie in _categoryRepo.GetAllItems())
                {
                    allCategories.Add(new CategoryViewModel(categorie, _categoryRepo, _notificationService));
                }

                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    allQuizes.ForEach(q => AllQuizes.Add(q));
                    allQuestions.ForEach(q => AllQuestions.Add(q));
                    allCategories.ForEach(c => AllCategories.Add(c));

                    RaisePropertyChanged("AllQuizes");
                    RaisePropertyChanged("AllQuestions");
                    RaisePropertyChanged("AllCategories");
                    LoadingVisibility = Visibility.Hidden;
                });
            });            

            SelectedQuiz = new QuizViewModel(new Quiz() { Questions = new List<QuizQuestion>() }, _quizRepo, _questionRepo, _categoryRepo, notificationService);
            SelectedQuestion = new QuestionViewModel(new Question() { Answers = new List<Answer>(), Category = new Category() }, _questionRepo, _categoryRepo, _notificationService);
            NewCategory = new CategoryViewModel(new Category(), _categoryRepo, _notificationService);
            //SelectedTabIndex = 1;
        }
示例#38
0
 private void SaveQuiz()
 {
     if (string.IsNullOrEmpty(SelectedQuiz.Name))
         MessageBox.Show("Vul a.u.b. een naam in.");
     else if (IsNewQuiz)
     {
         IsNewQuiz = false;
         var poco = _quizRepository.CreateQuiz(SelectedQuiz);
         SelectedQuiz = new QuizViewModel(poco);
         Quizzes.Add(SelectedQuiz);
         MessageBox.Show("Quiz toegevoegd.");
     }
     else if (SelectedQuiz != null)
     {
         _quizRepository.UpdateQuiz(SelectedQuiz);
         MessageBox.Show("Quiz aagepast.");
     }
 }
示例#39
0
 private void Play(QuizViewModel quiz)
 {
     if (quiz == null)
         MessageBox.Show("Onverwachte fout.");
     var vm = _viewModelLocator.Get<PlayViewModel>();
     vm.CurrentQuiz = quiz;
     var wnd = WindowHelper.Switch<PlayWindow>();
     wnd.Closed += (sender, args) => WindowHelper.Show<HomeWindow>();
 }
示例#40
0
 private void AddQuiz()
 {
     if (IsNewQuiz) return;
     IsNewQuiz = true;
     SelectedQuiz = new QuizViewModel();
 }
示例#41
0
        public GameViewModel(QuizViewModel quiz, 
            IRepository<Quiz> quizRepo, 
            IRepository<Question> questionRepo, 
            IRepository<Category> categoryRepo, 
            INotificationService notificationService,
            IWindowService windowService)
        {
            _windowService = windowService;
            _quizRepo = quizRepo;
            _questions = new Queue<QuestionViewModel>();

            _quiz = quiz;//new QuizViewModel(_quizRepo.AsQueryable().First(), quizRepo, questionRepo, categoryRepo, notificationService);

            SelectAnswerCommand = new RelayCommand<Answer>(OnSelectAnswer);
            CloseWindowCommand = new RelayCommand(OnCloseWindow);

            foreach (var question in _quiz.Questions.Shuffle(new Random()))
            {
                _questions.Enqueue(question);
            }

            CurrentQuestion = _questions.Peek();
            CurrentQuestionCount = 1;
            LoadingVisibility = Visibility.Hidden;
            DoneVisibility = Visibility.Hidden;
        }