コード例 #1
0
        /// <summary>
        /// Сохранение завершенного опроса
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int Save(FinishedSurveyModel model)
        {
            // Маппим на модель уровня данных и сохраняем
            var savedData = Mapper.Map <FinishedSurvey>(model);

            return(_finishedSurveyRepository.SaveOrAdd(savedData));
        }
コード例 #2
0
ファイル: ViewModelHelper.cs プロジェクト: wowikt/survey
        /// <summary>
        /// Построение бизнес-модели завершенного опроса из вью-модели плана опроса для сохранения
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static FinishedSurveyModel CreateFinishedSurveyModel(SurveyPlanViewModel model)
        {
            var result = new FinishedSurveyModel
            {
                SurveyPlanId          = model.Id,
                DateCreated           = DateTime.Now,
                FinishedSurveyAnswers = new List <FinishedSurveyAnswerModel>()
            };

            foreach (var question in model.QuestionModels)
            {
                switch (question.Type)
                {
                case QuestionType.ClosedSingle:
                {
                    // Для закрытого вопроса одиночного выбора находим
                    //  выбранный ответ и сохраняем его данные
                    int idx    = question.SelectedIndex;
                    var answer = question.Answers[idx];
                    result.FinishedSurveyAnswers.Add(new FinishedSurveyAnswerModel
                        {
                            AnswerId   = answer.Id,
                            AnswerText = answer.Text,
                            QuestionId = question.Id,
                        });
                }
                break;

                case QuestionType.ClosedMultiple:
                    foreach (var answer in question.Answers)
                    {
                        // Для закрытого вопроса множественного выбора находим
                        //  все выбранные ответы и сохраняем их данные
                        if (answer.IsSelected)
                        {
                            result.FinishedSurveyAnswers.Add(new FinishedSurveyAnswerModel
                            {
                                AnswerId   = answer.Id,
                                AnswerText = answer.Text,
                                QuestionId = question.Id,
                            });
                        }
                    }
                    break;

                case QuestionType.Open:
                    // Для открытого вопроса созраняем данные ответа
                    result.FinishedSurveyAnswers.Add(new FinishedSurveyAnswerModel
                    {
                        AnswerText = question.Answers[0].Text,
                        QuestionId = question.Id,
                    });
                    break;
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: ViewModelHelper.cs プロジェクト: wowikt/survey
        /// <summary>
        /// Построение вью-модели завершенного опроса из бизнес-модели
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static FinishedSurveyViewModel CreateFinishedSurveyViewModel(FinishedSurveyModel model)
        {
            var result = new FinishedSurveyViewModel
            {
                Id           = model.Id,
                SurveyPlanId = model.SurveyPlanId,
                DateCreated  = model.DateCreated,
                Questions    = new List <FinishedSurveyQuestionViewModel>()
            };

            // Выбираем все id вопросов
            var questionIds = model.FinishedSurveyAnswers.Select(a => a.QuestionId).Distinct().ToList();

            foreach (var id in questionIds)
            {
                // Для каждого id вопроса:
                //  1. Собираем содержимое вопроса
                var modelQuestion = model.FinishedSurveyAnswers.First(a => a.QuestionId == id)
                                    .Question;
                var question = new FinishedSurveyQuestionViewModel
                {
                    Id      = id,
                    Text    = modelQuestion.Text,
                    Type    = modelQuestion.Type,
                    Answers = new List <FinishedSurveyAnswerViewModel>()
                };

                //  2. Собираем все ответы на этот вопрос
                foreach (var answer in model.FinishedSurveyAnswers.Where(a => a.QuestionId == id))
                {
                    question.Answers.Add(new FinishedSurveyAnswerViewModel
                    {
                        Id         = answer.Id,
                        AnswerText = answer.AnswerText,
                        AnswerId   = answer.AnswerId,
                        QuestionId = answer.QuestionId,
                    });
                }

                result.Questions.Add(question);
            }

            return(result);
        }