diff --git a/products/ASC.Files/Server/Core/Dao/TeamlabDao/AbstractDao.cs b/products/ASC.Files/Server/Core/Dao/TeamlabDao/AbstractDao.cs index ff303c011a..7b4535387b 100644 --- a/products/ASC.Files/Server/Core/Dao/TeamlabDao/AbstractDao.cs +++ b/products/ASC.Files/Server/Core/Dao/TeamlabDao/AbstractDao.cs @@ -174,16 +174,16 @@ namespace ASC.Files.Core.Data return MappingID(id, false); } - internal static bool BuildSearch(IDbSearch dbSearch, string text, SearhTypeEnum searhTypeEnum) + internal static IQueryable BuildSearch(IQueryable query, string text, SearhTypeEnum searhTypeEnum) where T : IDbSearch { - var lowerTitle = dbSearch.Title.ToLower(); var lowerText = text.ToLower().Trim().Replace("%", "\\%").Replace("_", "\\_"); + return searhTypeEnum switch { - SearhTypeEnum.Start => lowerTitle.StartsWith(lowerText), - SearhTypeEnum.End => lowerTitle.EndsWith(lowerText), - SearhTypeEnum.Any => lowerTitle.Contains(lowerText), - _ => lowerTitle.EndsWith(lowerText), + SearhTypeEnum.Start => query.Where(r => r.Title.ToLower().StartsWith(lowerText)), + SearhTypeEnum.End => query.Where(r => r.Title.ToLower().EndsWith(lowerText)), + SearhTypeEnum.Any => query.Where(r => r.Title.ToLower().Contains(lowerText)), + _ => query, }; } diff --git a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs index 50a7f1cf25..988a04f50f 100644 --- a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs +++ b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FileDao.cs @@ -181,7 +181,7 @@ namespace ASC.Files.Core.Data } else { - query = query.Where(r => BuildSearch(r, searchText, SearhTypeEnum.Any)); + query = BuildSearch(query, searchText, SearhTypeEnum.Any); } } @@ -211,7 +211,7 @@ namespace ASC.Files.Core.Data case FilterType.ByExtension: if (!string.IsNullOrEmpty(searchText)) { - query = query.Where(r => BuildSearch(r, searchText, SearhTypeEnum.End)); + query = BuildSearch(query, searchText, SearhTypeEnum.End); } break; } @@ -261,7 +261,7 @@ namespace ASC.Files.Core.Data } else { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.Any)); + q = BuildSearch(q, searchText, SearhTypeEnum.Any); } } @@ -313,7 +313,7 @@ namespace ASC.Files.Core.Data case FilterType.ByExtension: if (!string.IsNullOrEmpty(searchText)) { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.End)); + q = BuildSearch(q, searchText, SearhTypeEnum.End); } break; } @@ -970,7 +970,7 @@ namespace ASC.Files.Core.Data } else { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.Any)); + q = BuildSearch(q, searchText, SearhTypeEnum.Any); } } @@ -1000,7 +1000,7 @@ namespace ASC.Files.Core.Data case FilterType.ByExtension: if (!string.IsNullOrEmpty(searchText)) { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.End)); + q = BuildSearch(q, searchText, SearhTypeEnum.End); } break; } @@ -1023,7 +1023,7 @@ namespace ASC.Files.Core.Data } else { - var query = GetFileQuery(r => r.CurrentVersion && BuildSearch(r, searchText, SearhTypeEnum.Any)); + var query = BuildSearch(GetFileQuery(r => r.CurrentVersion), searchText, SearhTypeEnum.Any); return FromQueryWithShared(query) .Where(f => bunch diff --git a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FolderDao.cs b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FolderDao.cs index c3db24dc56..ff8a12480d 100644 --- a/products/ASC.Files/Server/Core/Dao/TeamlabDao/FolderDao.cs +++ b/products/ASC.Files/Server/Core/Dao/TeamlabDao/FolderDao.cs @@ -160,13 +160,14 @@ namespace ASC.Files.Core.Data if (orderBy == null) orderBy = new OrderBy(SortedByType.DateAndTime, false); - var q = GetFolderQuery(r => r.ParentId.ToString() == parentId.ToString()); + var parentIdString = parentId.ToString(); + var q = GetFolderQuery(r => r.ParentId.ToString() == parentIdString); if (withSubfolders) { q = GetFolderQuery() .Join(FilesDbContext.Tree, r => r.Id, a => a.FolderId, (folder, tree) => new { folder, tree }) - .Where(r => r.tree.ParentId.ToString() == parentId.ToString() && r.tree.Level != 0) + .Where(r => r.tree.ParentId.ToString() == parentIdString && r.tree.Level != 0) .Select(r => r.folder); } @@ -178,7 +179,7 @@ namespace ASC.Files.Core.Data } else { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.Any)); + q = BuildSearch(q, searchText, SearhTypeEnum.Any); } } @@ -248,7 +249,7 @@ namespace ASC.Files.Core.Data } else { - q = q.Where(r => BuildSearch(r, searchText, SearhTypeEnum.Any)); + q = BuildSearch(q, searchText, SearhTypeEnum.Any); } } @@ -694,7 +695,7 @@ namespace ASC.Files.Core.Data return FromQueryWithShared(q1); } - var q = GetFolderQuery(r => BuildSearch(r, text, SearhTypeEnum.Any)); + var q = BuildSearch(GetFolderQuery(), text, SearhTypeEnum.Any); return FromQueryWithShared(q); }