/// <summary>
 /// Initializes a new instance of the <see cref="TiMuEntry" /> class.
 /// </summary>
 /// <param name="timuJsonModel">The timu json model.</param>
 /// <param name="tiMu">The ti mu.</param>
 public TiMuEntry(TimuJsonModel timuJsonModel, TiMu tiMu)
 {
     _timuJsonModel = timuJsonModel;
     //获取题目对象
     _timu = tiMu;
     /* GeTiMuById(_timuJsonModel.TiMuId);*/
 }
        private void PrepareTopic(EntryExaminationModel model, TiMu timu)
        {
            //根据科目id获取所以子孙知识点集合
            var knowledegs      = _knowledgeService.GetChildPoints(timu.SubjectId, null);
            var knowledgeSource = new List <KnowledgePiont>();

            knowledegs.ForEach(d =>
            {
                knowledgeSource.Add(new KnowledgePiont()
                {
                    Id        = d.Id,
                    Kpid      = d.Id,
                    Name      = d.Name,
                    ParentId  = d.ParentId,
                    SubjectId = d.SubjectId
                });
            });
            var revertPage = new RevertPage();

            revertPage.Tmid            = timu.Id.ToString();
            revertPage.KnowledgeSource = knowledgeSource;
            //获取本题目主知识点
            var maink = _knowledgeService.GetMainKnowledgeByTiMu(timu.Id, timu.SubjectId);
            //获取本题目相关知识点
            var minors    = _knowledgeService.GetMinorTiMuKnowledgeByTiMu(timu.Id, timu.SubjectId);
            var minorList = new List <KnowledgePiont>();

            revertPage.Diff         = timu.Difficult;
            revertPage.VideoId      = timu.VideoCode;
            revertPage.Teacher      = "";
            revertPage.ErrorMessage = timu.BookTiMu.ErrorInfo;
            if (maink != null)
            {
                revertPage.MainTiMuKnowledge = new KnowledgePiont()
                {
                    Id        = maink.Id,
                    Kpid      = maink.Id,
                    Name      = maink.Name,
                    ParentId  = maink.ParentId,
                    SubjectId = maink.SubjectId
                };
            }
            else
            {
                revertPage.MainTiMuKnowledge = null;
            }
            minors.ForEach(d =>
            {
                minorList.Add(new KnowledgePiont()
                {
                    Id        = d.Id,
                    Kpid      = d.Id,
                    Name      = d.Name,
                    ParentId  = d.ParentId,
                    SubjectId = d.SubjectId
                });
            });
            revertPage.MinorTiMuKnowledge = minorList;
            model.RevertPage = revertPage;
        }
 /// <summary>
 /// 添加题目
 /// </summary>
 /// <param name="tiMu">The ti mu.</param>
 /// <exception cref="System.ArgumentNullException"></exception>
 public void InsertTiMu(TiMu tiMu)
 {
     if (tiMu == null)
     {
         throw new ArgumentNullException(nameof(tiMu));
     }
     _tiMuRepository.Insert(tiMu);
 }
