using Exam.Infrastructure.Extensions; using Exam.Share; using Hotline.Share.Requests.Exam; using Hotline.Share.Requests.Train; using JiebaNet.Segmenter.Common; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Hotline.Application.Exam.Core.Utilities; using Hotline.Exams.ExamManages; namespace Hotline.Application.Exam.QueryExtensions.ExamManages { public static class UserExamQueryExtensions { public static Expression> GetExpression(this UserExamPagedRequest userExamPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(userExamPagedRequest.MinScore.IsNotNull(), x => x.Score >= userExamPagedRequest.MinScore) .AndIF(userExamPagedRequest.MaxScore.IsNotNull(), x => x.Score <= userExamPagedRequest.MaxScore) .And(x=>x.UserId == userExamPagedRequest.UserId) .ToExpression(); return expression; } public static Expression> GetExamManageExpression(this UserExamPagedRequest userExamPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(userExamPagedRequest.Name.IsNotNullOrEmpty(), x => x.Name.Contains(userExamPagedRequest.Name)) .AndIF(userExamPagedRequest.ExamType.IsNotNull(), x => x.ExamType == userExamPagedRequest.ExamType) .AndIF(userExamPagedRequest.MinStartTime.IsNotNull(),x=>x.StartTime >= userExamPagedRequest.MinStartTime) .AndIF(userExamPagedRequest.MaxStartTime.IsNotNull(),x=>x.StartTime <= userExamPagedRequest.MaxStartTime) .AndIF(userExamPagedRequest.MinEndTime.IsNotNull(), x => x.EndTime >= userExamPagedRequest.MinEndTime) .AndIF(userExamPagedRequest.MaxEndTime.IsNotNull(),x=>x.EndTime <= userExamPagedRequest.MaxEndTime) .AndIF(userExamPagedRequest.MinTotalScore.IsNotNull(),x=>x.TotalScore >= userExamPagedRequest.MinTotalScore) .AndIF(userExamPagedRequest.MaxTotalScore.IsNotNull(),x=>x.TotalScore <= userExamPagedRequest.MaxTotalScore) .ToExpression(); return expression; } public static Expression> GetExpression(this GradingExamRequest gradingExamRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(gradingExamRequest.ExamId.IsNotNullOrEmpty(), x => x.ExamId == gradingExamRequest.ExamId) .AndIF(gradingExamRequest.UserId.IsNotNullOrEmpty(), x => x.UserId == gradingExamRequest.UserId).ToExpression(); return expression; } public static Expression> GetExpression(this UnExamUserReportPagedRequest unExamUserReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(unExamUserReportPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= unExamUserReportPagedRequest.StartTime) .AndIF(unExamUserReportPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= unExamUserReportPagedRequest.EndTime) .AndIF(unExamUserReportPagedRequest.Keyword.IsNotNull(), x => x.Name.Contains(unExamUserReportPagedRequest.Keyword)) .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.Complete) .ToExpression(); return expression; } public static Expression> GetUserExamExpression(this UnExamUserReportPagedRequest unExamUserReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.NoStart) .ToExpression(); return expression; } public static Expression> GetExpression(this UserExamResultReportPagedRequest userExamResultReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(userExamResultReportPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= userExamResultReportPagedRequest.StartTime) .AndIF(userExamResultReportPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= userExamResultReportPagedRequest.EndTime) .AndIF(userExamResultReportPagedRequest.Keyword.IsNotNull(), x => x.Name.Contains(userExamResultReportPagedRequest.Keyword)) .ToExpression(); return expression; } public static Expression> GetUserExamExpression(this UserExamResultReportPagedRequest userExamResultReportPagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(userExamResultReportPagedRequest.MinScore.IsNotNull(), x => x.Score >= userExamResultReportPagedRequest.MinScore) .AndIF(userExamResultReportPagedRequest.MaxScore.IsNotNull() && userExamResultReportPagedRequest.MinScore.IsNull(), x => x.Score <= userExamResultReportPagedRequest.MaxScore || x.Score== null) .AndIF(userExamResultReportPagedRequest.MaxScore.IsNotNull() && userExamResultReportPagedRequest.MinScore.IsNotNull(), x => x.Score <= userExamResultReportPagedRequest.MaxScore) .And(x=>x.ExamStatus == Share.Enums.Exams.EExamStatus.Complete) .ToExpression(); return expression; } } }