docs: #297 changing regenerating TOC api to regenerate old TOCs
This commit is contained in:
parent
1ff66fdf6b
commit
29d2a74b8e
@ -626,18 +626,18 @@ namespace RMuseum.Controllers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// convert old alphabetic TOCs to new ones
|
||||
/// regenerate TOCs
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut("cat/toc/migrate")]
|
||||
[HttpPut("cat/toc/regen")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public IActionResult StartRegeneratingOldAlphabeticTOCs()
|
||||
public IActionResult StartRegeneratingTOCs()
|
||||
{
|
||||
Guid userId =
|
||||
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
var res = _ganjoorService.StartRegeneratingOldAlphabeticTOCs(userId);
|
||||
var res = _ganjoorService.StartRegeneratingTOCs(userId);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
|
||||
@ -1028,9 +1028,9 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.StartRegeneratingOldAlphabeticTOCs">
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.StartRegeneratingTOCs">
|
||||
<summary>
|
||||
convert old alphabetic TOCs to new ones
|
||||
regenerate TOCs
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
@ -11289,9 +11289,9 @@
|
||||
<param name="language"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.StartRegeneratingOldAlphabeticTOCs(System.Guid)">
|
||||
<member name="M:RMuseum.Services.IGanjoorService.StartRegeneratingTOCs(System.Guid)">
|
||||
<summary>
|
||||
convert old alphabetic TOCs to new ones
|
||||
regenerate TOCs
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
@ -13048,9 +13048,9 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.StartRegeneratingOldAlphabeticTOCs(System.Guid)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.StartRegeneratingTOCs(System.Guid)">
|
||||
<summary>
|
||||
convert old alphabetic TOCs to new ones
|
||||
regenerate TOCs
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
|
||||
@ -849,10 +849,10 @@ namespace RMuseum.Services
|
||||
Task<RServiceResult<bool>> SetCategoryLanguageTag(int catId, string language);
|
||||
|
||||
/// <summary>
|
||||
/// convert old alphabetic TOCs to new ones
|
||||
/// regenerate TOCs
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartRegeneratingOldAlphabeticTOCs(Guid userId);
|
||||
RServiceResult<bool> StartRegeneratingTOCs(Guid userId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,11 +21,11 @@ namespace RMuseum.Services.Implementation
|
||||
public partial class GanjoorService : IGanjoorService
|
||||
{
|
||||
/// <summary>
|
||||
/// convert old alphabetic TOCs to new ones
|
||||
/// regenerate TOCs
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public RServiceResult<bool> StartRegeneratingOldAlphabeticTOCs(Guid userId)
|
||||
public RServiceResult<bool> StartRegeneratingTOCs(Guid userId)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -37,32 +37,32 @@ namespace RMuseum.Services.Implementation
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>())) //this is long running job, so _context might be already been freed/collected by GC
|
||||
{
|
||||
LongRunningJobProgressServiceEF jobProgressServiceEF = new LongRunningJobProgressServiceEF(context);
|
||||
var job = (await jobProgressServiceEF.NewJob("RegeneratingOldAlphabeticTOCs", "Query data")).Result;
|
||||
var job = (await jobProgressServiceEF.NewJob("StartRegeneratingTOCs", "Query data")).Result;
|
||||
try
|
||||
{
|
||||
var cats = await context.GanjoorCategories.AsNoTracking().ToListAsync();
|
||||
|
||||
var pages = await context.GanjoorPages.AsNoTracking().Where(p => p.CatId != null && p.GanjoorPageType == GanjoorPageType.CatPage && p.HtmlText.Contains("دسترسی سریع به حروف")).ToArrayAsync();
|
||||
|
||||
foreach (var page in pages)
|
||||
foreach (var cat in cats)
|
||||
{
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 0, page.FullTitle);
|
||||
await _FindCategoryPoemsRhymesInternal((int)page.CatId, false);
|
||||
GanjoorTOC options = GanjoorTOC.AlphabeticWithFirstCouplet;
|
||||
if (
|
||||
new string[]
|
||||
{
|
||||
"غزلیات", "غزل", "غزل ها", "قصاید", "قصائد", "قصیده", "رباعیات", "رباعی", "رباعی ها"
|
||||
}.Contains(page.Title)
|
||||
)
|
||||
{
|
||||
options = GanjoorTOC.AlphabeticWithFirstVerse;
|
||||
}
|
||||
await _DirectInsertGeneratedTableOfContents(context, (int)page.CatId, userId, options);
|
||||
var page =
|
||||
await context.GanjoorPages.AsNoTracking()
|
||||
.Where(p => (p.GanjoorPageType == GanjoorPageType.PoetPage && p.PoetId == cat.PoetId) || (p.GanjoorPageType == GanjoorPageType.CatPage && p.CatId == cat.Id)).SingleAsync();
|
||||
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 0, page.FullTitle);
|
||||
if(cat.TableOfContentsStyle == GanjoorTOC.Analyse)
|
||||
{
|
||||
var hasChild = await context.GanjoorCategories.AsNoTracking().Where(c => c.ParentId == cat.Id).AnyAsync();
|
||||
if (cat.ParentId == null || hasChild)
|
||||
cat.TableOfContentsStyle = GanjoorTOC.OnlyTitles;
|
||||
else
|
||||
cat.TableOfContentsStyle = GanjoorTOC.TitlesAndFirstVerse;
|
||||
var catToUpdate = await context.GanjoorCategories.Where(c => c.Id == cat.Id).SingleAsync();
|
||||
catToUpdate.TableOfContentsStyle = cat.TableOfContentsStyle;
|
||||
context.Update(catToUpdate);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
await _DirectInsertGeneratedTableOfContents(context,cat.Id, userId, cat.TableOfContentsStyle);
|
||||
|
||||
var cat = await context.GanjoorCategories.Where(c => c.Id == (int)page.CatId).SingleAsync();
|
||||
cat.TableOfContentsStyle = options;
|
||||
cat.CatType = GanjoorCatType.BookPart;
|
||||
context.Update(cat);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user