using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum;
using Edu.Common.Enum.Question;
using Edu.Model.ViewModel.Question;
using Edu.Repository.Question;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using VT.FW.DB;
namespace Edu.Module.Question
{
///
/// 题库处理类
///
public class QuestionModule
{
///
/// 题目类型仓储层对象
///
private readonly RB_Question_TypeRepository question_TypeRepository = new RB_Question_TypeRepository();
///
/// 问题仓储层对象
///
private readonly RB_QuestionRepository questionRepository = new RB_QuestionRepository();
///
/// 知识点仓储层对象
///
private readonly RB_Question_PointRepository question_PointRepository = new RB_Question_PointRepository();
///
/// 问题解析处理类
///
private readonly AnalysisQuestionTypeModule analysisQuestion = new AnalysisQuestionTypeModule();
///
/// 题库仓储层对象
///
private readonly RB_Question_BankRepository question_BankRepository = new RB_Question_BankRepository();
///
/// 获取题库分页列表
///
///
///
///
///
///
public List GetQuestionBankPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_Bank_ViewModel query)
{
return question_BankRepository.GetQuestionBankPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 新增修改题库
///
///
///
public bool SetQuestionBankModule(RB_Question_Bank_ViewModel model)
{
bool flag;
if (model.BankId > 0)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_Bank_ViewModel.BankName), model.BankName },
{nameof(RB_Question_Bank_ViewModel.BankNo), model.BankNo },
};
flag = question_BankRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Bank_ViewModel.BankId), model.BankId));
}
else
{
var newId = question_BankRepository.Insert(model);
model.BankId = newId;
flag = newId > 0;
}
return flag;
}
///
/// 根据编号获取题库
///
///
///
public RB_Question_Bank_ViewModel GetQuestionBankModule(object BankId)
{
return question_BankRepository.GetEntity(BankId);
}
///
/// 删除题库
///
///
///
///
public bool RemoveQuestionBankModule(int bankId, int status)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_Bank_ViewModel.Status),status }
};
return question_BankRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Bank_ViewModel.BankId), bankId));
}
///
/// 获取题目类型列表
///
///
///
public List GetQuestionTypeListModule(RB_Question_Type_ViewModel query)
{
return question_TypeRepository.GetQuestionTypeListRepository(query);
}
///
/// 获取问题分页列表
///
///
///
///
///
///
public List GetQuestionPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_ViewModel query)
{
return questionRepository.GetQuestionPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 获取问题列表
///
///
///
public List GetQuestionListModule(RB_Question_ViewModel query)
{
return questionRepository.GetQuestionListRepository(query);
}
///
/// 新增修改题目
///
///
///
public virtual bool SetQuestionModule(RB_Question_ViewModel model)
{
bool flag;
if (model.QuestionId > 0)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_ViewModel.Title),model.Title },
{nameof(RB_Question_ViewModel.QuestionContent),(!string.IsNullOrEmpty(model.QuestionContent)?model.QuestionContent:"") },
{nameof(RB_Question_ViewModel.DifficultyType),(int)model.DifficultyType },
{nameof(RB_Question_ViewModel.AnswerParse),model.AnswerParse },
{nameof(RB_Question_ViewModel.QuestionTypeId),model.QuestionTypeId },
{nameof(RB_Question_ViewModel.QuestionTypeKey),model.QuestionTypeKey },
{nameof(RB_Question_ViewModel.Knowledge),model.Knowledge },
{nameof(RB_Question_ViewModel.IsUpdateJobExam),model.IsUpdateJobExam },
{nameof(RB_Question_ViewModel.UpdateBy),model.UpdateBy },
{nameof(RB_Question_ViewModel.UpdateTime),model.UpdateTime },
{nameof(RB_Question_ViewModel.Answer),model.Answer },
{nameof(RB_Question_ViewModel.IsMutex),model.IsMutex },
{nameof(RB_Question_ViewModel.Category),model.Category },
{nameof(RB_Question_ViewModel.LevelType),model.LevelType },
};
flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), model.QuestionId));
}
else
{
var newId = questionRepository.Insert(model);
model.QuestionId = newId;
flag = newId > 0;
if (flag)
{
Dictionary sortFileds = new Dictionary()
{
{nameof(RB_Question_ViewModel.SortNum),newId },
};
flag = questionRepository.Update(sortFileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), newId));
}
}
return flag;
}
///
/// 批量修改问题考级程度
///
///
///
///
public bool SetBatchQuestionLevelModule(LevelTypeEnum levelTypeEnum, List questionIdList)
{
return questionRepository.SetBatchQuestionLevelRepository(levelTypeEnum, questionIdList);
}
///
/// 批量添加问题
///
///
///
public virtual bool SetQuestionBatchModule(List list)
{
return questionRepository.InsertBatch(list);
}
///
/// 删除问题
///
///
///
public bool RemoveQuestionModule(object QuestionId)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_ViewModel.Status),(int)DateStateEnum.Delete},
};
bool flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), QuestionId));
return flag;
}
///
/// 更新问题排序
///
///
[TransactionCallHandler]
public virtual bool UpdateQuestionSortModule(int curQId, int targetQId)
{
var currentModel = GetQuestionModule(curQId);
var targetModel = GetQuestionModule(targetQId);
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_ViewModel.SortNum),targetModel.SortNum},
};
bool flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), curQId));
if (flag)
{
//排序修改
Dictionary fileds2 = new Dictionary()
{
{nameof(RB_Question_ViewModel.SortNum),currentModel.SortNum},
};
flag = questionRepository.Update(fileds2, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), targetQId));
}
return flag;
}
///
/// 根据编号获取问题实体
///
///
///
public RB_Question_ViewModel GetQuestionModule(object QuestionId,int isReplaceClozeTitle=0)
{
var extModel = questionRepository.GetEntity(QuestionId);
if (extModel != null)
{
if (extModel.QuestionTypeId > 0)
{
extModel.QuestionTypeName= question_TypeRepository.GetEntity(extModel.QuestionTypeId)?.Name ?? "";
}
extModel.QuestionContentObj = ParsingQuestionModule(extModel.QuestionTypeKey, extModel.QuestionContent);
if (!string.IsNullOrEmpty(extModel.Knowledge))
{
extModel.QuestionPointList = GetPointListModule(new RB_Question_Point_ViewModel() { QPointIds = extModel.Knowledge });
}
if (extModel.QuestionTypeKey == "cloze" && !string.IsNullOrEmpty(extModel.Title)&& isReplaceClozeTitle==1)
{
string categoryRule1 = @"##[1234567890]##";
Regex categoryReg = new Regex(categoryRule1);
MatchCollection matchs = categoryReg.Matches(extModel.Title);
foreach (var item in matchs)
{
if (item != null && !string.IsNullOrEmpty(item.ToString()))
{
var content = item.ToString().Replace("#", "");
extModel.Title = extModel.Title.Replace(item.ToString(), Common.ConvertHelper.GetSpanString(content, isAddNbsp: true));
}
}
}
}
return extModel;
}
///
/// 获取问题选项相关信息
///
///
///
///
public object ParsingQuestionModule(string questionKey, string questionContent)
{
return analysisQuestion.ParsingQuestion(questionKey, questionContent);
}
///
/// 获取问题知识点列表
///
///
///
public List GetPointListModule(RB_Question_Point_ViewModel query)
{
return question_PointRepository.GetPointListRepository(query);
}
///
/// 获取知识点分页列表
///
///
///
///
///
///
public List GetPointPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_Point_ViewModel query)
{
return question_PointRepository.GetPointPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 根据知识点编号获取知识点
///
///
///
public RB_Question_Point_ViewModel GetQuestionPointModule(object PointId)
{
return question_PointRepository.GetEntity(PointId);
}
///
/// 新增修改知识点
///
///
///
public bool SetQuestionPointModule(RB_Question_Point_ViewModel model)
{
bool flag;
if (model.PointId > 0)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_Point_ViewModel.PointName),model.PointName.Trim() }
};
flag = question_PointRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Point_ViewModel.PointId), model.PointId));
}
else
{
var newId = question_PointRepository.Insert(model);
model.PointId = newId;
flag = newId > 0;
}
return flag;
}
///
/// 根据编号删除知识点
///
///
///
public bool RemoveQuestionPointModule(object PointId)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_Question_Point_ViewModel.Status), (int)DateStateEnum.Delete }
};
bool flag = question_PointRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Point_ViewModel.PointId), PointId));
return flag;
}
}
}