private void NextQuestion() { if (questionCounter >= questions.Count) { OnRoundEnd?.Invoke(); return; } Question q = questions[questionCounter]; currentQuestion = q; MediaAnswer answer = new MediaAnswer(); if (q.AnswerVideoPath != null) { answer.AnswerVideoPath = q.AnswerVideoPath; answer.Kind = AnswerKind.WithVideo; } else if (q.AnswerImagePath != null) { answer.AnswerImagePath = q.AnswerImagePath; answer.Kind = AnswerKind.WithImage; } else { answer.Kind = AnswerKind.Simple; } if (q.VideoPath != null) { Extensions.ExcecuteWithAppIdleDispatcher(() => OnNewQuestion?.Invoke(q.Id, q.QuestionText, q.RightAnswer, q.TimeToAnswer, QuestionKind.WithVideo, null, q.VideoPath, answer)); } else if (q.ImagePath != null) { Extensions.ExcecuteWithAppIdleDispatcher(() => OnNewQuestion?.Invoke(q.Id, q.QuestionText, q.RightAnswer, q.TimeToAnswer, QuestionKind.WithImage, null, q.ImagePath, answer)); } else if (q.Answers != null) { Extensions.ExcecuteWithAppIdleDispatcher(() => OnNewQuestion?.Invoke(q.Id, q.QuestionText, q.RightAnswer, q.TimeToAnswer, QuestionKind.WithAnswers, q.Answers, null, answer)); } else { Extensions.ExcecuteWithAppIdleDispatcher(() => OnNewQuestion?.Invoke(q.Id, q.QuestionText, q.RightAnswer, q.TimeToAnswer, QuestionKind.Simple, null, null, answer)); } questionCounter++; isQuestionAnswered = true; isWrongAnswer = false; isWrongPlayer = false; }
public IActionResult PostIdeationReply([FromForm] IdeationReplyDTO ideationReplyDto) { // return Created("/ideation/overview/1", null); //log test 1 Ideation ideation = _ideationManager.GetIdeationWithQuestions(ideationReplyDto.IdeationId); //log test 2 User user = _usermanager.GetUserAsync(User).Result; //log test 3 if (ideation == null || user == null) { return(NotFound()); } //log test 4 IdeationReply newReply = new IdeationReply() { Ideation = ideation, Title = ideationReplyDto.Title, Answers = new List <Answer>(), Votes = new List <Vote>(), Comments = new List <Comment>(), Created = DateTime.Now, User = user, Reports = new List <IdeationReport>() }; //log test 5 int index = 0; ideationReplyDto.Answers.ForEach(dto => { Answer newAnswer = null; switch (dto.FieldType) { case FieldType.OpenText: newAnswer = new OpenTextAnswer() { QuestionIndex = dto.QuestionIndex, Value = dto.OpenAnswer }; break; case FieldType.Image: case FieldType.Video: string fileName = Util.Util.GenerateDataStoreObjectName(dto.FileAnswer.FileName); string pathName = _fileUploader.UploadFile(fileName, "ideationReply", dto.FileAnswer).Result; newAnswer = new MediaAnswer() { QuestionIndex = dto.QuestionIndex, Value = new Media() { Name = dto.FileAnswer.FileName, Url = pathName } }; break; case FieldType.SingleChoice: case FieldType.DropDown: newAnswer = new SingleChoiceAnswer() { QuestionIndex = dto.QuestionIndex, SelectedChoice = dto.SingleAnswer }; break; case FieldType.MultipleChoice: newAnswer = new MultipleChoiceAnswer() { QuestionIndex = dto.QuestionIndex, SelectedChoices = dto.MultipleAnswer }; break; case FieldType.Location: newAnswer = new LocationAnswer() { QuestionIndex = dto.QuestionIndex, Value = new Location() { Latitude = dto.LocationAnswer.Latitude, Longitude = dto.LocationAnswer.Longitude, ZoomLevel = dto.LocationAnswer.ZoomLevel, } }; break; default: throw new ArgumentOutOfRangeException(); } newAnswer.OrderIndex = index++; newReply.Answers.Add(newAnswer); }); //log test 6 _ideationManager.AddIdeationReply(newReply); //log test 7 // Create activity var activity = CreateActivity(ActivityType.IdeationReply, user); activity.IdeationReply = newReply; _activityManager.AddActivity(activity); //log test 8 // Save everything _unitOfWorkManager.Save(); //log test 9 // Push activity var activityVm = new ActivityViewModel(activity); //log test 10 PushWebsockets(activityVm).Wait(); //log test 11 return(Created("/ideation/view/" + newReply.IdeationReplyId, new { id = newReply.IdeationReplyId })); }
/// <summary> /// Invoke when manager starts new question /// </summary> /// <param name="id">Number of question</param> /// <param name="text">Text of question</param> /// <param name="secondsToAnswer">Time in seconds to answer</param> /// <param name="kind">Type of question</param> /// <param name="answers">List of answers</param> /// <param name="mediaPath">Path to video or picture for question</param> private void QuizManager_OnNewQuestion(int id, string text, string rightAnswer, int secondsToAnswer, QuestionKind kind, List <Answer> answers, Uri mediaPath, MediaAnswer mediaAnswer) { switch (kind) { case QuestionKind.WithVideo: { ShowBlacker(); ImageAndVideoGrid.Children[0].Visibility = Visibility.Collapsed; MediaGrid.Visibility = Visibility.Visible; MediaBorder.Padding = new Thickness(200, 30, 200, 0); MediaBlock.Source = mediaPath; MediaBlock.Visibility = Visibility.Visible; MediaBlock.Play(); isVideoQuestion = true; isVideoPlay = true; break; } case QuestionKind.WithImage: { ShowBlacker(); MediaBlock.Stop(); ImageAndVideoGrid.Children.RemoveAt(0); Image image = new Image(); BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = mediaPath; src.EndInit(); image.Source = src; image.Stretch = Stretch.Uniform; ImageAndVideoGrid.Children.Insert(0, image); MediaGrid.Visibility = Visibility.Visible; MediaBlock.Visibility = Visibility.Collapsed; isVideoQuestion = false; break; } case QuestionKind.Simple: { HideBlacker(); MediaBlock.Stop(); MediaDockPanel.Visibility = Visibility.Collapsed; MediaBlock.Visibility = Visibility.Collapsed; isVideoQuestion = false; break; } } switch (mediaAnswer.Kind) { case AnswerKind.WithImage: { RightAnswerMediaGrid.Visibility = Visibility.Visible; RightAnswerMediaBlock.Stop(); RightAnswerMediaBlock.Visibility = Visibility.Collapsed; RightMediaInnerGrid.Children.RemoveAt(0); Image image = new Image(); BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = mediaAnswer.AnswerImagePath; src.EndInit(); image.Source = src; image.Stretch = Stretch.Uniform; RightMediaInnerGrid.Children.Insert(0, image); if (src.Height > SystemParameters.PrimaryScreenHeight / 2.4) { (RightMediaInnerGrid.Children[0] as Image).Height = SystemParameters.PrimaryScreenHeight / 2.4; } RightAnswerDockPanel.Margin = new Thickness(0, 20, 0, 0); break; } case AnswerKind.WithVideo: { RightAnswerMediaGrid.Visibility = Visibility.Visible; RightAnswerMediaBlock.Visibility = Visibility.Visible; RightMediaInnerGrid.Children[0].Visibility = Visibility.Collapsed; RightAnswerMediaBlock.Source = mediaAnswer.AnswerVideoPath; RightAnswerMediaBlock.Play(); RightAnswerDockPanel.Margin = new Thickness(0, 20, 0, 0); break; } case AnswerKind.Simple: { RightAnswerMediaGrid.Visibility = Visibility.Collapsed; RightAnswerDockPanel.Margin = new Thickness(0, 100, 0, 0); break; } } QuestionNumberFontSize = 33 - ((int)Math.Log10(QuestionNumber) + 1) * 2; if (text.Count() < 93) { QuestionTextBlock.VerticalAlignment = VerticalAlignment.Center; } else if (text.Count() < 185) { QuestionTextBlock.VerticalAlignment = VerticalAlignment.Top; } else { QuestionTextBlock.VerticalAlignment = VerticalAlignment.Top; text = text.Substring(0, 182) + "..."; } QuestionText = text; Regex reg = new Regex(@"\s{2,}"); text = reg.Replace(text, " "); MainWindowQuestion = text; AnswerTimerText = secondsToAnswer.ToString(); _answersTime = TimeSpan.FromSeconds(secondsToAnswer); QuestionNumber = id; RightAnswer = rightAnswer; RightAnswerGrid.Visibility = Visibility.Hidden; RightAnswerMediaBlock.Stop(); MediaGrid.Visibility = Visibility.Visible; MediaDockPanel.Visibility = Visibility.Visible; ShowImage(); }