using DocumentFormat.OpenXml.Office2013.Excel; using Hotline.Application.Exam.Core.Extensions; using Hotline.Application.Exam.Extensions; using Hotline.Share.Enums.Exams; using Hotline.Share.Requests.Exam; using Hotline.Share.Requests.TestPaper; using JiebaNet.Segmenter.Common; using System.Linq.Expressions; using Hotline.Application.Exam.Core.Utilities; using Hotline.Exams.Practices; using Hotline.Exams.Questions; namespace Hotline.Application.Exam.QueryExtensions.Practices { public static class PracticeQueryExtensions { public static Expression> GetExpression(this PracticePagedRequest practicePagedRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .ToExpression(); return expression; } public static Expression> GetExpression(this PracticeQuestionGroupRequest practiceQuestionGroupRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(practiceQuestionGroupRequest.PracticeId.IsNotNull(),x=>x.PracticeId == practiceQuestionGroupRequest.PracticeId) .And(x=>x.QuestionType == EQuestionType.Single || x.QuestionType == EQuestionType.Multi || x.QuestionType == EQuestionType.Judge) .ToExpression(); return expression; } public static Expression> GetExpression(this PracticeQuestionRequest practiceQuestionRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(practiceQuestionRequest.PracticeQuestionId.IsNotNull(), x => x.Id == practiceQuestionRequest.PracticeQuestionId) .ToExpression(); return expression; } public static Expression> GetExpression(this TagQuestionCountForPracticeRequest tagQuestionCountForPracticeRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .AndIF(tagQuestionCountForPracticeRequest.TagIds.IsNotNullOrEmpty() && tagQuestionCountForPracticeRequest.TagIds.Any(), x => tagQuestionCountForPracticeRequest.TagIds.Contains(x.TagId)) .ToExpression(); return expression; } public static Expression> GetQuestionExpression(this TagQuestionCountForPracticeRequest tagQuestionCountForPracticeRequest) { Expression> expression = m => m.Id != null; expression = ExpressionableUtility.CreateExpression() .And(x=>x.QuestionType == EQuestionType.Single || x.QuestionType == EQuestionType.Multi || x.QuestionType == EQuestionType.Judge) .ToExpression(); return expression; } } }