QuestionQueryExtesions.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Exam.Infrastructure.Extensions;
  2. using Hotline.Application.Exam.Extensions;
  3. using Hotline.Share.Requests.Question;
  4. using JiebaNet.Segmenter.Common;
  5. using SqlSugar;
  6. using System.Linq.Expressions;
  7. using Hotline.Application.Exam.Core.Utilities;
  8. using Hotline.Exams.ExamManages;
  9. using Hotline.Exams.Questions;
  10. using ExamQuestion = Hotline.Exams.Questions.ExamQuestion;
  11. using ExamQuestionKnowladge = Hotline.Exams.Questions.ExamQuestionKnowladge;
  12. namespace Hotline.Application.Exam.QueryExtensions.Questions
  13. {
  14. public static class QuestionQueryExtesions
  15. {
  16. public static Expression<Func<ExamQuestion, bool>> GetExpression(this QuestionPagedRequest questionPagedRequest)
  17. {
  18. Expression<Func<ExamQuestion, bool>> expression = m => m.Id != null;
  19. expression = ExpressionableUtility.CreateExpression<ExamQuestion>().AndIF(questionPagedRequest.DifficultyLevel.IsNotNull(), x => questionPagedRequest.DifficultyLevel == x.DifficultyLevel)
  20. .AndIF(questionPagedRequest.Title.IsNotNullOrEmpty(), x => x.Title.Contains(questionPagedRequest.Title))
  21. .AndIF(questionPagedRequest.QuestionType.IsNotNull(),x=>x.QuestionType == questionPagedRequest.QuestionType)
  22. .ToExpression();
  23. return expression;
  24. }
  25. public static Expression<Func<ExamQuestionTag, bool>> GetQuestionTagExpression(this QuestionPagedRequest questionPagedRequest)
  26. {
  27. Expression<Func<ExamQuestionTag, bool>> expression = m => m.Id != null;
  28. expression = ExpressionableUtility.CreateExpression<ExamQuestionTag>().AndIF(questionPagedRequest.TagIds.IsNotNullOrEmpty(), x => questionPagedRequest.TagIds.Contains(x.TagId))
  29. .ToExpression();
  30. return expression;
  31. }
  32. public static Expression<Func<ExamTag, bool>> GetExamTagExpression(this QuestionPagedRequest questionPagedRequest)
  33. {
  34. Expression<Func<ExamTag, bool>> expression = m => m.Id != null;
  35. expression = ExpressionableUtility.CreateExpression<ExamTag>().
  36. AndIF(questionPagedRequest.TagIds.IsNotNullOrEmpty(), x => questionPagedRequest.TagIds.Contains(x.Id))
  37. .ToExpression();
  38. return expression;
  39. }
  40. public static Expression<Func<ExamQuestionKnowladge, bool>> GetQuestionKnowladgeExpression(this QuestionPagedRequest questionPagedRequest)
  41. {
  42. Expression<Func<ExamQuestionKnowladge, bool>> expression = m => m.Id != null;
  43. expression = ExpressionableUtility.CreateExpression<ExamQuestionKnowladge>().
  44. AndIF(questionPagedRequest.KnowladgeIds.IsNotNullOrEmpty(), x => questionPagedRequest.KnowladgeIds.Contains(x.KnowladgeId))
  45. .ToExpression();
  46. return expression;
  47. }
  48. }
  49. }