private Valueanswer GenerateValueAnswer(OptionViewModel optionsViewModel, Answer answer) { var valueAnswer = new Valueanswer() { Idphoto = optionsViewModel.PhotoId, IdanswerNavigation = answer, }; //_context.Valueanswer.Add(valueAnswer); //_context.SaveChanges(); return(valueAnswer); }
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); }