/// <summary> /// Сохранение завершенного опроса /// </summary> /// <param name="model"></param> /// <returns></returns> public int Save(FinishedSurveyModel model) { // Маппим на модель уровня данных и сохраняем var savedData = Mapper.Map <FinishedSurvey>(model); return(_finishedSurveyRepository.SaveOrAdd(savedData)); }
/// <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); }
/// <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); }