UserExamQueryExtensions.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using Exam.Infrastructure.Extensions;
  2. using Exam.Share;
  3. using Hotline.Share.Requests.Exam;
  4. using Hotline.Share.Requests.Train;
  5. using JiebaNet.Segmenter.Common;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Linq.Expressions;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using Hotline.Application.Exam.Core.Utilities;
  13. using Hotline.Exams.ExamManages;
  14. namespace Hotline.Application.Exam.QueryExtensions.ExamManages
  15. {
  16. public static class UserExamQueryExtensions
  17. {
  18. public static Expression<Func<ExamUserExam,bool>> GetExpression(this UserExamPagedRequest userExamPagedRequest)
  19. {
  20. Expression<Func<ExamUserExam, bool>> expression = m => m.Id != null;
  21. expression = ExpressionableUtility.CreateExpression<ExamUserExam>()
  22. .AndIF(userExamPagedRequest.MinScore.IsNotNull(), x => x.Score >= userExamPagedRequest.MinScore)
  23. .AndIF(userExamPagedRequest.MaxScore.IsNotNull(), x => x.Score <= userExamPagedRequest.MaxScore)
  24. .And(x=>x.UserId == userExamPagedRequest.UserId)
  25. .ToExpression();
  26. return expression;
  27. }
  28. public static Expression<Func<ExamManage,bool>> GetExamManageExpression(this UserExamPagedRequest userExamPagedRequest)
  29. {
  30. Expression<Func<ExamManage, bool>> expression = m => m.Id != null;
  31. expression = ExpressionableUtility.CreateExpression<ExamManage>()
  32. .AndIF(userExamPagedRequest.Name.IsNotNullOrEmpty(), x => x.Name.Contains(userExamPagedRequest.Name))
  33. .AndIF(userExamPagedRequest.ExamType.IsNotNull(), x => x.ExamType == userExamPagedRequest.ExamType)
  34. .AndIF(userExamPagedRequest.MinStartTime.IsNotNull(),x=>x.StartTime >= userExamPagedRequest.MinStartTime)
  35. .AndIF(userExamPagedRequest.MaxStartTime.IsNotNull(),x=>x.StartTime <= userExamPagedRequest.MaxStartTime)
  36. .AndIF(userExamPagedRequest.MinEndTime.IsNotNull(), x => x.EndTime >= userExamPagedRequest.MinEndTime)
  37. .AndIF(userExamPagedRequest.MaxEndTime.IsNotNull(),x=>x.EndTime <= userExamPagedRequest.MaxEndTime)
  38. .AndIF(userExamPagedRequest.MinTotalScore.IsNotNull(),x=>x.TotalScore >= userExamPagedRequest.MinTotalScore)
  39. .AndIF(userExamPagedRequest.MaxTotalScore.IsNotNull(),x=>x.TotalScore <= userExamPagedRequest.MaxTotalScore)
  40. .ToExpression();
  41. return expression;
  42. }
  43. public static Expression<Func<ExamUserExam,bool>> GetExpression(this GradingExamRequest gradingExamRequest)
  44. {
  45. Expression<Func<ExamUserExam, bool>> expression = m => m.Id != null;
  46. expression = ExpressionableUtility.CreateExpression<ExamUserExam>()
  47. .AndIF(gradingExamRequest.ExamId.IsNotNullOrEmpty(), x => x.ExamId == gradingExamRequest.ExamId)
  48. .AndIF(gradingExamRequest.UserId.IsNotNullOrEmpty(), x => x.UserId == gradingExamRequest.UserId).ToExpression();
  49. return expression;
  50. }
  51. public static Expression<Func<ExamManage,bool>> GetExpression(this UnExamUserReportPagedRequest unExamUserReportPagedRequest)
  52. {
  53. Expression<Func<ExamManage, bool>> expression = m => m.Id != null;
  54. expression = ExpressionableUtility.CreateExpression<ExamManage>()
  55. .AndIF(unExamUserReportPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= unExamUserReportPagedRequest.StartTime)
  56. .AndIF(unExamUserReportPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= unExamUserReportPagedRequest.EndTime)
  57. .AndIF(unExamUserReportPagedRequest.Keyword.IsNotNull(), x => x.Name.Contains(unExamUserReportPagedRequest.Keyword))
  58. .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.Complete)
  59. .ToExpression();
  60. return expression;
  61. }
  62. public static Expression<Func<ExamUserExam, bool>> GetUserExamExpression(this UnExamUserReportPagedRequest unExamUserReportPagedRequest)
  63. {
  64. Expression<Func<ExamUserExam, bool>> expression = m => m.Id != null;
  65. expression = ExpressionableUtility.CreateExpression<ExamUserExam>()
  66. .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.NoStart)
  67. .ToExpression();
  68. return expression;
  69. }
  70. public static Expression<Func<ExamManage,bool>> GetExpression(this UserExamResultReportPagedRequest userExamResultReportPagedRequest)
  71. {
  72. Expression<Func<ExamManage, bool>> expression = m => m.Id != null;
  73. expression = ExpressionableUtility.CreateExpression<ExamManage>()
  74. .AndIF(userExamResultReportPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= userExamResultReportPagedRequest.StartTime)
  75. .AndIF(userExamResultReportPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= userExamResultReportPagedRequest.EndTime)
  76. .AndIF(userExamResultReportPagedRequest.Keyword.IsNotNull(), x => x.Name.Contains(userExamResultReportPagedRequest.Keyword))
  77. .ToExpression();
  78. return expression;
  79. }
  80. public static Expression<Func<ExamUserExam, bool>> GetUserExamExpression(this UserExamResultReportPagedRequest userExamResultReportPagedRequest)
  81. {
  82. Expression<Func<ExamUserExam, bool>> expression = m => m.Id != null;
  83. expression = ExpressionableUtility.CreateExpression<ExamUserExam>()
  84. .AndIF(userExamResultReportPagedRequest.MinScore.IsNotNull(), x => x.Score >= userExamResultReportPagedRequest.MinScore)
  85. .AndIF(userExamResultReportPagedRequest.MaxScore.IsNotNull() && userExamResultReportPagedRequest.MinScore.IsNull(), x => x.Score <= userExamResultReportPagedRequest.MaxScore || x.Score== null)
  86. .AndIF(userExamResultReportPagedRequest.MaxScore.IsNotNull() && userExamResultReportPagedRequest.MinScore.IsNotNull(), x => x.Score <= userExamResultReportPagedRequest.MaxScore)
  87. .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.Complete)
  88. .ToExpression();
  89. return expression;
  90. }
  91. }
  92. }