Ejemplo n.º 1
0
        private Valueanswer GenerateValueAnswer(OptionViewModel optionsViewModel, Answer answer)
        {
            var valueAnswer = new Valueanswer()
            {
                Idphoto            = optionsViewModel.PhotoId,
                IdanswerNavigation = answer,
            };


            //_context.Valueanswer.Add(valueAnswer);
            //_context.SaveChanges();
            return(valueAnswer);
        }
Ejemplo n.º 2
0
        private BeginSurveyViewModel GenerateBeginSurveyModel(IEnumerable <Answer> answers)
        {
            var options     = new List <OptionViewModel>();
            var photos      = _photoService.ListValidSurveyPhotos().ToList();
            var photoBuffer = new List <Photo>();

            do
            {
                var   randomIndex = RandomNumber.Between(0, photos.Count - 1);
                Photo sortedPhoto = photos.ElementAt(randomIndex);

                var   shouldSortAgain = false;
                var   isSecondOne     = photos.Count % 2 != 0;
                Photo previousPhoto   = photoBuffer.LastOrDefault();
                if (isSecondOne)
                {
                    if (previousPhoto == null)
                    {
                        throw new InvalidOperationException();
                    }

                    shouldSortAgain = previousPhoto.Elected == sortedPhoto.Elected;
                }

                if (shouldSortAgain)
                {
                    continue;
                }

                photoBuffer.Add(sortedPhoto);
                var optionViewModel = new OptionViewModel()
                {
                    PhotoId     = sortedPhoto.Idphoto,
                    Base64Photo = Convert.ToBase64String(sortedPhoto.FileContents)
                };

                options.Add(optionViewModel);
                photos.Remove(sortedPhoto);
            } while (photos.Any());

            var beginSurvey = new BeginSurveyViewModel();

            var savedValueAnswers     = new List <Valueanswer>();
            var optionVIewModelList   = new List <OptionViewModel>();
            var questionViewModelList = new List <QuestionViewModel>();

            foreach (Answer answer in answers)
            {
                var question = new QuestionViewModel {
                    AnswerId = answer.Idanswer
                };
                questionViewModelList.Add(question);

                for (var i = 0; i < Constants.TotalOptions; i++)
                {
                    OptionViewModel optionsViewModel = options.PopAt(0);

                    Valueanswer valueAnswer = GenerateValueAnswer(optionsViewModel, answer);

                    _context.Valueanswer.Add(valueAnswer);
                    question.Options.Add(optionsViewModel);
                    savedValueAnswers.Add(valueAnswer);
                    optionVIewModelList.Add(optionsViewModel);
                    // optionsViewModel.ValueAnswerId = valueAnswer.Idvalueanswer;
                }
            }

            _context.SaveChanges();

            foreach (QuestionViewModel question in questionViewModelList)
            {
                var firstOption  = optionVIewModelList.PopAt(0);
                var secondOption = optionVIewModelList.PopAt(0);

                var firstValueAnswer  = savedValueAnswers.PopAt(0);
                var secondValueAnswer = savedValueAnswers.PopAt(0);

                firstOption.ValueAnswerId  = firstValueAnswer.Idvalueanswer;
                secondOption.ValueAnswerId = secondValueAnswer.Idvalueanswer;

                question.Options = new List <OptionViewModel> {
                    firstOption, secondOption
                };

                beginSurvey.Questions.Add(question);
            }


            beginSurvey.Questions = beginSurvey.Questions.OrderBy(d => d.AnswerId).ToList();
            return(beginSurvey);
        }