public virtual void Can_add_valid_first_dependent_when_multiple_possible_principal_sides() { ExecuteWithStrategyInTransaction( context => { var quizTask = new QuizTask(); quizTask.Choices.Add(new TaskChoice()); context.Add(quizTask); Assert.True(context.ChangeTracker.HasChanges()); context.SaveChanges(); Assert.False(context.ChangeTracker.HasChanges()); }, context => { var quizTask = context.Set <QuizTask>().Include(e => e.Choices).Single(); Assert.Equal(quizTask.Id, quizTask.Choices.Single().QuestTaskId); Assert.Same(quizTask.Choices.Single(), context.Set <TaskChoice>().Single()); Assert.Empty(context.Set <HiddenAreaTask>().Include(e => e.Choices)); }); }
public async Task GenerateQuizzes(Game forGame) { var beaconsInGame = Beacons.Query(new BeaconsFromPark(forGame.ParkId)) .ToList(); var questions = (await Questions.Get()) .ToList(); var usedQuestions = new List <Guid>(); foreach (var beacon in beaconsInGame) { // Create questions range for any players foreach (var player in forGame.Participants) { var randQuestion = GetRandomQuestionFrom(questions, usedQuestions); var quizTask = new QuizTask() { QuizId = player.QuizId, BeaconInParkId = beacon.Id, QuestionId = randQuestion.Id }; await QuizTasks.Insert(quizTask); player.Quiz.QuizTasks.Add(quizTask); usedQuestions.Add(randQuestion.Id); questions.Remove(randQuestion); } } }
public static Quiz CreateNew(string quizName, List <VariantTask> tasks) { if (tasks.Count == 0) { throw new EmptyTaskListException(); } var quiz = new Quiz { QuizName = quizName }; foreach (var task in tasks) { var quizTask = new QuizTask { Quiz = quiz, Task = task }; quiz.Tasks.Add(quizTask); task.Quizzes.Add(quizTask); } return(quiz); }
public virtual void Can_add_multiple_dependents_when_multiple_possible_principal_sides() { ExecuteWithStrategyInTransaction( context => { var quizTask = new QuizTask(); quizTask.Choices.Add(new TaskChoice()); quizTask.Choices.Add(new TaskChoice()); context.Add(quizTask); var hiddenAreaTask = new HiddenAreaTask(); hiddenAreaTask.Choices.Add(new TaskChoice()); hiddenAreaTask.Choices.Add(new TaskChoice()); context.Add(hiddenAreaTask); Assert.True(context.ChangeTracker.HasChanges()); context.SaveChanges(); Assert.False(context.ChangeTracker.HasChanges()); }, context => { var quizTask = context.Set <QuizTask>().Include(e => e.Choices).Single(); var hiddenAreaTask = context.Set <HiddenAreaTask>().Include(e => e.Choices).Single(); Assert.Equal(2, quizTask.Choices.Count); foreach (var quizTaskChoice in quizTask.Choices) { Assert.Equal(quizTask.Id, quizTaskChoice.QuestTaskId); } Assert.Equal(2, hiddenAreaTask.Choices.Count); foreach (var hiddenAreaTaskChoice in hiddenAreaTask.Choices) { Assert.Equal(hiddenAreaTask.Id, hiddenAreaTaskChoice.QuestTaskId); } foreach (var taskChoice in context.Set <TaskChoice>()) { Assert.Equal( 1, quizTask.Choices.Count(e => e.Id == taskChoice.Id) + hiddenAreaTask.Choices.Count(e => e.Id == taskChoice.Id)); } }); }
public async Task <IActionResult> Get() { var quizTask = new QuizTask { StartTime = 45m, Duration = 10m, Subject = "Is there any life on the Mars?", Choices = new List <TaskChoice>() }; quizTask.Choices.Add(new TaskChoice { Text = "Yes", IsCorrect = false }); quizTask.Choices.Add(new TaskChoice { Text = "No", IsCorrect = false }); quizTask.Choices.Add(new TaskChoice { Text = "May be", IsCorrect = false }); quizTask.Choices.Add(new TaskChoice { Text = "I don't know", IsCorrect = false }); var hiddenAreaTask = new HiddenAreaTask { StartTime = 61m, Duration = 10m, CenterX = 0.5m, CenterY = 0.5m, Radius = 0.2m, Choices = new List <TaskChoice>() }; hiddenAreaTask.Choices.Add(new TaskChoice { CenterX = 0.2m, CenterY = 0.2m, Radius = 0.1m, ImageFilename = "choice1", ImageMime = "image/jpeg", IsCorrect = false }); hiddenAreaTask.Choices.Add(new TaskChoice { CenterX = 0.3m, CenterY = 0.3m, Radius = 0.1m, ImageFilename = "choice2", ImageMime = "image/jpeg", IsCorrect = true }); hiddenAreaTask.Choices.Add(new TaskChoice { CenterX = 0.4m, CenterY = 0.4m, Radius = 0.1m, ImageFilename = "choice3", ImageMime = "image/jpeg", IsCorrect = false }); var hearTask = new HearTask { StartTime = 50m, Duration = 65m, Subject = "Kitchen", TimelinePoints = new List <TimelinePoint>() }; hearTask.TimelinePoints.Add(new TimelinePoint { Position = 55m }); hearTask.TimelinePoints.Add(new TimelinePoint { Position = 60m }); var quest = new Quest { Name = "Cool video quest", StartTime = 35.6m, Duration = 103.5m, IsPublished = false, Tasks = new List <QuestTask>() }; quest.Tasks.Add(quizTask); quest.Tasks.Add(hiddenAreaTask); quest.Tasks.Add(hearTask); _context.Quests.Add(quest); await _context.SaveChangesAsync(); return(Ok("Quest was successfully added")); }