public JsonResult SaveSort(int pid, int id, string sname, string df, string bks = "", string hbt = "", string tc = "",
                                   string wp = "")
        {
            Cde_IndexSort sort;

            if (id == 0)
            {
                sort              = new Cde_IndexSort();
                sort.ParentId     = pid;
                sort.SortName     = sname;
                sort.IndexDefine  = df;
                sort.Books        = bks;
                sort.Habits       = hbt;
                sort.TrainCourse  = tc;
                sort.WorkPractice = wp;
                sort.TenantId     = CurrentUser.TenantId;
                if (sort.ParentId == 0)
                {
                    sort.LevelPath = sort.SortName;
                }
                else
                {
                    var p = _sortManager.GetSort(sort.ParentId);
                    sort.LevelPath = p.SortName + "/" + sort.SortName;
                }
                _sortManager.AddSort(sort);
            }
            else
            {
                sort = _sortManager.GetSort(id);

                sort.ParentId = pid;
                if (sort.TenantId != CurrentTenant.TenantId)
                {
                    return(Json(new { result = 0, errorMsg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr5 }, JsonRequestBehavior.DenyGet));
                }
                if (sort.ParentId == 0)
                {
                    sort.LevelPath = sort.SortName;
                }
                else
                {
                    var p = _sortManager.GetSort(sort.SortId);
                    sort.LevelPath = p.SortName + "/" + sort.SortName;
                }
                sort.SortName     = sname;
                sort.IndexDefine  = df;
                sort.Books        = bks;
                sort.Habits       = hbt;
                sort.TrainCourse  = tc;
                sort.WorkPractice = wp;
                _sortManager.UpdateSort(sort);
            }
            return(Json(new { result = 1 }, JsonRequestBehavior.DenyGet));
        }
        public ActionResult EditSort(int sortId)
        {
            var model = _sortManager.GetSort(sortId);

            if (model == null || model.TenantId != CurrentUser.TenantId)
            {
                model = new Cde_IndexSort();
            }
            ViewBag.parentId = model.ParentId;
            return(View(model));
        }
        public ActionResult EditSecondSort(int sortId, int parentId)
        {
            var model = _sortManager.GetSort(sortId);

            if (model == null || model.TenantId != CurrentUser.TenantId)
            {
                model       = new Cde_IndexSort();
                ViewBag.pid = parentId;
            }
            else
            {
                ViewBag.pid = model.ParentId;
            }
            ViewBag.fsorts = _sortManager.GetFirstSorts(CurrentUser.TenantId);

            return(View(model));
        }
        public JsonResult ImportQuestion(int saveflag = -1)
        {
            try
            {
                int needloadSort = 0;
                if (Request.Files.Count == 0 || Request.Files[0] == null || Request.Files[0].ContentLength == 0)
                {
                    return(Json(new
                    {
                        result = 0,
                        msg = RetechWing.LanguageResources.Notes.NoteLanguage.PleaseChoose + "Excel" + RetechWing.LanguageResources.TalnetUI.CdeQuestion.File
                    }, "text/html", JsonRequestBehavior.DenyGet));
                }
                var file = Request.Files[0];

                if (!file.FileName.EndsWith(".xls", StringComparison.CurrentCultureIgnoreCase))
                {
                    //不是Excel文件
                    return(Json(new
                    {
                        result = 0,
                        msg = RetechWing.LanguageResources.Notes.NoteLanguage.PleaseChoose + "Excel" + RetechWing.LanguageResources.TalnetUI.CdeQuestion.File
                    }, "text/html", JsonRequestBehavior.DenyGet));
                }
                string path = Server.MapPath("~/UploadFiles/tmp/");
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                var filename = path + Guid.NewGuid() + ".xls";
                file.SaveAs(filename);

                IWorkbook workbook = Factory.GetWorkbook(filename, System.Globalization.CultureInfo.CurrentCulture);
                DataSet   ds       = workbook.GetDataSet(GetDataFlags.FormattedText);
                if ((ds.Tables.Count < 1) || (!ds.Tables[0].TableName.StartsWith("Sheet1")))
                {
                    return(Json(new
                    {
                        result = 0,
                        msg = "Excel" + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr1
                    }, "text/html", JsonRequestBehavior.DenyGet));
                }

                DataTable dt = ds.Tables[0];

                //把所有的指标全部找出来
                var allIndexs = _sortManager.GetSorts(CurrentTenant.TenantId);
                //记录问题提干所在的行
                var questions = new Dictionary <int, Cde_IndexQuestion>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var question = new Cde_IndexQuestion();
                    question.TenantId = CurrentTenant.TenantId;
                    if (dt.Rows[i][0] != null && dt.Rows[i][0] != DBNull.Value && dt.Rows[i][0].ToString() != "")
                    {
                        questions.Add(i, question);
                    }
                }
                var list = questions.Keys.ToList();

                for (int i = 0; i < questions.Count; i++)
                {
                    int rowIndex = list[i];
                    //questions[rowIndex].Order = int.Parse(dt.Rows[rowIndex][0].ToString());
                    questions[rowIndex].QuestionType = 0;
                    //处理指标
                    var sortName1 = dt.Rows[rowIndex].Field <string>(RetechWing.LanguageResources.TalnetUI.CdeQuestion.ClassStr);
                    if (string.IsNullOrEmpty(sortName1))
                    {
                        return(Json(new { result = 0, msg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.The + (rowIndex + 1) + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr4 + RetechWing.LanguageResources.TalnetUI.CdeQuestion.ClassStr }, "text/html", JsonRequestBehavior.DenyGet));
                    }
                    var sort1 = allIndexs.FirstOrDefault(p => p.SortName == sortName1 && p.ParentId == 0);
                    if (sort1 == null)
                    {
                        needloadSort = 1;
                        sort1        = new Cde_IndexSort()
                        {
                            SortName  = sortName1,
                            ParentId  = 0,
                            LevelPath = sortName1,
                            TenantId  = CurrentTenant.TenantId,
                            IsDelete  = 0
                        };
                        allIndexs.Add(sort1);
                        _sortManager.AddSort(sort1);
                    }
                    var sortName2 = dt.Rows[rowIndex].Field <string>(RetechWing.LanguageResources.TalnetUI.CdeQuestion.ClassStr1);
                    if (string.IsNullOrEmpty(sortName2))
                    {
                        return(Json(new { result = 0, msg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.The + (rowIndex + 1) + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr2 + RetechWing.LanguageResources.TalnetUI.CdeQuestion.ClassStr1 }, "text/html", JsonRequestBehavior.DenyGet));
                    }
                    var sort2 = allIndexs.FirstOrDefault(p => p.SortName == sortName2 && p.ParentId > 0);
                    if (sort2 == null)
                    {
                        needloadSort = 1;
                        sort2        = new Cde_IndexSort()
                        {
                            SortName  = sortName2,
                            ParentId  = sort1.SortId,
                            LevelPath = sortName1 + "/" + sortName2,
                            TenantId  = CurrentTenant.TenantId,
                            IsDelete  = 0
                        };
                        allIndexs.Add(sort2);
                        _sortManager.AddSort(sort2);
                    }
                    questions[rowIndex].SortId       = sort1.SortId;
                    questions[rowIndex].SecondSortId = sort2.SortId;
                    questions[rowIndex].QuestionName = dt.Rows[rowIndex]["题目"].ToString();
                    if (string.IsNullOrEmpty(questions[rowIndex].QuestionName))
                    {
                        return(Json(new { result = 0, msg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.The + (rowIndex + 2) + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr3 }, "text/html", JsonRequestBehavior.DenyGet));
                    }

                    questions[rowIndex].IsDelete   = 0;
                    questions[rowIndex].CreateTime = DateTime.Now;
                    questions[rowIndex].UserId     = CurrentUser.UserId;
                    int maxIndex = i == list.Count - 1 ? dt.Rows.Count : list[i + 1];
                    //if (maxIndex == rowIndex)
                    //{
                    //   return Json(new { result = 0, msg = "第"+(rowIndex+1)+"行的题目没有选项"},"text/html", JsonRequestBehavior.DenyGet);
                    //}
                    for (int j = rowIndex; j < maxIndex; j++)
                    {
                        if (questions[rowIndex].QuestionType == 2)
                        {
                            continue;
                        }
                        var answer = new Cde_IndexQuestionAnswer()
                        {
                            OrderChar = dt.Rows[j]["答案序号"].ToString(),
                            Answer    = dt.Rows[j]["答案内容"].ToString(),
                            Score     = dt.Rows[j]["分值"].ToString().GetInt32(0)
                        };
                        questions[rowIndex].Answers.Add(answer);
                    }
                    if (questions[rowIndex].Answers.Count == 0)
                    {
                        //添加默认选项
                        questions[rowIndex].Answers.Add(new Cde_IndexQuestionAnswer()
                        {
                            Answer = RetechWing.LanguageResources.TalnetUI.CdeQuestion.VeryAgree, OrderChar = "A", Score = 5
                        });
                        questions[rowIndex].Answers.Add(new Cde_IndexQuestionAnswer()
                        {
                            Answer = RetechWing.LanguageResources.TalnetUI.CdeQuestion.MoreAgree, OrderChar = "B", Score = 4
                        });
                        questions[rowIndex].Answers.Add(new Cde_IndexQuestionAnswer()
                        {
                            Answer = RetechWing.LanguageResources.TalnetUI.CdeQuestion.General, OrderChar = "C", Score = 3
                        });
                        questions[rowIndex].Answers.Add(new Cde_IndexQuestionAnswer()
                        {
                            Answer = RetechWing.LanguageResources.TalnetUI.CdeQuestion.VeryNoAgree, OrderChar = "D", Score = 2
                        });
                        questions[rowIndex].Answers.Add(new Cde_IndexQuestionAnswer()
                        {
                            Answer = RetechWing.LanguageResources.TalnetUI.CdeQuestion.MoreNoAgree, OrderChar = "E", Score = 1
                        });
                    }
                    //验证选项的多少
                    if (questions[rowIndex].Answers.Count > 26)
                    {
                        return(Json(new { result = 0, msg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.The + (rowIndex + 1) + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr4 + RetechWing.LanguageResources.Survey.SurveyLanguage.OptionsTooMany }, "text/html", JsonRequestBehavior.DenyGet));
                    }
                    if (questions[rowIndex].Answers.Count < 2)
                    {
                        return(Json(new { result = 0, msg = RetechWing.LanguageResources.TalnetUI.CdeQuestion.The + (rowIndex + 1) + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr4 + RetechWing.LanguageResources.Survey.SurveyLanguage.OptionsTooLittle }, "text/html", JsonRequestBehavior.DenyGet));
                    }
                }
                _cdeQuestionManager.AddQuestions(questions.Values.ToArray());
                try
                {
                    System.IO.File.Delete(filename);
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(RetechWing.LanguageResources.TalnetUI.CdeQuestion.Nullfile + filename + RetechWing.LanguageResources.Exam.Exampaper.DeleteFail, ex);
                }
                if (saveflag == 0)
                {
                    return(Json(new { result = 1, msg = RetechWing.LanguageResources.Exam.Exampaper.ImportSuccess, list = questions.Values.ToArray() }, "text/html;charset=utf-8", JsonRequestBehavior.DenyGet));
                }
                return(Json(new
                {
                    result = 1,
                    needloadSort,
                    msg = RetechWing.LanguageResources.Exam.Exampaper.ImportSuccess
                }, "text/html", JsonRequestBehavior.DenyGet));
            }
            catch (Exception)
            {
                return(Json(new
                {
                    result = 0,
                    msg = "Excel" + RetechWing.LanguageResources.TalnetUI.CdeQuestion.LongStr1
                }, "text/html", JsonRequestBehavior.DenyGet));
            }
        }