#407 required service methods

This commit is contained in:
Hamid Reza Mohammadi 2023-08-05 09:49:01 +03:30
parent 7151acd8aa
commit d05204786b
4 changed files with 107 additions and 12 deletions

View File

@ -10,7 +10,7 @@ namespace RMuseum.Models.PDFLibrary.ViewModels
/// <summary>
/// Id
/// </summary>
public int id { get; set; }
public int Id { get; set; }
/// <summary>
/// full resolution image width
@ -27,11 +27,6 @@ namespace RMuseum.Models.PDFLibrary.ViewModels
/// </summary>
public bool OCRed { get; set; }
/// <summary>
/// ocr date time
/// </summary>
public DateTime OCRTime { get; set; }
/// <summary>
/// page text
/// </summary>

View File

@ -13047,7 +13047,7 @@
PDF Page OCR Data View Model
</summary>
</member>
<member name="P:RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel.id">
<member name="P:RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel.Id">
<summary>
Id
</summary>
@ -13067,11 +13067,6 @@
ocred
</summary>
</member>
<member name="P:RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel.OCRTime">
<summary>
ocr date time
</summary>
</member>
<member name="P:RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel.PageText">
<summary>
page text
@ -18663,6 +18658,19 @@
<param name="result"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.GetNextUnOCRedPDFBookAsync">
<summary>
get next un-ocred PDF Book
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.SetPDFPageOCRInfoAsync(RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel)">
<summary>
set pdf page ocr info (and if a book whole pages are ocred the book ocred flag is set to true)
</summary>
<param name="model"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Services.Implementation.PDFLibraryService._context">
<summary>
Database Context
@ -19891,6 +19899,19 @@
<param name="linkId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.GetNextUnOCRedPDFBookAsync">
<summary>
get next un-ocred PDF Book
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IPDFLibraryService.SetPDFPageOCRInfoAsync(RMuseum.Models.PDFLibrary.ViewModels.PDFPageOCRDataViewModel)">
<summary>
set pdf page ocr info (and if a book whole pages are ocred the book ocred flag is set to true)
</summary>
<param name="model"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.IPictureFileService">
<summary>
manipulating picture files

View File

@ -383,5 +383,18 @@ namespace RMuseum.Services
/// <param name="linkId"></param>
/// <returns></returns>
Task<RServiceResult<bool>> SynchronizePDFGanjoorLinkAsync(Guid linkId);
/// <summary>
/// get next un-ocred PDF Book
/// </summary>
/// <returns></returns>
Task<RServiceResult<PDFBook>> GetNextUnOCRedPDFBookAsync();
/// <summary>
/// set pdf page ocr info (and if a book whole pages are ocred the book ocred flag is set to true)
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
Task<RServiceResult<bool>> SetPDFPageOCRInfoAsync(PDFPageOCRDataViewModel model);
}
}

View File

@ -1568,6 +1568,72 @@ namespace RMuseum.Services.Implementation
return new RServiceResult<bool>(true);
}
/// <summary>
/// get next un-ocred PDF Book
/// </summary>
/// <returns></returns>
public async Task<RServiceResult<PDFBook>> GetNextUnOCRedPDFBookAsync()
{
try
{
var pdfBook = await _context.PDFBooks.AsNoTracking()
.Include(b => b.PDFFile)
.Include(b => b.Pages)
.Where(b => b.Status == PublishStatus.Published && b.OCRed == false)
.OrderBy(b => b.Id)
.FirstOrDefaultAsync();
return new RServiceResult<PDFBook>(pdfBook);
}
catch (Exception exp)
{
return new RServiceResult<PDFBook>(null, exp.ToString());
}
}
/// <summary>
/// set pdf page ocr info (and if a book whole pages are ocred the book ocred flag is set to true)
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task<RServiceResult<bool>> SetPDFPageOCRInfoAsync(PDFPageOCRDataViewModel model)
{
try
{
var dbPage = await _context.PDFPages.Where(p => p.Id == model.Id).SingleAsync();
dbPage.FullResolutionImageWidth = model.FullResolutionImageWidth;
dbPage.FullResolutionImageHeight = model.FullResolutionImageHeight;
dbPage.OCRed = model.OCRed;
dbPage.OCRTime = DateTime.Now;
dbPage.PageText = model.PageText;
_context.Update(dbPage);
await _context.SaveChangesAsync();
var pdfBook = await _context.PDFBooks
.Include(b => b.Pages)
.Where(b => b.Id == dbPage.PDFBookId)
.SingleAsync();
if(!pdfBook.Pages.Any(p => p.OCRed == false))
{
pdfBook.OCRed = true;
pdfBook.OCRTime = DateTime.Now;
_context.Update(pdfBook);
await _context.SaveChangesAsync();
}
else if(pdfBook.OCRed)
{
pdfBook.OCRed = false;
_context.Update(pdfBook);
await _context.SaveChangesAsync();
}
return new RServiceResult<bool>(true);
}
catch (Exception exp)
{
return new RServiceResult<bool>(false, exp.ToString());
}
}
/// <summary>
/// Database Context
/// </summary>