TrainPlanQueryExtensions.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Exam.Infrastructure.Extensions;
  2. using Exam.Infrastructure.Web.Utilities;
  3. using Exam.Trains;
  4. using Hotline.Application.Exam.Extensions;
  5. using Hotline.Exams.Trains;
  6. using Hotline.Share.Requests.Train;
  7. using JiebaNet.Segmenter.Common;
  8. using System.Linq.Expressions;
  9. namespace Hotline.Application.Exam.QueryExtensions.Trains
  10. {
  11. public static class TrainPlanQueryExtensions
  12. {
  13. public static Expression<Func<TrainPlan,bool>> GetExpression(this TrainPlanPagedRequest trainPlanPagedRequest)
  14. {
  15. Expression<Func<TrainPlan, bool>> expression = m => m.Id != null;
  16. expression = ExpressionableUtility.CreateExpression<TrainPlan>()
  17. .AndIF(trainPlanPagedRequest.Code.IsNotNullOrEmpty(), x => x.Code.Contains(trainPlanPagedRequest.Code))
  18. .AndIF(trainPlanPagedRequest.Name.IsNotNullOrEmpty(), x => x.Name.Contains(trainPlanPagedRequest.Name))
  19. .AndIF(trainPlanPagedRequest.MaxStartTime.IsNotNull(), x => x.TrainStartTime <= trainPlanPagedRequest.MaxStartTime)
  20. .AndIF(trainPlanPagedRequest.MinStartTime.IsNotNull(), x => x.TrainEndTime >= trainPlanPagedRequest.MinStartTime)
  21. .ToExpression();
  22. return expression;
  23. }
  24. public static Expression<Func<TrainPlanTemplate,bool>> GetTemplateExpression(this TrainPlanPagedRequest trainPlanPagedRequest)
  25. {
  26. Expression<Func<TrainPlanTemplate, bool>> expression = m => m.Id != null;
  27. expression = ExpressionableUtility.CreateExpression<TrainPlanTemplate>()
  28. .AndIF(trainPlanPagedRequest.TrainTemplateIds.IsNotNullOrEmpty(), x => trainPlanPagedRequest.TrainTemplateIds.Contains(x.TrainTemplateId))
  29. .ToExpression();
  30. return expression;
  31. }
  32. public static Expression<Func<TrainPlan, bool>> GetExpression(this TrainResultReportPagedRequest trainResultReportPagedRequest)
  33. {
  34. Expression<Func<TrainPlan, bool>> expression = m => m.Id != null;
  35. expression = ExpressionableUtility.CreateExpression<TrainPlan>()
  36. .AndIF(trainResultReportPagedRequest.StartTime.IsNotNull(), x => x.TrainStartTime >= trainResultReportPagedRequest.StartTime)
  37. .AndIF(trainResultReportPagedRequest.EndTime.IsNotNull(), x => x.TrainStartTime <= trainResultReportPagedRequest.EndTime)
  38. .ToExpression();
  39. return expression;
  40. }
  41. public static Expression<Func<TrainTemplate, bool>> GetTemplateExpression(this TrainResultReportPagedRequest trainResultReportPagedRequest)
  42. {
  43. Expression<Func<TrainTemplate, bool>> expression = m => m.Id != null;
  44. expression = ExpressionableUtility.CreateExpression<TrainTemplate>()
  45. .AndIF(trainResultReportPagedRequest.Keyword.IsNotNullOrEmpty(), x => x.Name.Contains(trainResultReportPagedRequest.Keyword))
  46. .ToExpression();
  47. return expression;
  48. }
  49. }
  50. }