//Used public ActionResult GetQuestionByManagementID(int ManagementID) { using (IDbConnection dbConn = Helpers.OrmliteConnection.openConn()) { if (asset.View) { //get current survey: var management = dbConn.FirstOrDefault <CRM_Survey_Management>("Id=" + ManagementID); if (management.Status == "Kết thúc") { return(Json(new { success = false, alert = "Khảo sát này đã kết thúc." })); } if (management.StartDate < DateTime.Now && DateTime.Now < management.EndDate) { string query = @"SELECT q.Id, q.CategoryID,q.Type, q.QuestionID,q.[Description] FROM CRM_Survey_Management_Question mq LEFT JOIN CRM_Survey_Question q ON mq.QuestionID = q.QuestionID WHERE mq.SurveyManagementID = " + ManagementID + " Order By mq.SortOrder ASC"; var data = dbConn.Select <CRM_Survey_Question>(query); foreach (var item in data) { item.results = CRM_Survey_Question.GetQuestionList(item.QuestionID); } return(Json(new { success = true, data = data })); } else { return(Json(new { success = false, alert = "Thời điểm hiện tại không nằm trong thời gian làm survey." })); } } else { return(Json(new { success = false, alert = "Không có quyền survey" })); } } }
public ActionResult SaveSurvey(CRM_Survey_Management_Proceeded model) { using (var dbConn = OrmliteConnection.openConn()) using (var dbTrans = dbConn.OpenTransaction(IsolationLevel.ReadCommitted)) { if (ModelState.IsValid && asset.Update) { try { //current survey management: var currentSurvey = dbConn.FirstOrDefault <CRM_Survey_Management>("Id=" + model.SurveyManagementID); var write = new CRM_Survey_Management_Proceeded(); string query = @"SELECT q.Id, q.CategoryID,q.Type, q.QuestionID,q.[Description] FROM CRM_Survey_Management_Question mq LEFT JOIN CRM_Survey_Question q ON mq.QuestionID = q.QuestionID WHERE mq.SurveyManagementID = " + model.SurveyManagementID + " Order By mq.SortOrder ASC"; var listQuestion = dbConn.Select <CRM_Survey_Question>(query); int count = 0; foreach (var item in listQuestion) { if (item.Type == "Multi choice") { item.results = CRM_Survey_Question.GetQuestionList(item.QuestionID); write.SurveyManagementID = model.SurveyManagementID; write.Source = model.Source; write.QuestionID = item.QuestionID; write.QuestionType = item.Type; write.AnswerID = !string.IsNullOrEmpty(Request[item.QuestionID + item.QuestionID]) ? Request[item.QuestionID + item.QuestionID] : ""; //get list answer description if (write.AnswerID == "") { count++; continue; //throw new Exception("Chọn ít nhất một trả lời cho câu '" + item.Description + "'"); } write.Answer = ""; var listAnswer = dbConn.Select <CRM_Survey_AnswerList>("QuestionID={0}", write.QuestionID); //save maping vao cau tra loi for (int i = 0; i < write.AnswerID.Split(',').Length; i++) { write.Answer += listAnswer.FirstOrDefault(a => a.AnswerID == write.AnswerID.Split(',')[i].Trim()).AnswerDescription + ", "; } write.Answer = write.Answer.Trim(); write.Answer = write.Answer.Substring(0, write.Answer.Length - 1); write.CustomerID = model.CustomerID; write.CustomerName = model.CustomerName; write.Phone = model.Phone; write.PhysicalID = model.PhysicalID; write.CustomerRank = model.CustomerRank; write.Merchant = model.Merchant; write.OrderID = model.OrderID; write.Carrier = model.Carrier; write.CreatedAt = DateTime.Now; write.CreatedBy = currentUser.UserName; write.UpdatedAt = DateTime.Parse("1900-01-01"); write.UpdatedBy = ""; dbConn.Insert(write); write.Id = int.Parse(dbConn.GetLastInsertId().ToString()); foreach (var answer in item.results.Where(a => write.AnswerID.Contains(a.AnswerID))) { if (answer.Answer == "Yes") { CRM_Survey_Management_Proceeded_Answer pa = new CRM_Survey_Management_Proceeded_Answer(); pa.ProceededID = write.Id; pa.AnswerID = answer.AnswerID; pa.Answer = !string.IsNullOrEmpty(Request["Answer_" + item.QuestionID + answer.AnswerID]) ? Request["Answer_" + item.QuestionID + answer.AnswerID].Trim() : ""; dbConn.Insert(pa); } } } else if (item.Type == "Single choice") { write.SurveyManagementID = model.SurveyManagementID; write.Source = model.Source; write.QuestionID = item.QuestionID; write.QuestionType = item.Type; write.AnswerID = !string.IsNullOrEmpty(Request[item.QuestionID + item.QuestionID]) ? Request[item.QuestionID + item.QuestionID] : ""; if (write.AnswerID == "") { count++; continue; //throw new Exception("Chọn trả lời cho câu '" + item.Description + "'"); } var listAnswer = dbConn.FirstOrDefault <CRM_Survey_AnswerList>("AnswerID={0}", write.AnswerID); //save maping vao cau tra loi write.Answer = !string.IsNullOrEmpty(Request["Answer_" + item.QuestionID + write.AnswerID]) ? listAnswer.AnswerDescription + " - " + Request["Answer_" + item.QuestionID + write.AnswerID].Trim() : listAnswer.AnswerDescription; write.CustomerID = model.CustomerID; write.CustomerName = model.CustomerName; write.Phone = model.Phone; write.PhysicalID = model.PhysicalID; write.CustomerRank = model.CustomerRank; write.Merchant = model.Merchant; write.OrderID = model.OrderID; write.Carrier = model.Carrier; write.CreatedAt = DateTime.Now; write.CreatedBy = currentUser.UserName; write.UpdatedAt = DateTime.Parse("1900-01-01"); write.UpdatedBy = ""; dbConn.Insert(write); } else { write.SurveyManagementID = model.SurveyManagementID; write.Source = model.Source; write.QuestionID = item.QuestionID; write.QuestionType = item.Type; write.AnswerID = !string.IsNullOrEmpty(Request[item.QuestionID + item.QuestionID]) ? Request[item.QuestionID + item.QuestionID] : ""; write.Answer = !string.IsNullOrWhiteSpace(Request["Answer_" + item.QuestionID]) ? Request["Answer_" + item.QuestionID].Trim() : ""; if (write.Answer == "") { count++; continue; //throw new Exception("Chọn trả lời cho câu '" + item.Description + "'"); } write.CustomerID = model.CustomerID; write.CustomerName = model.CustomerName; write.Phone = model.Phone; write.PhysicalID = model.PhysicalID; write.CustomerRank = model.CustomerRank; write.Merchant = model.Merchant; write.OrderID = model.OrderID; write.Carrier = model.Carrier; write.CreatedAt = DateTime.Now; write.CreatedBy = currentUser.UserName; write.UpdatedAt = DateTime.Parse("1900-01-01"); write.UpdatedBy = ""; dbConn.Insert(write); } } if (count >= listQuestion.Count) { dbTrans.Rollback(); return(Json(new { success = false, message = "Phải trả lời ít nhất một câu hỏi để lưu kết quả survey. Bạn có thể bỏ qua khách hàng này bằng cách click vào 'Bỏ qua'" })); } //update survey management. currentSurvey.Actual = currentSurvey.Actual + 1; if (currentSurvey.Target > 0) { currentSurvey.Percent = ((double)currentSurvey.Actual / (double)currentSurvey.Target) * 100; } currentSurvey.Status = "Đang thực hiện"; dbConn.Update(currentSurvey); //update nguoi lam neu source la surveycustomer //if (model.Source == "SurveyCustomer") // dbConn.Update<CRM_Survey_Management_Customer>(set: "IsDone=1", where: "Phone='" + model.Phone + "'"); dbConn.Update <CRM_Survey_Management_Customer>(set: "IsDone=1", where : "Phone='" + model.Phone + "'"); dbTrans.Commit(); return(Json(new { success = true, })); } catch (Exception ex) { dbTrans.Rollback(); return(Json(new { success = false, message = ex.Message })); } } else { if (!asset.Update) { return(Json(new { error = true, message = "Không có quyền cập nhật." })); } string message = "Thông tin khách hàng còn thiếu. Cập nhật thông tin khách hàng để lưu khảo sát (Tên - ĐT)"; return(Json(new { success = false, message = message })); } } }