#400 book related pdf books

This commit is contained in:
Hamid Reza Mohammadi 2023-07-25 11:26:32 +03:30
parent e646d721a6
commit 8f68337c4b
4 changed files with 98 additions and 1 deletions

View File

@ -763,7 +763,7 @@ namespace RMuseum.Controllers
/// <returns></returns>
[HttpGet("book/by/author/{authorId}")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PDFBook>))]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<Book>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetBooksByAuthorAsync([FromQuery] PagingParameterModel paging, int authorId, string role = null)
@ -814,6 +814,45 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// get book related pdf books
/// </summary>
/// <param name="paging"></param>
/// <param name="bookId"></param>
/// <returns></returns>
[HttpGet("pdfbook/by/book/{bookId}")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PDFBook>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetBookRelatedPFFBooksAsync([FromQuery] PagingParameterModel paging, int bookId)
{
var res = await _pdfService.GetBookRelatedPFFBooksAsync(paging, bookId);
if (!string.IsNullOrEmpty(res.ExceptionString))
{
return BadRequest(res.ExceptionString);
}
if (res.Result.Books.Count() > 0)
{
DateTime lastModification = res.Result.Books.Max(i => i.LastModified);
Response.GetTypedHeaders().LastModified = lastModification;
var requestHeaders = Request.GetTypedHeaders();
if (requestHeaders.IfModifiedSince.HasValue &&
requestHeaders.IfModifiedSince.Value >= lastModification)
{
return StatusCode(StatusCodes.Status304NotModified);
}
}
// Paging Header
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(res.Result.PagingMeta));
return Ok(res.Result.Books);
}
/// <summary>
/// add a new multi volume pdf collection
/// </summary>

View File

@ -2552,6 +2552,14 @@
<param name="authorId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.GetBookRelatedPFFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Int32)">
<summary>
get book related pdf books
</summary>
<param name="paging"></param>
<param name="bookId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.AddMultiVolumePDFCollection(RMuseum.Models.PDFLibrary.MultiVolumePDFCollection)">
<summary>
add a new multi volume pdf collection
@ -17881,6 +17889,14 @@
<param name="authorId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.GetBookRelatedPFFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Int32)">
<summary>
get book related pdf books
</summary>
<param name="paging"></param>
<param name="bookId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.AddMultiVolumePDFCollection(RMuseum.Models.PDFLibrary.MultiVolumePDFCollection)">
<summary>
add multi volume pdf collection
@ -18871,6 +18887,14 @@
<param name="authorId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.GetBookRelatedPFFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Int32)">
<summary>
get book related pdf books
</summary>
<param name="paging"></param>
<param name="bookId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.AddMultiVolumePDFCollection(RMuseum.Models.PDFLibrary.MultiVolumePDFCollection)">
<summary>
add multi volume pdf collection

View File

@ -194,6 +194,14 @@ namespace RMuseum.Services
Task<RServiceResult<AuthorRoleCount[]>> GetBookbyAuthorGroupedByRoleAsync(int authorId);
/// <summary>
/// get book related pdf books
/// </summary>
/// <param name="paging"></param>
/// <param name="bookId"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>> GetBookRelatedPFFBooksAsync(PagingParameterModel paging, int bookId);
/// <summary>
/// add multi volume pdf collection
/// </summary>

View File

@ -1048,6 +1048,32 @@ namespace RMuseum.Services.Implementation
}
}
/// <summary>
/// get book related pdf books
/// </summary>
/// <param name="paging"></param>
/// <param name="bookId"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>> GetBookRelatedPFFBooksAsync(PagingParameterModel paging, int bookId)
{
try
{
var source =
_context.PDFBooks.AsNoTracking()
.Include(a => a.CoverImage)
.Where(a => a.Status == PublishStatus.Published && a.BookId == bookId)
.OrderByDescending(t => t.DateTime)
.AsQueryable();
(PaginationMetadata PagingMeta, PDFBook[] Books) paginatedResult =
await QueryablePaginator<PDFBook>.Paginate(source, paging);
return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>(paginatedResult);
}
catch (Exception exp)
{
return new RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>((null, null), exp.ToString());
}
}
/// <summary>
/// add multi volume pdf collection