static void InvokeOrderBy <T>(PageableQuery <T> query, LambdaExpression expression, bool descending) { var orderByMethodName = descending ? "OrderByDescending" : "OrderBy"; var orderByMethod = typeof(PageableQuery <T>).GetMethod(orderByMethodName); var genericOrderByMethod = orderByMethod.MakeGenericMethod(expression.ReturnType); genericOrderByMethod.Invoke(query, new [] { expression }); }
public static PageableQuery <T> HandleSorting <T>(this PageableQuery <T> query, HttpRequest request) { var orderByQuery = request.Query[PageableQueryConstants.OrderByQuery]; var descedning = Convert.ToBoolean(request.Query[PageableQueryConstants.DecendingQuery]); if (!string.IsNullOrWhiteSpace(orderByQuery)) { var expression = BuildPropertyExpression <T>(orderByQuery); InvokeOrderBy(query, expression, descedning); } return(query); }
public IPageableList <Question> GetPageableQuestions(int testId, string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Question>(pageInfo, question => question.TestId == testId); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause(question => question.Description.ToLower().Contains(searchString) || question.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using var repositoriesContainer = new LmPlatformRepositoriesContainer(); return(repositoriesContainer.QuestionsRepository.GetPageableBy(query)); }
public IPageableList<ProjectUser> GetProjectUsers(string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<ProjectUser>(pageInfo); query.Include(e => e.User); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.User.FullName.ToLower().StartsWith(searchString) || e.User.FullName.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return repositoriesContainer.ProjectUsersRepository.GetPageableBy(query); } }
public IPageableList <Test> GetPageableTests(int subjectId, string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Test>(pageInfo, test => test.SubjectId == subjectId); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause(test => test.Description.ToLower().Contains(searchString) || test.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); query.Include(test => test.TestUnlocks); using var repositoriesContainer = new LmPlatformRepositoriesContainer(); return(repositoriesContainer.TestsRepository.GetPageableBy(query)); }
public IPageableList <Subject> GetSubjectsLecturer(int lecturerId, string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Subject>(pageInfo, e => e.SubjectLecturers.Any(x => x.LecturerId == lecturerId && !e.IsArchive)); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Name.ToLower().StartsWith(searchString) || e.Name.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return(repositoriesContainer.SubjectRepository.GetPageableBy(query)); } }
public IPageableList <Group> GetGroupsPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Group>(pageInfo); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Name.ToLower().StartsWith(searchString) || e.Name.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias).Include(g => g.Students); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var groups = repositoriesContainer.GroupsRepository.GetPageableBy(query); return(groups); } }
public IPageableList<Group> GetGroupsPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Group>(pageInfo); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Name.ToLower().StartsWith(searchString) || e.Name.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias).Include(g => g.Students); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var groups = repositoriesContainer.GroupsRepository.GetPageableBy(query); return groups; } }
public IPageableList <Project> GetProjects(string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Project>(pageInfo); query.Include(e => e.Creator); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Title.ToLower().StartsWith(searchString) || e.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return(repositoriesContainer.ProjectsRepository.GetPageableBy(query)); } }
public static PageableQuery <T> HandlePaging <T>(this PageableQuery <T> query, HttpRequest request) { var take = TryParse(request.Query[PageableQueryConstants.TakeQuery]); var skip = TryParse(request.Query[PageableQueryConstants.SkipQuery]); if (skip.HasValue) { query.Skip(skip.Value); } if (take.HasValue) { query.Take(take.Value); } return(query); }
public IPageableList <Project> GetUserProjects(int userId, string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Project>(pageInfo); query.Include(e => e.Creator.Lecturer) .Include(e => e.Creator.Student) .Include(e => e.ProjectUsers) .AddFilterClause(e => e.ProjectUsers.Any(e2 => e2.UserId == userId)); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Title.ToLower().StartsWith(searchString) || e.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using var repositoriesContainer = new LmPlatformRepositoriesContainer(); return(repositoriesContainer.ProjectsRepository.GetPageableBy(query)); }
public IPageableList <Bug> GetAllBugs(string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Bug>(pageInfo); query.Include(e => e.Status); query.Include(e => e.Severity); query.Include(e => e.Symptom); query.Include(e => e.Project); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Summary.ToLower().StartsWith(searchString) || e.Summary.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using var repositoriesContainer = new LmPlatformRepositoriesContainer(); return(repositoriesContainer.BugsRepository.GetPageableBy(query)); }
public IPageableList<Bug> GetAllBugs(string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Bug>(pageInfo); query.Include(e => e.Status); query.Include(e => e.Severity); query.Include(e => e.Symptom); query.Include(e => e.Project); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Summary.ToLower().StartsWith(searchString) || e.Summary.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return repositoriesContainer.BugsRepository.GetPageableBy(query); } }
public IPageableList<Student> GetStudentsPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Student>(pageInfo); query.Include(e => e.Group).Include(e => e.User); if (!string.IsNullOrWhiteSpace(searchString)) { searchString = searchString.Replace(" ", string.Empty); //search by full name query.AddFilterClause( e => (e.LastName + e.FirstName + e.MiddleName).Contains(searchString) || e.Group.Name.ToLower().Contains(searchString)); } using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var students = repositoriesContainer.StudentsRepository.GetPageableBy(query); return students; } }
public IPageableList<Lecturer> GetLecturersPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Lecturer>(pageInfo); query.Include(l => l.SubjectLecturers).Include(e => e.User); if (!string.IsNullOrWhiteSpace(searchString)) { searchString = searchString.Replace(" ", string.Empty); //search by full name query.AddFilterClause( e => (e.LastName + e.FirstName + e.MiddleName).Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var lecturers = repositoriesContainer.LecturerRepository.GetPageableBy(query); return lecturers; } }
public IPageableList <Lecturer> GetLecturersPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Lecturer>(pageInfo); query.Include(l => l.SubjectLecturers).Include(e => e.User); if (!string.IsNullOrWhiteSpace(searchString)) { searchString = searchString.Replace(" ", string.Empty); //search by full name query.AddFilterClause( e => (e.LastName + e.FirstName + e.MiddleName).Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var lecturers = repositoriesContainer.LecturerRepository.GetPageableBy(query); return(lecturers); } }
public IPageableList <Student> GetStudentsPageable(string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <Student>(pageInfo); query.Include(e => e.Group).Include(e => e.User); if (!string.IsNullOrWhiteSpace(searchString)) { searchString = searchString.Replace(" ", string.Empty); //search by full name query.AddFilterClause( e => (e.LastName + e.FirstName + e.MiddleName).Contains(searchString) || e.Group.Name.ToLower().Contains(searchString)); } using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var students = repositoriesContainer.StudentsRepository.GetPageableBy(query); return(students); } }
public IPageableList <UserMessages> GetUserMessagesPageable(int userId, bool?incoming = null, string searchString = null, IPageInfo pageInfo = null, IEnumerable <ISortCriteria> sortCriterias = null) { var query = new PageableQuery <UserMessages>(pageInfo); if (!incoming.HasValue) { query.AddFilterClause(e => e.AuthorId == userId || e.Recipient.Id == userId); } else { if (incoming.Value) { query.AddFilterClause(e => e.Recipient.Id == userId); } else { query.AddFilterClause(e => e.AuthorId == userId); } } query.Include(e => e.Message.Attachments).Include(e => e.Recipient) .Include(e => e.Author.Lecturer).Include(e => e.Author.Student); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Message.Text.ToLower().StartsWith(searchString) || e.Message.Text.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using var repositoriesContainer = new LmPlatformRepositoriesContainer(); var userMessages = repositoriesContainer.RepositoryFor <UserMessages>().GetPageableBy(query); return(userMessages); }
public IPageableList<Test> GetPageableTests(int subjectId, string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Test>(pageInfo, test => test.SubjectId == subjectId); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause(test => test.Description.ToLower().Contains(searchString) || test.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); query.Include(test => test.TestUnlocks); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return repositoriesContainer.TestsRepository.GetPageableBy(query); } }
public IPageableList<Question> GetPageableQuestions(int testId, string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Question>(pageInfo, question => question.TestId == testId); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause(question => question.Description.ToLower().Contains(searchString) || question.Title.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return repositoriesContainer.QuestionsRepository.GetPageableBy(query); } }
public static async Task <PageableResponse <T> > ToPageableResponse <T>(this PageableQuery <T> query) { return(new PageableResponse <T>(query.ToList(), await query.GetTotalRecords())); }
public IPageableList<UserMessages> GetUserMessagesPageable(int userId, bool? incoming = null, string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<UserMessages>(pageInfo); if (!incoming.HasValue) { query.AddFilterClause(e => e.AuthorId == userId || e.Recipient.Id == userId); } else { if (incoming.Value) { query.AddFilterClause(e => e.Recipient.Id == userId); } else { query.AddFilterClause(e => e.AuthorId == userId); } } query.Include(e => e.Message.Attachments).Include(e => e.Recipient) .Include(e => e.Author.Lecturer).Include(e => e.Author.Student); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Message.Text.ToLower().StartsWith(searchString) || e.Message.Text.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { var userMessages = repositoriesContainer.RepositoryFor<UserMessages>().GetPageableBy(query); return userMessages; } }
public IPageableList<Subject> GetSubjectsLecturer(int lecturerId, string searchString = null, IPageInfo pageInfo = null, IEnumerable<ISortCriteria> sortCriterias = null) { var query = new PageableQuery<Subject>(pageInfo, e => e.SubjectLecturers.Any(x => x.LecturerId == lecturerId && !e.IsArchive)); if (!string.IsNullOrEmpty(searchString)) { query.AddFilterClause( e => e.Name.ToLower().StartsWith(searchString) || e.Name.ToLower().Contains(searchString)); } query.OrderBy(sortCriterias); using (var repositoriesContainer = new LmPlatformRepositoriesContainer()) { return repositoriesContainer.SubjectRepository.GetPageableBy(query); } }
protected PageableQuery <ShippingLoadViewData> GetLoadsBySearchType(ShipperSearchTypeData searchType, int max, DateTime?visibilityPickupWindowDate = null, bool topsToGoCarrier = false, bool p44Carrier = false) { var userPrimaryCustomerId = _context.Users.SingleOrDefault(u => u.IdentUserId == _userContext.UserId)?.PrimaryCustomerId; var onLoadShopTransactionTypes = new[] { "New", "Updated" }; var bookedUserTransActionsTypes = new[] { "Accepted", "Pending" }; var currentDate = _dateTime.Now; var isMarketplace = ShipperSearchTypeData.Posted == searchType; visibilityPickupWindowDate = visibilityPickupWindowDate ?? currentDate; if (userPrimaryCustomerId.HasValue) { //var transactionTypeIds = MapSearchTypeToTransactionList(c); //var shippingLoads = _context.ShippingLoadViews.FromSql($"EXECUTE spGetLoadsByShipperAndTranType @CustomerId = {userPrimaryCustomerId}, @TransactionTypes = {transactionTypeIds}"); var transTypes = _serviceUtilities.MapShipperSearchTypeToTransactionList(searchType); if (isMarketplace) { return((from l in _context.Loads join c in _context.Customers on l.CustomerId equals c.CustomerId join OriginLoadStop in _context.LoadStops.Where(ls => ls.StopNbr == 1) on l.LoadId equals OriginLoadStop.LoadId join DestinationLoadStop in _context.LoadStops on new { l.LoadId, StopNbr = (int)l.Stops } equals new { DestinationLoadStop.LoadId, DestinationLoadStop.StopNbr } where transTypes.Contains(l.LatestTransactionTypeId) && l.CustomerId == userPrimaryCustomerId select new ShippingLoadViewData() { LoadId = l.LoadId, CustomerId = l.CustomerId, ReferenceLoadId = l.ReferenceLoadId, ReferenceLoadDisplay = l.ReferenceLoadDisplay, Stops = l.Stops, Miles = l.Miles, LineHaulRate = l.LineHaulRate, SmartSpotRate = l.SmartSpotRate, FuelRate = l.FuelRate, Commodity = l.Commodity, Weight = l.Weight, IsHazMat = l.IsHazMat, TransactionTypeId = l.LatestTransactionTypeId, DistanceFromOrig = 0, DistanceFromDest = 0, Onloadshop = onLoadShopTransactionTypes.Contains(l.LatestTransactionTypeId), CustomerLoadTypeId = l.CustomerLoadTypeId, //Equipment EquipmentId = l.EquipmentId, EquipmentType = l.Equipment.EquipmentDesc, EquipmentCategoryId = l.Equipment.CategoryId ?? "Unknown", EquipmentCategoryDesc = l.Equipment.CategoryEquipmentDesc, EquipmentTypeDisplay = l.Equipment.CategoryId == null ? l.Equipment.EquipmentDesc : l.Equipment.CategoryEquipmentDesc, OriginLat = (double)OriginLoadStop.Latitude, OriginLng = (double)OriginLoadStop.Longitude, OriginCity = OriginLoadStop.City, OriginState = OriginLoadStop.State, OriginEarlyDtTm = OriginLoadStop.EarlyDtTm, OriginLateDtTm = OriginLoadStop.LateDtTm, DestLat = (double)DestinationLoadStop.Latitude, DestLng = (double)DestinationLoadStop.Longitude, DestCity = DestinationLoadStop.City, DestState = DestinationLoadStop.State, DestEarlyDtTm = DestinationLoadStop.EarlyDtTm, DestLateDtTm = DestinationLoadStop.LateDtTm, IsEstimatedFSC = FscUtilities.IsEstimatedFsc(c, (OriginLoadStop.EarlyDtTm ?? OriginLoadStop.LateDtTm), _dateTime.Now), //Needed so the quick filter works Scac = null, // Load entire entity to prevent EF from doing a subselect LoadServiceTypes = l.LoadServiceTypes }) .OrderByDescending(l => l.OriginLateDtTm) .ToPageableQuery(shippingLoadList => { foreach (var l in shippingLoadList) { l.ShowVisibilityWarning = l.OriginLateDtTm > currentDate && l.OriginLateDtTm <= visibilityPickupWindowDate && l.DestLateDtTm >= currentDate && ((topsToGoCarrier && p44Carrier && l.VisibilityPhoneNumber == null && !l.MobileExternallyEntered && l.VisibilityTruckNumber == null) || (topsToGoCarrier && !p44Carrier && l.VisibilityPhoneNumber == null && !l.MobileExternallyEntered) || (!topsToGoCarrier && p44Carrier && l.VisibilityTruckNumber == null)); } return Task.CompletedTask; }, max)); } else { return((from l in _context.Loads join c in _context.Customers on l.CustomerId equals c.CustomerId join lt in _context.LoadTransactions on l.LoadId equals lt.LoadId join lc in _context.LoadClaims on lt.LoadTransactionId equals lc.LoadTransactionId into lcJoin from lc in lcJoin.DefaultIfEmpty() join claimUser in _context.Users on lc.UserId equals claimUser.UserId into claimUserJoin from claimUser in claimUserJoin.DefaultIfEmpty() join claimScac in _context.CarrierScacs on lc.Scac equals claimScac.Scac into claimScacJoin from claimScac in claimScacJoin.DefaultIfEmpty() join claimCarrier in _context.Carriers on claimScac.CarrierId equals claimCarrier.CarrierId into claimCarrierJoin from claimCarrier in claimCarrierJoin.DefaultIfEmpty() join OriginLoadStop in _context.LoadStops.Where(ls => ls.StopNbr == 1) on l.LoadId equals OriginLoadStop.LoadId join DestinationLoadStop in _context.LoadStops on new { l.LoadId, StopNbr = (int)l.Stops } equals new { DestinationLoadStop.LoadId, DestinationLoadStop.StopNbr } where transTypes.Contains(l.LatestTransactionTypeId) && l.CustomerId == userPrimaryCustomerId && (lc.LoadClaimId == (from lt in _context.LoadTransactions join lc in _context.LoadClaims on lt.LoadTransactionId equals lc.LoadTransactionId where lt.LoadId == l.LoadId orderby lc.CreateDtTm descending select lc).FirstOrDefault().LoadClaimId) select new ShippingLoadViewData() { LoadId = l.LoadId, CustomerId = l.CustomerId, ReferenceLoadId = l.ReferenceLoadId, ReferenceLoadDisplay = l.ReferenceLoadDisplay, Stops = l.Stops, Miles = l.Miles, LineHaulRate = lc != null ? lc.LineHaulRate : l.LineHaulRate, SmartSpotRate = l.SmartSpotRate, FuelRate = l.FuelRate, Commodity = l.Commodity, Weight = l.Weight, IsHazMat = l.IsHazMat, TransactionTypeId = l.LatestTransactionTypeId, DistanceFromOrig = 0, DistanceFromDest = 0, Onloadshop = onLoadShopTransactionTypes.Contains(l.LatestTransactionTypeId), CustomerLoadTypeId = l.CustomerLoadTypeId, //Equipment EquipmentId = l.EquipmentId, EquipmentType = l.Equipment.EquipmentDesc, EquipmentCategoryId = l.Equipment.CategoryId ?? "Unknown", EquipmentCategoryDesc = l.Equipment.CategoryEquipmentDesc, EquipmentTypeDisplay = l.Equipment.CategoryId == null ? l.Equipment.EquipmentDesc : l.Equipment.CategoryEquipmentDesc, OriginLat = (double)OriginLoadStop.Latitude, OriginLng = (double)OriginLoadStop.Longitude, OriginCity = OriginLoadStop.City, OriginState = OriginLoadStop.State, OriginEarlyDtTm = OriginLoadStop.EarlyDtTm, OriginLateDtTm = OriginLoadStop.LateDtTm, DestLat = (double)DestinationLoadStop.Latitude, DestLng = (double)DestinationLoadStop.Longitude, DestCity = DestinationLoadStop.City, DestState = DestinationLoadStop.State, DestEarlyDtTm = DestinationLoadStop.EarlyDtTm, DestLateDtTm = DestinationLoadStop.LateDtTm, IsEstimatedFSC = FscUtilities.IsEstimatedFsc(c, (OriginLoadStop.EarlyDtTm ?? OriginLoadStop.LateDtTm), _dateTime.Now), //Load Claim Scac = lc.Scac, BookedUser = claimUser.Username, BookedUserCarrierName = claimCarrier.CarrierName, BillingLoadId = lc.BillingLoadId, BillingLoadDisplay = lc.BillingLoadDisplay, VisibilityPhoneNumber = lc.VisibilityPhoneNumber, VisibilityTruckNumber = lc.VisibilityTruckNumber, VisibilityChgDtTm = lc.VisibilityChgDtTm, MobileExternallyEntered = lc.MobileExternallyEntered, // Load entire entity to prevent EF from doing a subselect LoadServiceTypes = l.LoadServiceTypes }) .OrderByDescending(l => l.OriginLateDtTm) .ToPageableQuery(shippingLoadList => { foreach (var l in shippingLoadList) { l.ShowVisibilityWarning = l.OriginLateDtTm > currentDate && l.OriginLateDtTm <= visibilityPickupWindowDate && l.DestLateDtTm >= currentDate && ((topsToGoCarrier && p44Carrier && l.VisibilityPhoneNumber == null && !l.MobileExternallyEntered && l.VisibilityTruckNumber == null) || (topsToGoCarrier && !p44Carrier && l.VisibilityPhoneNumber == null && !l.MobileExternallyEntered) || (!topsToGoCarrier && p44Carrier && l.VisibilityTruckNumber == null)); } return Task.CompletedTask; }, max)); } } return(PageableQuery <ShippingLoadViewData> .Empty()); }