#400 pdf source api

This commit is contained in:
Hamid Reza Mohammadi 2023-07-25 17:39:11 +03:30
parent 6ec98fa5d9
commit e9f81cbfcc
3 changed files with 262 additions and 4 deletions

View File

@ -876,7 +876,7 @@ namespace RMuseum.Controllers
/// get book related pdf books
/// </summary>
/// <param name="paging"></param>
/// <param name="bookId"></param>
/// <param name="sourceId"></param>
/// <returns></returns>
[HttpGet("book/{bookId}/pdfs")]
@ -884,9 +884,9 @@ namespace RMuseum.Controllers
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PDFBook>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetBookRelatedPDFBooksAsync([FromQuery] PagingParameterModel paging, int bookId)
public async Task<IActionResult> GetBookRelatedPDFBooksAsync([FromQuery] PagingParameterModel paging, int sourceId)
{
var res = await _pdfService.GetBookRelatedPDFBooksAsync(paging, bookId);
var res = await _pdfService.GetBookRelatedPDFBooksAsync(paging, sourceId);
if (!string.IsNullOrEmpty(res.ExceptionString))
{
return BadRequest(res.ExceptionString);
@ -1006,6 +1006,138 @@ namespace RMuseum.Controllers
return Ok(res.Result);
}
/// <summary>
/// get all sources
/// </summary>
/// <returns></returns>
[HttpGet("source")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PDFSource>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetPDFSourcesAsync()
{
var res = await _pdfService.GetPDFSourcesAsync();
if (!string.IsNullOrEmpty(res.ExceptionString))
{
return BadRequest(res.ExceptionString);
}
return Ok(res.Result);
}
/// <summary>
/// source by id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("source/{id}")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFSource))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetPDFSourceByIdAsync(int id)
{
var res = await _pdfService.GetPDFSourceByIdAsync(id);
if (!string.IsNullOrEmpty(res.ExceptionString))
{
return BadRequest(res.ExceptionString);
}
return Ok(res.Result);
}
/// <summary>
/// add a new source
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
[HttpPost("source")]
[Authorize(Policy = RMuseumSecurableItem.PDFLibraryEntityShortName + ":" + SecurableItem.AddOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFSource))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> AddPDFSourceAsync([FromBody] PDFSource source)
{
var res = await _pdfService.AddPDFSourceAsync(source);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);
}
/// <summary>
/// update source
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
[HttpPut("source")]
[Authorize(Policy = RMuseumSecurableItem.PDFLibraryEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> UpdatePDFSourceAsync([FromBody] PDFSource source)
{
var res = await _pdfService.UpdatePDFSourceAsync(source);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok();
}
/// <summary>
/// delete book
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("source")]
[Authorize(Policy = RMuseumSecurableItem.PDFLibraryEntityShortName + ":" + SecurableItem.DeleteOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> DeletePDFSourceAsync(int id)
{
var res = await _pdfService.DeletePDFSourceAsync(id);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok();
}
/// <summary>
/// get pdf source pdfs
/// </summary>
/// <param name="paging"></param>
/// <param name="sourceId"></param>
/// <returns></returns>
[HttpGet("source/{sourceId}/pdfs")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<PDFBook>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetSourceRelatedPDFBooksAsync([FromQuery] PagingParameterModel paging, int sourceId)
{
var res = await _pdfService.GetSourceRelatedPDFBooksAsync(paging, sourceId);
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>
/// PDF Service
/// </summary>

View File

@ -2571,7 +2571,7 @@
get book related pdf books
</summary>
<param name="paging"></param>
<param name="bookId"></param>
<param name="sourceId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.GetMultiVolumePDFCollectionByIdAsync(System.Int32)">
@ -2609,6 +2609,48 @@
<param name="volumeId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.GetPDFSourcesAsync">
<summary>
get all sources
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.GetPDFSourceByIdAsync(System.Int32)">
<summary>
source by id
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.AddPDFSourceAsync(RMuseum.Models.PDFLibrary.PDFSource)">
<summary>
add a new source
</summary>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.UpdatePDFSourceAsync(RMuseum.Models.PDFLibrary.PDFSource)">
<summary>
update source
</summary>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.DeletePDFSourceAsync(System.Int32)">
<summary>
delete book
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.PDFLibraryController.GetSourceRelatedPDFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Int32)">
<summary>
get pdf source pdfs
</summary>
<param name="paging"></param>
<param name="sourceId"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Controllers.PDFLibraryController._pdfService">
<summary>
PDF Service
@ -19149,6 +19191,48 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.GetPDFSourceByIdAsync(System.Int32)">
<summary>
get pdf source by id
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.GetPDFSourcesAsync">
<summary>
Get All PDF Sources
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.AddPDFSourceAsync(RMuseum.Models.PDFLibrary.PDFSource)">
<summary>
Add PDF Source
</summary>
<param name="source"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.UpdatePDFSourceAsync(RMuseum.Models.PDFLibrary.PDFSource)">
<summary>
update PDF Source
</summary>
<param name="model"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.DeletePDFSourceAsync(System.Int32)">
<summary>
delete PDF Source
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.GetSourceRelatedPDFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Int32)">
<summary>
get source pdf books
</summary>
<param name="paging"></param>
<param name="sourceId"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.IPictureFileService">
<summary>
manipulating picture files

View File

@ -275,5 +275,47 @@ namespace RMuseum.Services
/// <param name="id"></param>
/// <returns></returns>
Task<RServiceResult<MultiVolumePDFCollection>> GetMultiVolumePDFCollectionByIdAsync(int id);
/// <summary>
/// get pdf source by id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<RServiceResult<PDFSource>> GetPDFSourceByIdAsync(int id);
/// <summary>
/// Get All PDF Sources
/// </summary>
/// <returns></returns>
Task<RServiceResult<PDFSource[]>> GetPDFSourcesAsync();
/// <summary>
/// Add PDF Source
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
Task<RServiceResult<PDFSource>> AddPDFSourceAsync(PDFSource source);
/// <summary>
/// update PDF Source
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
Task<RServiceResult<PDFSource>> UpdatePDFSourceAsync(PDFSource model);
/// <summary>
/// delete PDF Source
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<RServiceResult<bool>> DeletePDFSourceAsync(int id);
/// <summary>
/// get source pdf books
/// </summary>
/// <param name="paging"></param>
/// <param name="sourceId"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, PDFBook[] Books)>> GetSourceRelatedPDFBooksAsync(PagingParameterModel paging, int sourceId);
}
}