public async Task <SurveyViewModel> Get(string id) { try { var listId = new List <string> { "Id" }; var listSurveyId = new List <string> { "SurveyId" }; var listQuestionId = new List <string> { "QuestionId" }; var paraId = APIProvider.APIGeneratorParameter(listId, id); var paraSurveyId = APIProvider.APIGeneratorParameter(listSurveyId, id); //Get & Map survey var source = await _survey.SingleQuery(paraId); var dest = Mapper.Map <SurveyViewModel>(source); //Get & Map questions of survey var questions = await _survey.QuestionsQuery(paraSurveyId); dest.SurveyQuestionsModel = Mapper.Map <List <SurveyQuestionsViewModel> >(questions); //Get & Map answers of question foreach (var surveyquestion in dest.SurveyQuestionsModel) { var paraQuestionId = APIProvider.APIGeneratorParameter(listQuestionId, surveyquestion.Id); var answers = await _survey.AnswersQuery(paraQuestionId); surveyquestion.SurveyAnswersModel = Mapper.Map <List <SurveyAnswersViewModel> >(answers); } return(dest); } catch (Exception ex) { throw ex.GetBaseException(); } }