/// <summary> /// Чтение завершенного опроса /// </summary> /// <param name="id"></param> /// <returns></returns> public FinishedSurveyModel GetFinishedSurvey(int id) { // Извлекаем данные из базы и маппим их на класс результата var finishedSurvey = _finishedSurveyRepository.Get(id); var result = Mapper.Map <FinishedSurveyModel>(finishedSurvey); // Не хватает формулировок вопросов. Чтобы их получить, извлекаем план опроса var surveyPlan = _surveyPlanRepository.Get(result.SurveyPlanId); foreach (var answer in result.FinishedSurveyAnswers) { // Извлекаем из плана очередной вопрос и добавляем его к ответу. // Если его уже нет, создаем фиктивную запись. var planQuestion = surveyPlan.Questions.SingleOrDefault(q => q.Id == answer.QuestionId); if (planQuestion != null) { answer.Question = Mapper.Map <QuestionModel>(planQuestion); } else { answer.Question = new QuestionModel { Text = "Вопрос исключен из опроса" }; } } return(result); }
/// <summary> /// Получение плана опроса с данными всех уровней /// </summary> /// <param name="id"></param> /// <returns></returns> public SurveyPlanModel GetSurveyPlanModel(int id) { var dbData = _surveyPlanRepository.Get(id); var result = Mapper.Map <SurveyPlanModel>(dbData); // Вопросы маппятся отдельно, т. к. их маппинг по умолчанию отключен // посредством указания разных имен свойств, во избежание ошибок // при извлечении списка всех опросов result.QuestionModels = Mapper.Map <List <QuestionModel> >(dbData.Questions); return(result); }