Пример #1
0
        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;
        }
Пример #2
0
        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 }));
        }
Пример #3
0
        /// <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();
        }