diff --git a/RMuseum/Controllers/PDFLibraryController.cs b/RMuseum/Controllers/PDFLibraryController.cs
index 3950ec26..20d395cc 100644
--- a/RMuseum/Controllers/PDFLibraryController.cs
+++ b/RMuseum/Controllers/PDFLibraryController.cs
@@ -214,7 +214,25 @@ namespace RMuseum.Controllers
return NotFound();
}
- return Ok(); ;
+ return Ok();
+ }
+
+ ///
+ /// Copy PDF Book Cover Image From Page Thumbnail image
+ ///
+ ///
+ ///
+ ///
+ [HttpPut("{id}/cover/{pageId}")]
+ [Authorize(Policy = RMuseumSecurableItem.PDFLibraryEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
+ [ProducesResponseType((int)HttpStatusCode.OK)]
+ [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
+ public async Task SetPDFBookCoverImageFromPage(int id, int pageId)
+ {
+ RServiceResult res = await _pdfService.SetPDFBookCoverImageFromPage(id, pageId);
+ if (!string.IsNullOrEmpty(res.ExceptionString))
+ return BadRequest();
+ return Ok();
}
///
diff --git a/RMuseum/RMuseum.csproj b/RMuseum/RMuseum.csproj
index 1e84473a..2a12bc23 100644
--- a/RMuseum/RMuseum.csproj
+++ b/RMuseum/RMuseum.csproj
@@ -27,7 +27,7 @@
-
+
diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml
index 58071eba..b578c7db 100644
--- a/RMuseum/RMuseum.xml
+++ b/RMuseum/RMuseum.xml
@@ -2374,6 +2374,14 @@
+
+
+ Copy PDF Book Cover Image From Page Thumbnail image
+
+
+
+
+
add a new book
@@ -17522,6 +17530,14 @@
+
+
+ Copy PDF Book Cover Image From Page Thumbnail image
+
+
+
+
+
add author
@@ -18421,6 +18437,14 @@
+
+
+ Copy PDF Book Cover Image From Page Thumbnail image
+
+
+
+
+
manipulating picture files
diff --git a/RMuseum/Services/IPDFLibraryService.cs b/RMuseum/Services/IPDFLibraryService.cs
index 476af829..71217df3 100644
--- a/RMuseum/Services/IPDFLibraryService.cs
+++ b/RMuseum/Services/IPDFLibraryService.cs
@@ -70,5 +70,13 @@ namespace RMuseum.Services
///
///
Task> EditPDFBookMasterRecord(PDFBook model, bool canChangeStatusToAwaiting, bool canPublish);
+
+ ///
+ /// Copy PDF Book Cover Image From Page Thumbnail image
+ ///
+ ///
+ ///
+ ///
+ Task> SetPDFBookCoverImageFromPage(int pdfBookId, int pdfpageId);
}
}
diff --git a/RMuseum/Services/Implementation/PDFLibraryService-Partials/PDFLibraryService-LocalPDF.cs b/RMuseum/Services/Implementation/PDFLibraryService-Partials/PDFLibraryService-LocalPDF.cs
index a93415f2..3f11a2e2 100644
--- a/RMuseum/Services/Implementation/PDFLibraryService-Partials/PDFLibraryService-LocalPDF.cs
+++ b/RMuseum/Services/Implementation/PDFLibraryService-Partials/PDFLibraryService-LocalPDF.cs
@@ -136,7 +136,7 @@ namespace RMuseum.Services.Implementation
var book = await context.Books.Where(b => b.Id == bookId).SingleAsync();
if (book.CoverImageId == null)
{
- book.CoverImage = pdfBook.CoverImage.DuplicateExcludingId(pdfBook.CoverImage);
+ book.CoverImage = RImage.DuplicateExcludingId(pdfBook.CoverImage);
context.Update(book);
await context.SaveChangesAsync();
}
@@ -248,7 +248,7 @@ namespace RMuseum.Services.Implementation
page.ThumbnailImage = picture.Result;
if (page.PageNumber == 1)
{
- pdfBook.CoverImage = picture.Result.DuplicateExcludingId(picture.Result);
+ pdfBook.CoverImage = RImage.DuplicateExcludingId(picture.Result);
}
}
}
diff --git a/RMuseum/Services/Implementation/PDFLibraryService.cs b/RMuseum/Services/Implementation/PDFLibraryService.cs
index 1c1c3c89..9c7ae294 100644
--- a/RMuseum/Services/Implementation/PDFLibraryService.cs
+++ b/RMuseum/Services/Implementation/PDFLibraryService.cs
@@ -7,6 +7,7 @@ using RMuseum.Models.ImportJob;
using RMuseum.Models.PDFLibrary;
using RMuseum.Models.PDFLibrary.ViewModels;
using RSecurityBackend.Models.Generic;
+using RSecurityBackend.Models.Image;
using RSecurityBackend.Services;
using RSecurityBackend.Services.Implementation;
using System;
@@ -39,10 +40,10 @@ namespace RMuseum.Services.Implementation
.Include(b => b.Contributers)
.Include(b => b.Tags)
.Include(b => b.Pages)
- .Where(b => statusArray.Contains(b.Status) &&b.Id == id)
+ .Where(b => statusArray.Contains(b.Status) && b.Id == id)
.SingleOrDefaultAsync();
return new RServiceResult(pdfBook);
-
+
}
catch (Exception exp)
{
@@ -202,7 +203,7 @@ namespace RMuseum.Services.Implementation
{
return new RServiceResult(false, exp.ToString());
}
-
+
}
///
@@ -214,64 +215,107 @@ namespace RMuseum.Services.Implementation
///
public async Task> EditPDFBookMasterRecord(PDFBook model, bool canChangeStatusToAwaiting, bool canPublish)
{
- if (string.IsNullOrEmpty(model.Title))
+ try
{
- return new RServiceResult(null, "Name could not be empty.");
- }
-
- PDFBook pdfBook =
- await _context.PDFBooks
- .Where(a => a.Id == model.Id)
- .SingleOrDefaultAsync();
-
-
- if (pdfBook != null)
- {
- if (pdfBook.Status != model.Status)
+ if (string.IsNullOrEmpty(model.Title))
{
- if (!canChangeStatusToAwaiting)
- {
- return new RServiceResult(null, "User should be able to change status to Awaiting to complete this operation.");
- }
-
- if (
- !
- (
- (pdfBook.Status == PublishStatus.Draft && model.Status == PublishStatus.Awaiting)
- ||
- (pdfBook.Status == PublishStatus.Awaiting && model.Status == PublishStatus.Draft)
- )
- )
- {
- if (!canPublish)
- {
- return new RServiceResult(null, "User should have Publish permission to complete this operation.");
- }
- }
+ return new RServiceResult(null, "Name could not be empty.");
}
- pdfBook.Status = model.Status;
- pdfBook.Title = model.Title;
- pdfBook.SubTitle = model.SubTitle;
- pdfBook.AuthorsLine = model.AuthorsLine;
- pdfBook.ISBN = model.ISBN;
- pdfBook.Description = model.Description;
- pdfBook.IsTranslation = model.IsTranslation;
- pdfBook.TranslatorsLine = model.TranslatorsLine;
- pdfBook.TitleInOriginalLanguage = model.TitleInOriginalLanguage;
- pdfBook.PublisherLine = model.PublisherLine;
- pdfBook.PublishingDate = model.PublishingDate;
- pdfBook.PublishingLocation = model.PublishingLocation;
- pdfBook.PublishingNumber = model.PublishingNumber == 0 ? null : model.PublishingNumber;
- pdfBook.ClaimedPageCount = model.ClaimedPageCount == 0 ? null : model.ClaimedPageCount;
- pdfBook.OriginalSourceName = model.OriginalSourceName;
- pdfBook.OriginalFileUrl = model.OriginalFileUrl;
+ PDFBook pdfBook =
+ await _context.PDFBooks
+ .Where(a => a.Id == model.Id)
+ .SingleOrDefaultAsync();
+
+
+ if (pdfBook != null)
+ {
+ if (pdfBook.Status != model.Status)
+ {
+ if (!canChangeStatusToAwaiting)
+ {
+ return new RServiceResult(null, "User should be able to change status to Awaiting to complete this operation.");
+ }
+
+ if (
+ !
+ (
+ (pdfBook.Status == PublishStatus.Draft && model.Status == PublishStatus.Awaiting)
+ ||
+ (pdfBook.Status == PublishStatus.Awaiting && model.Status == PublishStatus.Draft)
+ )
+ )
+ {
+ if (!canPublish)
+ {
+ return new RServiceResult(null, "User should have Publish permission to complete this operation.");
+ }
+ }
+ }
+
+ pdfBook.Status = model.Status;
+ pdfBook.Title = model.Title;
+ pdfBook.SubTitle = model.SubTitle;
+ pdfBook.AuthorsLine = model.AuthorsLine;
+ pdfBook.ISBN = model.ISBN;
+ pdfBook.Description = model.Description;
+ pdfBook.IsTranslation = model.IsTranslation;
+ pdfBook.TranslatorsLine = model.TranslatorsLine;
+ pdfBook.TitleInOriginalLanguage = model.TitleInOriginalLanguage;
+ pdfBook.PublisherLine = model.PublisherLine;
+ pdfBook.PublishingDate = model.PublishingDate;
+ pdfBook.PublishingLocation = model.PublishingLocation;
+ pdfBook.PublishingNumber = model.PublishingNumber == 0 ? null : model.PublishingNumber;
+ pdfBook.ClaimedPageCount = model.ClaimedPageCount == 0 ? null : model.ClaimedPageCount;
+ pdfBook.OriginalSourceName = model.OriginalSourceName;
+ pdfBook.OriginalFileUrl = model.OriginalFileUrl;
+ pdfBook.LastModified = DateTime.Now;
+
+ _context.Update(pdfBook);
+ await _context.SaveChangesAsync();
+ }
+ return new RServiceResult(pdfBook);
+ }
+ catch (Exception exp)
+ {
+ return new RServiceResult(null, exp.ToString());
+ }
+ }
+
+ ///
+ /// Copy PDF Book Cover Image From Page Thumbnail image
+ ///
+ ///
+ ///
+ ///
+ public async Task> SetPDFBookCoverImageFromPage(int pdfBookId, int pdfpageId)
+ {
+ try
+ {
+ PDFBook pdfBook = await _context
+ .PDFBooks.Where(a => a.Id == pdfBookId)
+ .SingleOrDefaultAsync();
+ if (pdfBook == null)
+ return new RServiceResult(false, "pdf book not found.");
+
+ PDFPage pdfPage = await _context.PDFPages.AsNoTracking().Include(p => p.ThumbnailImage).Where(p => p.Id == pdfpageId).SingleOrDefaultAsync();
+
+ if (pdfPage == null)
+ return new RServiceResult(false, "Page not found.");
+
+ pdfBook.CoverImage = RImage.DuplicateExcludingId(pdfPage.ThumbnailImage);
+
pdfBook.LastModified = DateTime.Now;
_context.Update(pdfBook);
await _context.SaveChangesAsync();
+
+ return new RServiceResult(true);
+ }
+ catch (Exception exp)
+ {
+ return new RServiceResult(false, exp.ToString());
}
- return new RServiceResult(pdfBook);
}
///
@@ -320,7 +364,7 @@ namespace RMuseum.Services.Implementation
{
var source =
_context.Authors
- .Where(a => string.IsNullOrEmpty(authorName) || (authorName.Contains(a.Name) || (!string.IsNullOrEmpty(a.NameInOriginalLanguage) && authorName.Contains(a.NameInOriginalLanguage)) ))
+ .Where(a => string.IsNullOrEmpty(authorName) || (authorName.Contains(a.Name) || (!string.IsNullOrEmpty(a.NameInOriginalLanguage) && authorName.Contains(a.NameInOriginalLanguage))))
.AsQueryable();
(PaginationMetadata PagingMeta, Author[] Items) paginatedResult =
await QueryablePaginator.Paginate(source, paging);