Exemple #4
0
 public TiMuBuiltRequest(TiMu tiMu, string index = null, string applicationUrl = null, bool isAnalyticVisable = false, int?choiceIndex = null, bool isCreatePdf = false)
 {
     this.TiMu              = tiMu;
     this.Index             = index;
     this.IsAnalyticVisable = isAnalyticVisable;
     this.ChoiceIndex       = choiceIndex;
     this.IsCreatePdf       = isCreatePdf;
     this.ApplicationUrl    = applicationUrl;
 }
        /// <summary>
        /// 录题页面编辑使用
        /// </summary>
        /// <returns></returns>
        public static void EntryGeTiMuFormatById(TiMu timu)
        {
            var inputs = timu.Inputs;

            if (inputs.Any())
            {
                var reg       = new Regex("<kbd></kbd>");
                var inputList = inputs.OrderBy(d => d.Order).ToList();
                for (int i = 0; i < inputList.Count; i++)
                {
                    var type = inputList[i].InputType;
                    switch (type)
                    {
                    case "radio":
                        timu.Trunk = timu.Trunk.Replace("<kbd></kbd>", "");
                        break;

                    case "checkbox-all":
                        timu.Trunk = timu.Trunk.Replace("<kbd></kbd>", "");
                        break;

                    case "online-input":
                        var online = "[k type=\"" + type + "\" score=\"" + inputList[i].InputScore + "\"]" + inputList[i].InputAnswer + "[/k]";
                        timu.Trunk = reg.Replace(timu.Trunk, online, 1, 0);
                        break;

                    case "duoguo-input":
                        var duoguo = "[k type=\"" + type + "\" score=\"" + inputList[i].InputScore + "\"]" + inputList[i].InputAnswer + "[/k]";
                        timu.Trunk = reg.Replace(timu.Trunk, duoguo, 1, 0);
                        break;

                    default:
                        var others = "[k type=\"" + type + "\" score=\"" + inputList[i].InputScore + "\"]" + inputList[i].InputAnswer + "[/k]";
                        timu.Trunk = reg.Replace(timu.Trunk, others, 1, 0);
                        break;
                    }
                }
            }
        }
        private void TiMuConvert(EntryExaminationModel model, TiMu timu)
        {
            var inputs  = new List <JsonInput>();
            var choices = new List <JsonInputChoice>();

            foreach (Input input in timu.Inputs.OrderBy(d => d.Order))
            {
                //选项
                foreach (InputChoice choice in input.InputChoice.OrderBy(d => d.Order))
                {
                    choices.Add(new JsonInputChoice()
                    {
                        Id            = choice.Id,
                        InputId       = choice.InputId,
                        ChoiceContent = choice.ChoiceContent,
                        Score         = choice.Score,
                        Order         = choice.Order
                    });
                }
                //答案
                inputs.Add(new JsonInput()
                {
                    Id          = input.Id,
                    TmId        = input.TmId,
                    InputCode   = input.InputCode,
                    BaseType    = input.BaseType,
                    InputType   = input.InputType,
                    Score       = input.Score,
                    Order       = input.Order,
                    InputAnswer = input.InputAnswer,
                    InputChoice = choices
                });
            }
            model.Timu = new JsonTiMu()
            {
                Id            = timu.Id,
                SubjectId     = timu.SubjectId,
                TiMuTypeId    = timu.TiMuTypeId,
                Trunk         = timu.Trunk,
                Analysis      = timu.Analysis,
                Answer        = timu.Answer,
                Comment       = timu.Comment,
                Difficult     = timu.Difficult,
                Discriminate  = timu.Discriminate,
                StandardTime  = timu.StandardTime,
                StanderdScroe = timu.StanderdScroe,
                AbilityId     = timu.AbilityId,
                GradeId       = timu.GradeId,
                Year          = timu.Year,
                Soure         = timu.Soure,
                QualityId     = timu.QualityId,
                Price         = timu.Price,
                Inputs        = inputs,
                LargeNumber   = timu.BookTiMu.LargeNumber,
                SmallNumber   = timu.BookTiMu.SmallNumber,
                PageNumber    = timu.BookTiMu.PageNumber
            };
            if (timu.Subject != null)
            {
                model.Timu.Subject = new JsonSubject()
                {
                    Id         = timu.Subject.Id,
                    Name       = timu.Subject.Name,
                    SystemCode = timu.Subject.SystemCode,
                    DegreeId   = timu.Subject.DegreeId,
                    ParentId   = timu.Subject.ParentId,
                    Order      = timu.Subject.Order,
                    Active     = timu.Subject.Active
                };
            }
        }
 /// <summary>
 /// Updates the ti mu.
 /// </summary>
 /// <param name="tiMu">The ti mu.</param>
 public void UpdateTiMu(TiMu tiMu)
 {
     _tiMuRepository.Update(tiMu);
 }
        /// <summary>
        /// 解析题目(选项、分析、解答、点评等)并且保存到相应的表
        /// </summary>
        /// <param name="timuStr">The timu string.</param>
        /// <param name="taskItemId">The task item identifier.</param>
        /// <param name="parentTmId">The parent tm identifier.</param>
        /// <param name="property">The property.</param>
        /// <returns></returns>
        public string SaveTiMu(string timuStr, int?taskItemId, Guid?parentTmId, string property = null)
        {
            var    question     = "";
            string callbackTmid = string.Empty;

            try
            {
                //序列化前端页面题目对象
                var timuEntity = timuStr.Json2Obj <TimuJsonModel>();
                var timu       = _tiMuRepository.GetById(timuEntity.TiMuId);
                callbackTmid = timuEntity.TiMuId.ToString();
                if (timu == null)
                {
                    timu = new TiMu()
                    {
                        Id = timuEntity.TiMuId, SubjectId = timuEntity.SubjectId, ParentId = parentTmId
                    };
                    InsertTiMu(timu);
                    //把题目归属到对应的章节下面
                    var taskItem = _bookWorkTaskItemRepository.GetById(taskItemId);
                    var bookTimu = new BookTiMu()
                    {
                        TaskItemId = taskItem.Id,
                        Id         = timu.Id,
                        BookId     = taskItem.BookChapter.BookId,
                        Status     = BookTiMu.TimuStatus.Valid,
                        Order      = timuEntity.TimuBookOrder ?? 1
                    };
                    _bookTiMuRepository.Insert(bookTimu);
                    //保存一个空的答案数据到数据库,用于页面编辑前端js使用
                    var input = new Input()
                    {
                        Id          = Guid.NewGuid(),
                        TmId        = timu.Id,
                        InputCode   = timu.Id + "_a",
                        BaseType    = "text",
                        InputType   = "",
                        InputAnswer = "",
                        Score       = 0,
                        Order       = 1,
                    };
                    callbackTmid = timu.Id.ToString();
                    _inputRepository.Insert(input);
                }
                var tiMuEntry = new TiMuEntry(timuEntity, timu);
                var result    = tiMuEntry.TiMuFormat();
                //更新题目
                _tiMuRepository.Update(result.TiMu);
                //如果有答案则更新,没有就添加
                foreach (Input d in result.InputList)
                {
                    var input = _inputRepository.GetById(d.Id);
                    if (input != null)
                    {
                        _inputRepository.Update(d);
                    }
                    else
                    {
                        _inputRepository.Insert(d);
                    }
                }
                //如果有选项则更行,没有就添加
                foreach (InputChoice d in result.InputChoiceList)
                {
                    var choice = _inputChoiceRepository.GetById(d.Id);
                    if (choice != null)
                    {
                        _inputChoiceRepository.Update(d);
                    }
                    else
                    {
                        _inputChoiceRepository.Insert(d);
                    }
                }
                //删除答案
                if (result.DeleteInputs != null && result.DeleteInputs.Any())
                {
                    _inputRepository.Delete(result.DeleteInputs);
                }
                //更新booktimu相關信息
                var booktimu = timu.BookTiMu;
                if (booktimu != null)
                {
                    booktimu.LargeNumber = timuEntity.LargeNumber;
                    booktimu.SmallNumber = timuEntity.SmallNumber;
                    booktimu.PageNumber  = timuEntity.PageNumber;
                    _bookTiMuRepository.Update(booktimu);
                }
                question = "保存成功!";
                if (property != null)
                {
                    question = SaveTiMuMark(property);
                }
            }
            catch (Exception e)
            {
                question = "保存失败:" + e.Message;
            }
            var obj = new { info = question, tmid = callbackTmid };

            return(obj.Obj2Json());
        }