public async Task <IActionResult> GetResponseByFeedbackId(string feedbackId) { /*_equipmentGroup.*/ //get questionId from feedbackId List <Question> listQuestion = _questionRepository.GetAll().ToList <Question>(); List <Question> listQuestionForFb = new List <Question>(); List <string> listQuestionId = new List <string>(); List <ResponseModel> listResponse = new List <ResponseModel>(); List <Response> listTmp = new List <Response>(); List <ResponseModel> listResForOneQues = new List <ResponseModel>(); List <List <ResponseModel> > listResult = new List <List <ResponseModel> >(); foreach (Question que in listQuestion) { if (que.FeedbackId.Equals(feedbackId)) { listQuestionId.Add(que.QuestionId); listQuestionForFb.Add(que); } } //get all response from QuestionID for (int questionIndex = 0; questionIndex < listQuestionId.Count; questionIndex++) { listTmp = _responseRepository.GetResponseByQuestionId(listQuestionId[questionIndex]).ToList(); foreach (Response r in listTmp) { String tmpResponseDetail = r.ResponseDetail; List <string> listResponseDetail = new List <string>(); //TypeOfQuestion 1: Emotion if (r.Question.TypeOfQuestion == 1) { switch (tmpResponseDetail) { case "1": tmpResponseDetail = "Thất vọng"; break; case "2": tmpResponseDetail = "Tạm ổn"; break; case "3": tmpResponseDetail = "Tốt"; break; case "4": tmpResponseDetail = "Tuyệt vời"; break; case "5": tmpResponseDetail = "Yêu thích"; break; } } //TypeOfQuestion 2: Rating star else if (r.Question.TypeOfQuestion == 2) { tmpResponseDetail = r.ResponseDetail.Substring(0, 1) + " sao"; } else if (r.Question.TypeOfQuestion == 3) { listResponseDetail = getResponseDetail(r.ResponseDetail); foreach (string detail in listResponseDetail) { ResponseModel resModelForMultichoice = new ResponseModel { equipmentId = r.EquipmentId, questionId = questionIndex + "", responseDetail = detail, typeOfQuestion = r.Question.TypeOfQuestion + "", responseTime = r.ResponseTime }; listResponse.Add(resModelForMultichoice); } } //TypeOfQuestion 4: one choice else if (r.Question.TypeOfQuestion == 4) { tmpResponseDetail = r.ResponseDetail; } if (r.Question.TypeOfQuestion != 3) { ResponseModel resModel = new ResponseModel { equipmentId = r.EquipmentId, questionId = questionIndex + "", responseDetail = tmpResponseDetail, typeOfQuestion = r.Question.TypeOfQuestion + "", responseTime = r.ResponseTime }; listResponse.Add(resModel); if (questionIndex == 0) { listResForOneQues.Add(resModel); } } } listResult.Add(listResponse); } var settings = new ConnectionConfiguration(new Uri("http://localhost:9200")) .RequestTimeout(TimeSpan.FromMinutes(2)); var lowlevelClient = new ElasticLowLevelClient(settings); //push data on elastic for count response of feedback int i = 0; int checkIdOfIndexExist = 0; if (HttpContext.Session.GetInt32("TotalIdIndexOfCountRes") != null) { checkIdOfIndexExist = (int)HttpContext.Session.GetInt32("TotalIdIndexOfCountRes"); if (checkIdOfIndexExist != 0) { //Clear all data in index for (int j = 1; j <= checkIdOfIndexExist; j++) { lowlevelClient.Delete <StringResponse>("countresponseforfb", Convert.ToString(j)); } HttpContext.Session.Remove("TotalIdIndexOfCountRes"); } } foreach (ResponseModel res in listResForOneQues) { lowlevelClient.Index <StringResponse>("countresponseforfb", Convert.ToString(++i), PostData.Serializable(res)); } HttpContext.Session.SetInt32("TotalIdIndexOfCountRes", i); //Id cho tung object trong index #region push response on elastic i = 0; checkIdOfIndexExist = 0; if (HttpContext.Session.GetInt32("TotalIdIndex") != null) { checkIdOfIndexExist = (int)HttpContext.Session.GetInt32("TotalIdIndex"); if (checkIdOfIndexExist != 0) { //Clear all data in index for (int j = 1; j <= checkIdOfIndexExist; j++) { lowlevelClient.Delete <StringResponse>("testresponse", Convert.ToString(j)); } HttpContext.Session.Remove("TotalIdIndex"); } } foreach (ResponseModel res in listResponse) { lowlevelClient.Index <StringResponse>("testresponse", Convert.ToString(++i), PostData.Serializable(res)); } HttpContext.Session.SetInt32("TotalIdIndex", i); #endregion ViewBag.countResponse = listResForOneQues.Count; ViewBag.listQuestion = listQuestionForFb; ViewBag.feedbackId = feedbackId; getFeedbackIDByBrandId(); getEquipmentGroupId(); await HttpContext.Session.LoadAsync(); HttpContext.Session.SetString("feedbackId", feedbackId); await HttpContext.Session.CommitAsync(); EquipmentGroup e = new EquipmentGroup { EquipmentGroupId = HttpContext.Session.GetString("equipmentGroupId") }; await GetListFeedbackByEquipmentGroupId(e); return(View("Admin")); }