From dc0ee360da0f5997739341d548749043575130c4 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Fri, 11 Aug 2023 11:01:03 +0330 Subject: [PATCH] #407 adding BookText field --- RMuseum/Controllers/PDFLibraryController.cs | 12 ++-- RMuseum/Models/PDFLibrary/PDFBook.cs | 5 ++ RMuseum/RMuseum.xml | 17 ++++-- RMuseum/Services/IPDFLibraryService.cs | 3 +- .../Implementation/PDFLibraryService.cs | 57 ++++++++++++++++--- 5 files changed, 75 insertions(+), 19 deletions(-) diff --git a/RMuseum/Controllers/PDFLibraryController.cs b/RMuseum/Controllers/PDFLibraryController.cs index 2a6095df..6280064f 100644 --- a/RMuseum/Controllers/PDFLibraryController.cs +++ b/RMuseum/Controllers/PDFLibraryController.cs @@ -118,13 +118,14 @@ namespace RMuseum.Controllers /// secure get a pdf book /// /// + /// /// [HttpGet("secure/{id}")] [Authorize] [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFBook))] [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.NotFound)] - public async Task GetUserVisiblePDFBookAsync(int id) + public async Task GetUserVisiblePDFBookAsync(int id, bool omitBookText = true) { RServiceResult v = await _GetUserVisiblePDFBooksStatusSetAsync ( @@ -137,7 +138,7 @@ namespace RMuseum.Controllers RServiceResult bookRes = null; if (visibleItems.Length == 1 && visibleItems[0] == PublishStatus.Published) { - bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }); + bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, omitBookText); if (!string.IsNullOrEmpty(bookRes.ExceptionString)) { return BadRequest(bookRes.ExceptionString); @@ -147,7 +148,7 @@ namespace RMuseum.Controllers } if (bookRes == null) { - bookRes = await _pdfService.GetPDFBookByIdAsync(id, visibleItems); + bookRes = await _pdfService.GetPDFBookByIdAsync(id, visibleItems, omitBookText); } if (!string.IsNullOrEmpty(bookRes.ExceptionString)) @@ -207,15 +208,16 @@ namespace RMuseum.Controllers /// get published PDF Book by id /// /// + /// /// [HttpGet("{id}")] [AllowAnonymous] [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFBook))] [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] [ProducesResponseType((int)HttpStatusCode.NotFound)] - public async Task GetPDFBookByIdAsync(int id) + public async Task GetPDFBookByIdAsync(int id, bool omitBookText = true) { - var bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }); + var bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, omitBookText); if (!string.IsNullOrEmpty(bookRes.ExceptionString)) { diff --git a/RMuseum/Models/PDFLibrary/PDFBook.cs b/RMuseum/Models/PDFLibrary/PDFBook.cs index 8d5a1d69..cdc72abc 100644 --- a/RMuseum/Models/PDFLibrary/PDFBook.cs +++ b/RMuseum/Models/PDFLibrary/PDFBook.cs @@ -244,5 +244,10 @@ namespace RMuseum.Models.PDFLibrary /// ocr date time /// public DateTime OCRTime { get; set; } + + /// + /// book text + /// + public string BookText { get; set; } } } diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 4fd313f8..00e56209 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -2394,18 +2394,20 @@ - + secure get a pdf book + - + get published PDF Book by id + @@ -12779,6 +12781,11 @@ ocr date time + + + book text + + PDF Page @@ -18405,12 +18412,13 @@ - + get pdf book by id + @@ -19656,12 +19664,13 @@ - + get pdf book by id + diff --git a/RMuseum/Services/IPDFLibraryService.cs b/RMuseum/Services/IPDFLibraryService.cs index 19d3bdcf..00f3c75a 100644 --- a/RMuseum/Services/IPDFLibraryService.cs +++ b/RMuseum/Services/IPDFLibraryService.cs @@ -25,8 +25,9 @@ namespace RMuseum.Services /// /// /// + /// /// - Task> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray); + Task> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool omitBookText); /// /// get all pdfbooks (including CoverImage info but not pages or tagibutes info) diff --git a/RMuseum/Services/Implementation/PDFLibraryService.cs b/RMuseum/Services/Implementation/PDFLibraryService.cs index 18b78268..7280dc7a 100644 --- a/RMuseum/Services/Implementation/PDFLibraryService.cs +++ b/RMuseum/Services/Implementation/PDFLibraryService.cs @@ -45,8 +45,9 @@ namespace RMuseum.Services.Implementation /// /// /// + /// /// - public async Task> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray) + public async Task> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool omitBookText) { try { @@ -62,6 +63,10 @@ namespace RMuseum.Services.Implementation .SingleOrDefaultAsync(); if (pdfBook != null) { + if(omitBookText) + { + pdfBook.BookText = ""; + } if (pdfBook.Book != null) { pdfBook.Book.PDFBooks = await _context.PDFBooks.AsNoTracking() @@ -139,6 +144,10 @@ namespace RMuseum.Services.Implementation .AsQueryable(); (PaginationMetadata PagingMeta, PDFBook[] Books) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Books) + { + book.BookText = ""; + } return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>(paginatedResult); } catch (Exception exp) @@ -350,7 +359,10 @@ namespace RMuseum.Services.Implementation .ToArrayAsync(); foreach (PDFBook taggedItem in taggedItems) + { taggedItem.Tags = null; + taggedItem.BookText = ""; + } return new RServiceResult(taggedItems); } @@ -700,6 +712,10 @@ namespace RMuseum.Services.Implementation .AsQueryable(); (PaginationMetadata PagingMeta, PDFBook[] Books) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Books) + { + book.BookText = ""; + } return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>(paginatedResult); } catch (Exception exp) @@ -1038,6 +1054,10 @@ namespace RMuseum.Services.Implementation .AsQueryable(); (PaginationMetadata PagingMeta, PDFBook[] Books) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Books) + { + book.BookText = ""; + } return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>(paginatedResult); } catch (Exception exp) @@ -1147,10 +1167,14 @@ namespace RMuseum.Services.Implementation { var books = await _context.PDFBooks.AsNoTracking() - .Include(a => a.CoverImage) - .Where(a => a.Status == PublishStatus.Published && a.MultiVolumePDFCollectionId == volumeId) - .OrderBy(t => t.VolumeOrder) - .ToArrayAsync(); + .Include(a => a.CoverImage) + .Where(a => a.Status == PublishStatus.Published && a.MultiVolumePDFCollectionId == volumeId) + .OrderBy(t => t.VolumeOrder) + .ToArrayAsync(); + foreach (var book in books) + { + book.BookText = ""; + } return new RServiceResult(books); } catch (Exception exp) @@ -1266,12 +1290,16 @@ namespace RMuseum.Services.Implementation { var source = _context.PDFBooks.AsNoTracking() - .Include(a => a.CoverImage) - .Where(a => a.Status == PublishStatus.Published && a.PDFSourceId == sourceId) - .OrderByDescending(t => t.Title) - .AsQueryable(); + .Include(a => a.CoverImage) + .Where(a => a.Status == PublishStatus.Published && a.PDFSourceId == sourceId) + .OrderByDescending(t => t.Title) + .AsQueryable(); (PaginationMetadata PagingMeta, PDFBook[] Books) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Books) + { + book.BookText = ""; + } return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>(paginatedResult); } catch (Exception exp) @@ -1340,6 +1368,11 @@ namespace RMuseum.Services.Implementation (PaginationMetadata PagingMeta, PDFBook[] Items) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Items) + { + book.BookText = ""; + } + return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Items)>(paginatedResult); } @@ -1699,6 +1732,11 @@ namespace RMuseum.Services.Implementation (PaginationMetadata PagingMeta, PDFBook[] Items) paginatedResult = await QueryablePaginator.Paginate(source, paging); + foreach (var book in paginatedResult.Items) + { + book.BookText = ""; + } + return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Items)>(paginatedResult); } @@ -1762,6 +1800,7 @@ namespace RMuseum.Services.Implementation foreach (PDFPage page in paginatedResult.Items) { page.PDFBook = await _context.PDFBooks.AsNoTracking().Where(b => b.Id == page.PDFBookId).SingleAsync(); + page.PDFBook.BookText = ""; } return new RServiceResult<(PaginationMetadata PagingMeta, PDFPage[] Items)>(paginatedResult); }