using Exam.Infrastructure.Extensions; using Exam.Infrastructure.Web.Utilities; using Exam.Trains; using Hotline.Application.Exam.Extensions; using Hotline.Exams.Trains; using Hotline.Share.Requests.Train; using JiebaNet.Segmenter.Common; using System.Linq.Expressions; namespace Hotline.Application.Exam.QueryExtensions.Trains { public static class TrainPlanQueryExtensions { public static Expression> GetExpression(this TrainPlanPagedRequest trainPlanPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(trainPlanPagedRequest.Code.IsNotNullOrEmpty(), x => x.Code.Contains(trainPlanPagedRequest.Code)) .AndIF(trainPlanPagedRequest.Name.IsNotNullOrEmpty(), x => x.Name.Contains(trainPlanPagedRequest.Name)) .AndIF(trainPlanPagedRequest.MaxStartTime.IsNotNull(), x => x.TrainStartTime <= trainPlanPagedRequest.MaxStartTime) .AndIF(trainPlanPagedRequest.MinStartTime.IsNotNull(), x => x.TrainEndTime >= trainPlanPagedRequest.MinStartTime) .ToExpression(); return expression; } public static Expression> GetTemplateExpression(this TrainPlanPagedRequest trainPlanPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(trainPlanPagedRequest.TrainTemplateIds.IsNotNullOrEmpty(), x => trainPlanPagedRequest.TrainTemplateIds.Contains(x.TrainTemplateId)) .ToExpression(); return expression; } public static Expression> GetExpression(this TrainResultReportPagedRequest trainResultReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(trainResultReportPagedRequest.StartTime.IsNotNull(), x => x.TrainStartTime >= trainResultReportPagedRequest.StartTime) .AndIF(trainResultReportPagedRequest.EndTime.IsNotNull(), x => x.TrainStartTime <= trainResultReportPagedRequest.EndTime) .ToExpression(); return expression; } public static Expression> GetTemplateExpression(this TrainResultReportPagedRequest trainResultReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(trainResultReportPagedRequest.Keyword.IsNotNullOrEmpty(), x => x.Name.Contains(trainResultReportPagedRequest.Keyword)) .ToExpression(); return expression; } } }