| public async Task<object> GetAllFiltered(FileFilter filters) | public async Task<object> GetAllFiltered(FileFilter filters) | ||||
| { | { | ||||
| using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi")); | using var connection = new SqlConnection(_configuration.GetConnectionString("WebApi")); | ||||
| var sql = @"SELECT Files.Id as FileId, Files.Deleted, stream_id, DocumentOrganizerDocStore.name as FileName, file_stream, file_type, cached_file_size, Title, Tags.Id as TagId, Tags.Name as TagName, Categories.Id as CategoryId, Categories.Name as CategoryName | var sql = @"SELECT Files.Id as FileId, Files.Deleted, stream_id, DocumentOrganizerDocStore.name as FileName, file_stream, file_type, cached_file_size, Title, Tags.Id as TagId, Tags.Name as TagName, Categories.Id as CategoryId, Categories.Name as CategoryName | ||||
| FROM Files inner join FileEntityTag on Files.Id = FileEntityTag.FilesId | FROM Files inner join FileEntityTag on Files.Id = FileEntityTag.FilesId | ||||
| inner join Tags on FileEntityTag.TagsId = Tags.Id | inner join Tags on FileEntityTag.TagsId = Tags.Id | ||||
| inner join Categories on Files.CategoryId = Categories.Id | inner join Categories on Files.CategoryId = Categories.Id | ||||
| inner join DocumentOrganizerDocStore on DocumentOrganizerDocStore.stream_id = Files.DocumentId WHERE Files.Deleted = 0" + | inner join DocumentOrganizerDocStore on DocumentOrganizerDocStore.stream_id = Files.DocumentId WHERE Files.Deleted = 0" + | ||||
| (filters.Content is null ? "" : $" where contains(DocumentOrganizerDocStore.file_stream,@content);"); | |||||
| (filters.Content is null ? "" : " and contains(DocumentOrganizerDocStore.file_stream," + "'\"" + filters.Content + "*\"')"); | |||||
| var files = await connection.QueryAsync<FileFilterReturn, TagResponse, CategoryResponse, FileFilterReturn>(sql,(file, tag, category) => | var files = await connection.QueryAsync<FileFilterReturn, TagResponse, CategoryResponse, FileFilterReturn>(sql,(file, tag, category) => | ||||
| { | { | ||||
| file.Tags.Add(tag); | file.Tags.Add(tag); | ||||
| file.Category = category; | file.Category = category; | ||||
| return file; | return file; | ||||
| }, splitOn: "TagId, CategoryId", | |||||
| param:new {content = filters.Content}); | |||||
| }, splitOn: "TagId, CategoryId"); | |||||
| var filesList = new List<FileFilterReturnDto>(); | var filesList = new List<FileFilterReturnDto>(); | ||||
| foreach (var fileItem in files.ToList()) | foreach (var fileItem in files.ToList()) | ||||
| Title = fileItem.Title | Title = fileItem.Title | ||||
| }; | }; | ||||
| // return File_stream in base64 format | // return File_stream in base64 format | ||||
| MemoryStream stream = new MemoryStream(fileItem.File_stream); | |||||
| MemoryStream stream = new (fileItem.File_stream); | |||||
| fileFilterReturnDto.File_stream = ConvertToBase64(stream); | fileFilterReturnDto.File_stream = ConvertToBase64(stream); | ||||
| filesList.Add(fileFilterReturnDto); | filesList.Add(fileFilterReturnDto); | ||||
| } | } |