Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }